文章目录

  • 操作系统简述
    • CPU
      • CPU 运行模式
    • 内存
      • 寄存器
      • 高速缓存
      • 主存
      • 磁盘
      • 虚拟内存
    • I/O 设备
      • 忙等待
      • 中断
      • 直接存储器访问(Direct Memory Access, DMA)
    • 文件
      • 管道
      • 保护
    • 系统调用
      • 重要的系统调用函数
        • 用于进程管理的系统调用

操作系统简述

在硬件的基础上,这层软件通过响应用户输入的指令达到控制硬件的效果,从而满足用户的需求。

CPU

CPU 内部都会包含一些寄存器来保存一些关键变量和临时结果,在指令集中的一些指令用于关键字会从内存加载寄存器中,以及把关键字从寄存器中存入内存中。

一些特殊的寄存器:

  • 程序计数器(Process Counter):会指示下一条需要从内存提取指令的地址,提取指令后,程序计数器将更新为下一条需要指令提取的地址
  • 堆栈指针(stack pointer):它指向内存中当前的栈顶端。包括输入参数、局部变量以及没有保存在寄存器中的临时变量。
  • 程序状态字寄存器(PSW:Program Status Word):这个寄存器由操作系统维护,会跟踪控制当前程序的两种状态,来处理用户程序的系统调用(System call)和I/O

当CPU执行第N条指令,还可以对 N+1 条指令进行解码,还可以对 N+2 条指令进行读取,这样的组织方式,称为流水线(pipeline)。

比流水线更先进的设计是超标量(superscalar)CPU

该类型CPU会直接将两个或更多指令被一次性取出、解码放入缓冲区中,直至他们执行完毕。如果有一个执行单元空闲就会立即查看缓冲区是否有可以执行的指令。

CPU 运行模式

PSW寄存器中的一个二进制位会控制程序当前状态为内核态还是用户态。

  • 内核态(管态):CPU能够运行任何指令集中的指令并且能够使用硬件的功能。
  • 用户态:CPU只能执行指令集的一部分并且只能访问硬件的一部分功能,在用户态下,有关 I/O 和内存保护的所有指令是禁止执行

因此为了获取操作系统的服务,用户程序必须使用 系统调用(System call),系统调用会转换为 内核态 并调用操作系统,其中 TRAP 指令用于将用户态切换为内核态并启用操作系统。

内存

顶层的存储器速度越高,容量就会越小。

寄存器

存储器的顶层为 CPU 的寄存器。

高速缓存

它多数由硬件控制,主存被分割成 高速缓冲行(cache lines) 为64字节,内存地址的 0~63 对应高速缓存行 0,地址 64~127 对应高速缓冲行的 1。

因此使用最频繁的高速缓冲行保存在最接近CPU的高速缓冲中。

当应用程序需要从内存读取关键词的时候,就会检查是否高速缓冲行在高速缓存中,如果在则称为 高速缓存命中(cache hit)。高速缓存通常需要两个时钟周期,很快的,否则,缓存未命中则需要从内存中提取,会消耗大量的时间。

主存

通常叫做 RAM(Random Access Memory),还有少量的非易失性随机存取存储器,在电源断电后,ROM(Read Only Memory)并不会丢失内容。

另外还有 EEPROM(Erasable PROM) 和 闪存(Flash memory) 这些也是非易失性的,但与 ROM 相反,他们是可擦除的。

磁盘

信息会写在磁盘一系列的同心圆上,在任意一个给定臂的位置,每个磁头都可以读取一段环形区域,称为 磁道(Track) 。

如果将所有磁道合并起来,则组成了一个 柱面 。

每个磁道都划分了若干扇区,扇区的值是 512 字节。外部柱面相比较内部的有更多的扇区。

虚拟内存

其方法是将程序放在磁盘上,而将主存作为一部分缓存,用来保存最频繁使用的部分程序。

这种机制就需要快速映像内存地址,用来把程序生成的地址转换为在RAM中的物理地址。这种映像由CPU中的 存储器管理单元(Memory Management Unit,MMU) 来完成。

缓存和MMU的出现对系统的性能有很大的影响,

在多道程序中,从一个程序切换到另外一个程序的机制称为 上下文切换 (context switch)。

I/O 设备

忙等待

这种方式中将一直占据CPU,CPU会一直轮询 I/O 设备知道 I/O 操作完成。

中断

中断过程:

  1. 设备驱动程序会通过写入设备寄存器高速控制器应该做什么,然后控制器会启动设备。
  2. 当控制器完成读取被告知的数据后,会通过总线向中断控制器发送信号
  3. 如果中断控制器准备好接收中断信号,会告诉CPU
  4. 中断控制器把该设备的编号放在总线上,这样CPU就可以读取总线,并且知道哪个设备完成了操作

CPU实施中断的过程:

  1. PC 和 PSW 就会压入当前堆栈中并且CPU会切换内核态
  2. 设备编号就可以作为一个内存引用,用来寻找中断处理程序的地址,这个内存称为 中断向量(interrupt vector)
  3. 一旦中断处理程序开始后,它会移除栈中PC和PSW,并将他们保存
  4. 中断程序全部完成后,它就会返回之前用户程序尚未执行的第一条语句

直接存储器访问(Direct Memory Access, DMA)

无需CPU的干预

文件

管道

管道是一个虚文件,它可以连接两个进程。

如果A和B希望通过管道进行通信,它们必须提前建立管道,当进程A相对进程B发送数据时,首先将数据写到管道上,相当于管道就是输出文件。这样,Unix上的两个进程的通信就非常类似普通文件的读写了。

保护

Unix系统通过对每个文件赋予一个9位二进制保护代码,对Unix中的文件进行保护,有三个字段,一个是owner所有者,一个group与所有者同组,一个是其他人。而每个字段分为可读可写可执行,这就是著名的 rwx 位。

比如保护代码 rwxr-x–x 的含义是所有者可以读写执行,而同组的可以读执行但不能写,其他人只能执行。

系统调用

我们可以看出os为我们提供了两种功能:为用户提供应用程序的抽象和透明管理计算机资源。

而只有想系统调用(读写创建文件操作)才能够进入内核态,而过程调用进入不了内核态。

我们通过 read 方法来看一下调用的过程

count = read(fd, buffer, nbytes)

其中 count 为返回实际读出的字节数,这个值通常与 nbytes 相同,也可能更小,比如读到了文件的末尾的情况。

一共11个步骤。

1–3:将参数压入堆栈。其中参数fd与nbytes都是值调用,而buffer为引用传递即传递的是缓冲区的地址。

4:C调用系统库read函数。

5:由汇编语言写成的库的过程,一般系统调用的编号放在操作系统所期望的地方,如寄存器(把用于read代码放在寄存器中)。

6:执行 TRAP 指令,将用户态转换成内核态,该指令不同一般的过程调用不会跳转到任意地址,而是根据机器体系结构,跳到指定位置。

7:跟随着 TRAP 指令后的内核代码检查系统调用编号,然后 dispatch 到正确的系统调用处理器。

8:此时系统调用器运行系统调用处理程序。

9:一旦系统调用器完成之后,控制权会根据跟随TRAP之后的指令中返回系统调用库,即返回到调用者。

10:这个过程接着通常的过程调用的的方式,返回到客户应用程序。

11:调用完成后,系统清除掉用户堆栈,然后增加 堆栈指针(increment stackpointer),用来清除调用read之前压入的参数。

从而完成read调用过程。

重要的系统调用函数

用于进程管理的系统调用

在 Unix 中,fork 是唯一可以 POSIX 中可以创建进程的途径,它创建了一个原有进程的副本,包括所有的文件描述符、寄存器等内容。在fork之后,原有的进程以及副本就分开了,在fork的过程中,所有的变量都有相同的值,后续两者不会相互影响。fork调用会返回值0,

Ko.OS系列——操作系统简述相关推荐

  1. 在用苹果Mac OS X操作系统吗?那你得小心了……

    曾几何时,苹果操作系统一度被人认为是最安全的操作系统.然而近几年,针对苹果系统的攻击日益增多,影响范围也越来越大.无独有偶,近日,苹果Mac OS X操作系统也沦陷了,研究机构赛门铁克揭示了首个攻击该 ...

  2. Python语言学习:创建/删除文件/文件夹、获取当前文件/文件夹路径(系统环境路径/目录)、获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略

    Python语言学习:创建/删除文件/文件夹.获取当前文件/文件夹路径(系统环境路径/目录).获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略 目录 系统环境路径的设置 1.sys ...

  3. 在NT系列操作系统里让自己“消失”

    创建时间:2004-03-06 文章属性:原创 文章提交:SoBeIt (kinsephi_at_hotmail.com) ===================[ 在NT系列操作系统里让自己&quo ...

  4. 关于ROS(Robot OS 机器人操作系统)

    关于ROS(Robot OS 机器人操作系统) 关于ROS(Robot OS 机器人操作系统) 对于ROS的安装,在它的官方网站: http://wiki.ros.org/ROS/Installati ...

  5. mac os 苹果操作系统如何切换输入法

    mac os 苹果操作系统如何切换输入法 中英文切换:command(又称苹果键)+空格键

  6. Linux 常见指令及权限、OS(操作系统)基本概念

    目录 一.OS(操作系统)基本概念 1.概念 二.Linux常见指令 1.ls指令 2.pwd指令 3.cd指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm ...

  7. 【OS】操作系统高频面试题英文版(1)

      今天开始更新操作系统高频面试题英文版.同样也分为 Basic.Intermediate.Advanced 三部分.下面是 Basic 部分.音频文件下方获取. [OS]操作系统高频面试题英文版(1 ...

  8. 苹果推新版Mac OS X操作系统 抢占微软先机

    苹果计算机公司日前在旧金山召开的研发商年度大会上发布了最新版本的Mac OS X操作系统,公司希望该操作系统能够在与微软产品的竞争中占得先机. 苹果首席执行官史蒂夫-乔布斯(Steve Jobs)表示 ...

  9. 请简述计算机硬件系统的运行过程,操作系统简述题

    ✔什么是操作系统?它的功能? 操作系统是控制和管理计算机硬件和软件资源,合理地组织计算机工作流程以及方便用户使用计算机系统的程序的集合. 功能:处理机管理,存储器管理,I/O设备管理和文件管理以及作为 ...

最新文章

  1. 网站建设中这些图片优化小技巧需掌握
  2. matlab仿真随机数的产生
  3. boost::multiprecision模块实现导入/导出 cpp_int 的位 到 8 位无符号值的向量相关的测试程序
  4. 学完计算机还是不懂,如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧...
  5. P3085 [USACO13OPEN]Yin and Yang G 点分治
  6. LeetCode-reverse integer复杂度
  7. 更换ssh通信证书,ssh更改公钥和密钥,以保证服务器安全
  8. [数]数学系列预习-补水题ver.
  9. 高性能MySQL-3rd-(五)创建高性能索引
  10. scp拷贝服务器文件,scp 拷贝文件到远程服务器
  11. JAVA实用教程(第2版)配套源码笔记
  12. 抖音SEO优化源码,抖音搜索排名系统,技术理论分析搭建。
  13. python虚拟环境(三大神器之virtualenv) 入门
  14. 【实用教程】本地blast使用及简单python脚本辅助
  15. 浅学一点空间转换3D和动画知识
  16. 公开「处刑」!波士顿动力的搬砖机器人,私下竟「翻车」不断
  17. 计算机基础知识考试模拟试题,计算机基础知识选择题考试必备考试真题模拟题...
  18. linux/安卓的spi读写ADS1256出现读写错误
  19. php站群跳转系统,DiY-Page php 站群系统下载|DiY-Page php 站群系统官方下载-太平洋下载中心...
  20. 用IOS手机看epub小说,哪些阅读器APP更好用?

热门文章

  1. 合伙企业是缴纳个税还是缴纳企业所得税
  2. php fpm core,php-fpm的配置和优化
  3. 从头学习爬虫(三十八)进阶篇----教务网课程表下载
  4. html svg 数据格式转换,将格式化的html文本转换为svg
  5. 完美天空下载站php程序,天空下载站(skycn)程序存在SQL注入漏洞及最新解决方案...
  6. 健身时戴什么耳机比较好、盘点几款适合健身的运动耳机
  7. 混沌与秩序2服务器维护,混沌与秩序2:救赎每日日常任务攻略
  8. 网络电台搭建教程(jetcast)
  9. 程序猿初体验之“大一女生“【心路之旅】
  10. 光学efl_光学常用术语