专门设计了一系列基本机制:
- 具有特权级别的处理器状态,能在不同特权级运行的各种特权指令
- 硬件机制使得OS可以和普通程序隔离, 实现保护和控制
1.CPU的构成与基本工作方式
处理器由运算器、控制器、一系列的寄存器以及高速缓存构成
运算器实现指令中的算术和逻辑运算,是计算机计算的核心
控制器负责控制程序运行的流程,包括取指令、维护CPU状态、CPU与内存的交互等等
处理器中的寄存器
寄存器提供了一定的存储能力,速度比主存快得多,造价高,容量一般都很小
两类寄存器:
用户可见寄存器,高级语言编译器通过算法分配并使用之,以减少程序访问内存次数
控制和状态寄存器,用于控制处理器的操作
由OS的特权代码使用, 以控制其他程序的执行
用户可见寄存器
机器语言直接引用
包括数据寄存器、地址寄存器以及条件码寄存器
数据寄存器(data register)又称通用寄存器
主要用于各种算术逻辑指令和访存指令
地址寄存器(address register)用于存储数据及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。如index register、segment pointer、stack pointer
条件码寄存器保存CPU操作结果的各种标记位, 如算术运算产生的溢出、符号等等
控制和状态寄存器
用于控制处理器的操作
大部分对于用户是不可见的
一部分可以在某种特权模式(由OS使用)下访问
常见的控制和状态寄存器:
程序计数器(PC:Program Counter),记录将要取出的指令的地址
指令寄存器(IR:Instruction Register),包含最近取出的指令
程序状态字(PSW:Program Status Word),记录处理器的运行模式信息等等
2.特权指令和非特权指令
特权指令:只能由操作系统使用的指令
使用多道程序设计技术的计算机指令系统必须要区分为特权指令和非特权指令
特权指令一般引起处理器状态的切换
处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态)
然后将处理权移交给操作系统中的一段特殊代码,这一个过程称为陷入
CPU如何知道当前运行的是操作系统还是一般应用软件?有赖于处理器状态的标识
3.处理器的状态
根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态——程序状态字PSW
多数系统将处理器工作状态划分为管态和目态
管态:操作系统管理程序运行的状态,较高的特权级别,又称为特权态(特态)、核心态、系统态
目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态
具体处理器将CPU状态划分为两种、三种或四种
4.程序状态字PSW (Program Status Word )
在PSW中专门设置一位,根据运行程序使用指令的权限而设置CPU状态
CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其他的特殊权力
条件码——反映指令执行后的结果特征
中断屏蔽码——指出是否允许中断
CPU状态的转换
目态→管态
唯一途径 是 中断(广义)
管态→目态
设置PSW(修改程序状态字) 可实现
一条特殊的指令:访管指令
供用户调用操作系统的功能(服务)
INT,TRAP,SYSCALL
最新内容请见作者的GitHub页:http://qaseven.github.io/