4. 操作系统的运行机制
Last updated
Last updated
普通程序员写的程序就是“应用程序”
微软、苹果有一帮人负责实现操作系统,他们写的是“内核程序”
由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
内核是操作系统最重要最核心的部分,也是最接近硬件的部分。甚至可以说,一个操作系统只要有内核就够了(eg:Docker—>仅需Linux内核)
操作系统的功能未必都在内核中,如图形化用户界面GUI
在 CPU 设计和生产时就划分了特权指令和非特权指令,因此 CPU 执行一条指令前就可以判断出其类型
应用程序只能使用“非特权指令”,如:加法指令、减法指令等
操作系统内核作为“管理者”,有时会让 CPU 执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者” —— 即操作系统内核来使用
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
CPU 中有一个寄存器叫程序状态寄存器(PSW),其中有个二进制位,1 表示内核态,0 表示用户态
别名:内核态 = 核心态 = 管态;用户态 = 目态
内核态 —> 用户态:执行一条特权指令 —— 修改 PSW 的标志位为“用户态”,这个动作意味着操作系统将主动让出 CPU 使用权
用户态 —> 内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回 CPU 的使用权
触发中断信号:除了非法使用特权指令之外,但凡需要操作系统介入的地方,都会触发中断信号