1-1-4 操作系统的运行机制

1-1-4 操作系统的运行机制

1-1-4 操作系统的运行机制

程序是如何运行的

用户编写的高级语言代码(如C语言)经过编译器“翻译”成机器指令(二进制)后由CPU执行。一条高级语言的代码翻译过来可能会对应多条机器指令,程序运行的过程其实就是CPU执行一条一条机器指令的过程

两种程序

  1. 应用程序:普通程序员写的程序
  2. 内核程序:实现操作系统的程序,内核是操作系统最重要最核心的部分,也是最接近硬件的部分

两种指令

指令就是处理器(CPU)能识别、执行的最基本命令

  1. 特权指令:只允许“管理者”即操作系统内核来使用
  2. 非特权指令:应用程序只能使用非特权指令,如加法指令和减法指令等

CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型

两种处理器状态

  1. 内核态(管态):处于内核态时,说明正在运行内核程序可以执行特权指令
  2. 用户态(目态):处于用户态时,说明正在运行用户程序只能执行非特权指令

CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示内核态,0表示用户态

内核态和用户态之间的切换

  1. 内核态-->用户态:执行一条特权指令修改PSW的标志位为“用户态”,这个动作意味着操作系统主动让出CPU使用权

  2. 用于态-->内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权。CPU检测到中断信号后,会立即变为“核心态”,并停止运行当前的程序,转而运行处理中断信号的内核程序

除了非法使用特权指令之外,还有很多事件会触发中断信号。一个共性是,但凡需要操作系统介入的地方,都会触发中断信号