1-1-4 操作系统的运行机制
1-1-4 操作系统的运行机制
程序是如何运行的
用户编写的高级语言代码(如C语言)经过编译器“翻译”成机器指令(二进制)后由CPU执行。一条高级语言的代码翻译过来可能会对应多条机器指令,程序运行的过程其实就是CPU执行一条一条机器指令的过程
两种程序
- 应用程序:普通程序员写的程序
- 内核程序:实现操作系统的程序,内核是操作系统最重要最核心的部分,也是
最接近硬件的部分
两种指令
指令就是处理器(CPU)能识别、执行的最基本命令
- 特权指令:只允许“管理者”即操作系统内核来使用
- 非特权指令:应用程序只能使用非特权指令,如加法指令和减法指令等
在
CPU设计和生产的时候就划分了特权指令和非特权指令
,因此CPU执行一条指令前就能判断出其类型
两种处理器状态
- 内核态(管态):处于内核态时,说明正在
运行内核程序
,可以执行特权指令
- 用户态(目态):处于用户态时,说明正在
运行用户程序
,只能执行非特权指令
CPU中有一个寄存器叫
程序状态字寄存器(PSW)
,其中有个二进制位,1表示内核态,0表示用户态
内核态和用户态之间的切换
-
内核态-->用户态
:执行一条特权指令
–修改PSW的标志位为“用户态”
,这个动作意味着操作系统主动让出CPU使用权 -
用于态-->内核态
:由“中断”
引发,硬件自动完成变态过程
,触发中断信号意味着操作系统将强行夺回CPU使用权。CPU检测到中断信号后,会立即变为“核心态”,并停止运行当前的程序,转而运行处理中断信号的内核程序
除了非法使用特权指令之外,还有很多事件会触发中断信号。一个共性是,
但凡需要操作系统介入的地方,都会触发中断信号