0x00 基本概念

操作系统是一个程序集合,计算机系统中最基本的系统软件

操作系统的基本特征:

  • 并发
    • 并发就是使两个或多个时间在同一时间间隔内发生。操作系统引入进程的目的就是为了使程序能够并发执行
    • 在此处注意并发和并行的区别:并发是同一时间间隔,并行是同一时刻,单处理机环境下实际仅能有一道程序执行,微观上这些程序还是在交替执行。
    • 操作系统的并发性通过分时得以实现。
  • 共享
    • 互斥共享方式:在一段时间内仅允许一个进程访问该资源,互斥共享是因为一种资源在一段时间内仅能满足一个请求,就比如说打印机
    • 同时访问方式:允许一段时间内有多个进程同时进行访问,同时访问要求一个请求分几个时间片段间隔完成的效果与连续完成的效果相同
  • 虚拟
    • 虚拟是指把一个物理上的实体变为若干逻辑上的对应物。就比如说虚拟内存虚拟外部设备等等。
  • 异步
    • 在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度前进,这就是进程的异步性。

并发和共享是操作系统的两个最基本的特征,两者又互为存在条件,资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源的共享问题。若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本无法并发执行。

操作系统的目标和功能:

  • 操作系统作为计算机系统资源的管理者
    • 处理机管理:在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的可归结为对进程的管理。进程管理的主要功能有:进程控制、进程同步、进程通信、死锁处理、处理机调度
    • 存储器管理:主要是为了方便用户使用以及提高内存的利用率,主要包括:内存分配、地址映射、内存保护与共享、内存扩充
    • 设备管理:完成用户的I/O请求,主要包括:缓冲管理、设备分配、设备处理、虚拟设备
    • 文件管理:包括文件存储空间管理、目录管理、文件读写管理和保护
  • 操作系统作为用户与计算机硬件系统之间的接口(用户接口)
    • 命令接口
      • 联机命令接口即交互式命令接口:适用于分时或实时系统的接口,其包含命令解析器和命令解释器,例如用户在终端或控制台输入命令执行
      • 脱机命令接口即批处理命令接口:适用于批处理系统,用户不能直接干预作业的运行
    • 程序接口即系统调用,又叫广义指令,运行在操作系统的核心态

0x01 操作系统的分类与发展

发展:

  • 手工操作阶段
  • 批处理阶段(操作系统开始出现),出现了批处理系统:
    • 单道批处理系统:系统对作业的处理是成批进行的,内存中始终保持着一道作业,具有如下特征:
      • 自动性:磁带中的作业能依次逐个进行,无需人工干预
      • 顺序性:磁带中作业依次顺序写入内存,各个作业的完成顺序与他们进入内存的顺序在正常状态下完全相同
      • 单道性:内存中仅有一道程序运行
    • 多道批处理系统:允许多个程序同时进入内存并运行,优点是资源利用率高(CPU和I/O设备),多道程序共享资源,系统吞吐量大,缺点是用户响应时间较长,不提供人际交互的能力,设计特点有:
      • 多道:内存中同时存放多道相互独立的程序,共享系统中的软硬件资源,当一道程序因为I/O请求而暂停运行时,CPU便转去运行另一道程序,即I/O设备和CPU是可以并行工作的,这是使用中断技术实现的。
      • 宏观上并行:同时进入内存的多道程序都处于运行过程中
      • 微观上串行:内存中的多道程序轮流占有CPU,交替执行
  • 分时操作系统:即为采用分时技术的操作系统,分时技术即为把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。其主要特征如下:
    • 同时性(多路性):允许多个终端用户同时使用一台计算机
    • 交互性
    • 独立性:系统中的多个用户可以彼此独立地操作,互不干扰,当时间片一定时,用户数越多响应时间越长
    • 及时性:用户请求能在很短时间内获得响应
  • 实时操作系统:计算机系统收到外部信号后及时进行处理,并且要在严格的时限内处理完接受的时间,主要特点是及时性和可靠性。其分为:
    • 硬实时系统:某个动作必需在规定的时刻发生
    • 软实时系统:可以接受偶尔违反时间的规定

0x02 操作系统运行机制

0x00 内核的组成部分

操作系统的内核包括如下4个方面:

  • 时钟管理:时钟是最关键的设备,第一功能是计时向用户提供时间,另外通过时钟中断的管理实现进程的切换
  • 中断机制:初衷是提高多道程序运行环境中的CPU利用率,例如键盘鼠标的信息输入,中断机制中,只有一小部分功能属于内核:即负责保护和恢复中断现场的信息,以及转移控制权到相关的处理程序。。这样可以减少中断的处理时间,提高系统的并行处理能力。
  • 原语:按层次结构设计的操作系统,底层必然是一些可被调用的公共小程序,各自完成一定的操作,例如CPU切换以及进程通信,且有如下特点:
    • 处于操作系统最底层也是最接近硬件的部分
    • 操作具有原子性
    • 运行时间较短且调用频繁
  • 系统控制的数据结构及处理:对一些系统中用来登记状态信息的数据结构进行有效的管理所进行的操作,常见的操作有如下三种:进程管理,存储器管理及设备管理

核心态指令实际上包括操作系统调用类指令和一些针对时钟、中断和原语的操作指令。系统调用发生在用户态,执行在内核态。

0x01 中断和异常

操作系统的内核工作在核心态,用户程序工作在用户态,系统不允许用户程序实现核心态功能,但是它们又必需使用这些功能,所以就需要在核心态建立一些门,实现从用户态进入核心态。

当中断或异常发生时,正在用户态的CPU就会立即进入核心态,这是通过硬件实现的中断(也称外中断)指来自CPU执行指令以外的事情发生,希望处理机能够向设备发下一个I/O请求,同时让完成I/O请求的程序继续运行。时钟中断表示一个固定的时间片已到,让处理机处理计时启动定时任务等。异常(也称内中断),指来自CPU指令内部的事件。例如算术溢出等等。

中断请求是指中断源向CPU发送中断请求信号,分为外中断内中断,外中断指的是来自处理器和内存外部的中断,若I/O设备发出的,以及外部事件(例如按下Esc键退出程序)等,内中断指的是来自处理器和内存内部的中断,例如虚拟存储器失效或者缺页,或者浮点数上溢(计算超出了浮点数的范围)

Cache完全由硬件实现,不会涉及任何中断

浮点数下溢不会导致中断,因为出现下溢时CPU会直接将其当做0来处理,下溢指的是用一个大的数据类型保存一个极小的数,这个数超出了其精度范围。

在用户程序中,如需产生一个中断事件(自愿中断)往往使用访管指令来实现,访管指令可以将操作系统转化为核心态,这个过程称为访管中断,由访管指令产生,程序员使用访管指令向操作系统请求服务。访管指令本身不是特权指令

特权指令指的是操作系统中具有特殊权限的指令,用户态下只能使用非特权指令,核心态下可以使用全部特权指令,当在用户态下使用特权指令时,将产生中断阻止程序使用特权指令。

中断是怎样发生的:

  1. 设备完成工作(比如键盘接受输入)
  2. 交由中断控制器
  3. 中断控制器向CPU发出中断
  4. CPU向中断控制器响应中断

设备与中断控制器之间的连接使用的是总线上的中断线,如果没有其他中断悬而未决,则中断控制器将立即对中断作出处理,开始执行中断处理程序之前,CPU会保存一些信息,程序计数器和PSA(程序状态字)是必需要保存的,剩下的因CPU不同而异。大多数CPU在堆栈中保存这些信息。

一旦CPU决定取中断,通常程序计数器PC程序状态字PSW就会被压入堆栈,然后CPU切换到用户态,设备编号成为部分内存(中断向量)中的一个引用,用于寻找中断处理程序的地址

中断又分为精确中断不精确中断

  • 将CPU留在一个明确的状态时的中断为精确中断,此时具有如下几个特性:
    • PC(程序计数器)保存在一个已知的地方
    • PC之前的全部指令都已完成
    • PC之后的全部指令都没有执行
    • PC所指向的指令的执行状态是已知的
  • 不精确中断中,PC周围的指令处于不同的完成状态

中断还可以分为可屏蔽中断不可屏蔽中断

  • 不可屏蔽中断源一旦提出请求,CPU必须无条件响应,例如电源掉电
  • 可屏蔽中断源的请求,CPU可响应也可不响应,例如CPU对打印机的中断请求即可以快速地响应也可以慢一点响应

在某些情况下,比如CPU在执行原子操作,尽管中断源发出了中断请求,但CPU内部的PSW的中断允许位已被清除,从而不允许响应中断,这种情况被称为禁止中断,CPU被禁止中断后,只有等到中断允许位被重新设置,才允许继续响应中断**。禁止中断也被称为关中断,而设置中断允许位则被称为开中断**。

中断处理程序的执行步骤

  1. 保存没有被中断硬件保存的所有寄存器(包括程序状态字PSW)
  2. 为中断服务过程设置上下文
  3. 为中断服务过程设置堆栈
  4. 应答中断控制器,如果不存在中断控制器,则再次开放中断
  5. 保存的寄存器内容从堆栈中复制到进程表中
  6. 运行中断服务过程,从发出中断的设备控制器的寄存器中提取信息
  7. 选择下一次运行哪个进程
  8. 为下一次运行的进程设置上下文
  9. 装入新进程的寄存器,包括PSW
  10. 开始新进程

中断屏蔽字:

如果有N级中断,则每一级的中断屏蔽字就有N位,假设有4级中断,中断屏蔽字中1表示屏蔽该中断,0表示处理该中断,中断屏蔽字为1011的意思就是,可以屏蔽第1, 3, 4级中断,但不可屏蔽第2级中断。优先级越高的,它就可以将其他都屏蔽掉。

嵌套中断:

是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。

0x02 体系结构

操作系统主要有2种体系结构,大内核与微内核

大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态从而为应用提供高性能的系统服务,具有无可比拟的性能优势。

微内核仅将内核中最基本的功能保留在内核,而将那些不必要在内核态执行的功能转移到用户态去执行,其有效地分离了内核与服务、服务于服务、使得他们之间的接口更加清晰,维护的代价大大降低。主要为解决内核代码难以维护的问题。

0x03 其他说明及注意事项

  • 传输速率中的K是按照10进制单位来计算的,即1KB/s=1000B/s
  • 磁盘容量中的K是按照2进制单位来计算的,即1KB=1024B