一、处理器状态
处理器由运算器、控制器、一系列寄存器和高速缓存构成
两类寄存器:
- 用户可见寄存器:高级语言编译器通过优化算法分配并使用之,以减少程序访问内存次数
- 控制和状态寄存器:用于控制处理器的操作,通常由操作系统代码使用
常见的控制和状态寄存器:
- 程序计数器(PC):记录将要取出的指令的地址
- 指令寄存器(IR):记录最近取出的指令
- 程序状态字(PSW:Program Status Word):记录处理器的运行状态,如条件码、模式、控制位等信息
操作系统具有并发和共享的特征,因此需要实现保护和控制
需要硬件提供基本的运行机制:
- 处理器具有特权级别,能在不同的特权级运行的不同指令集合
- 硬件机制可将OS与用户程序隔离
现代处理器通常将CPU状态设计划分为两种、三种或四种
在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态(IOPL)
操作系统有两种CPU状态:
- 内核态:运行操作系统程序
- 用户态:运行用户程序
-
特权指令:只能由操作系统使用、用户程序不能使用的指令
- 启动I/O,内存清零,修改程序状态字,设置时钟,允许/禁止中断,停机 非特权指令:用户程序可以使用的指令
- 控制转移,算术运算,访管指令,取数指令
X86支持4个处理器特权级别
特权环:R0、R1、R2和R3
- 从R0到R3,特权能力由高到低
- R0相当于内核态,R3相当于用户态,R1和R2则介于两者之间
- 不同级别能够运行的指令集合不同
目前大多数基于x86处理器的操作系统只用了R0和R3两个特权级别
CPU状态之间的转换:
- 用户态 → 内核态:中断/异常/陷入机制
- 内核态 →