Skip to content

Ch2. 处理器管理

考虑到与《计算机系统基础》的内容重合性,一部分内容就不写了

程序状态字

操作系统将程序运行时的动态信息汇集在一起,称之为程序状态字(Program Status Word, PSW),通常存放在处理器中的特殊寄存器中

纯硬件视角

先从更熟悉的(但不严谨的)硬件角度来解释:以 Intel x86 机器为例,PSW 的硬件实现为状态标志寄存器 EFLAGS 与指令指针寄存器 EIP 的组合,并将 EFLAGS 的低 16 位称为 FLAGS。EIP 就不需要解释了,其存储下一条将要执行的指令在内存中的地址

EFLAGS 分为三个部分:

  • 状态标志位
标志名 含义 何时为 1
0 CF 进位标志 无符号整数运算产生进位或借位时
2 PF 奇偶标志 结果的最低有效字节中,1 的个数为偶数时
4 AF 辅助进位标志 低字节向高字节进位/借位时(用于 BCD 码运算)
6 ZF 零标志 运算结果为 0 时
7 SF 符号标志 运算结果为负数(符号位为 1)时
11 OF 溢出标志 有符号整数运算结果超出范围时
  • 控制标志位
标志名 含义 何时为 1
9 IF 中断允许标志 允许响应外部中断时
8 TF 陷阱标志 进入单步调试模式时
10 DF 方向标志 字符串操作时,当地址递减时
  • 系统标志位
标志名 含义 作用描述
12-13 IOPL I/O 特权级 (I/O Privilege Level) 一个 2 位的字段,用于指定允许执行 I/O 指令(如 IN, OUT)所需的最小特权级。只有当前特权级 (CPL) IOPL 时,程序才能访问 I/O 端口
14 NT 嵌套任务标志 当前任务嵌套于另一个任务中时设为 1。用于在任务切换时,通过 IRET 指令正确地返回到之前的任务(即前一个任务的 TSS)
16 RF 恢复标志 用于调试异常(如指令断点)。当 RF 为 1 时,CPU 会在执行下一条指令时忽略调试故障,防止同一个断点被反复触发

操作系统视角

PSW 通常包含这些信息:

  • 程序计数器(PC,在 x86 架构中就是 EIP / RIP)
  • 标志位(对应了标志寄存器的状态标志位)
  • 中断屏蔽位(对应了 IF)
  • 特权级(对应了 IOPL)
  • 以及一些其他的奇奇怪怪的信息,大多数的硬件实现都是标志寄存器

多数计算机的处理器现场可能找不到一个具体的 PSW 寄存器,但是总会有一组控制寄存器和状态寄存器起实际的作用

中断

ICS 课程中,异常和中断是区分开的;而这门课程中,两者统称为中断,其中异常称之为内中断(缺页、地址越界、除零等),与之相对的(更狭义的中断)称为外中断

中断的定义就略过了

迄今为止,所有计算机系统都采用硬件中断处理器+软件中断处理程序,分为四个步骤:

  • 硬件发现中断源
  • 硬件保护现场
  • 软件执行处理程序
  • 硬件恢复现场

多中断处理

同时有多个中断事件发生时,中断装置按一定顺序对其作出响应,其先后顺序即优先级