本节中的“指令”指二进制机器指令。
在CPU设计和生产的时候就划分了特权指令和非特权指令,
因此CPU执行一条指令前就能判断出其类型。
操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,
如:内存清零指令。这些指令影响重大,
只允许“管理者”―—即操作系统内核来使用。
应用程序只能使用“非特权指令”,如:加法指令、减法指令等。
CPU有两种状态,“内核态”和“用户态”。
处于内核态时,说明此时正在运行的是内核程序,
此时可以执行特权指令。
处于用户态时,说明此时正在运行的是应用程序,
此时只能执行非特权指令。
1.内核态→用户态:
执行一条特权指令――修改PSW的标志位为“用户态”,
这个动作意味着操作系统将主动让出CPU使用权。
2.用户态→内核态:
由“中断”引发,硬件自动完成变态过程,
触发中断信号意味着操作系统将强行夺回cPu的使用权。
3.非法事件的处理
当遇到非法事件时,会引发一个中断信号:
CPU检测到中断信号后,会立即变为“核心态”,
并停止运行当前的应用程序,转而运行处理中断信号的内核程序。
补充:
1.定义
微软、苹果有一帮人负责实现操作系统,
他们写的是“内核程序
由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
内核是操作系统最重要最核心的部分,也是最接近硬件的部分。
2.注意事项
甚至可以说,一个操作系统只要有内核就够了
(eg:Docker一>仅需Linux内核)。
操作系统的功能未必都在内核中,如图形化用户界面GUI。
我们普通程序员写的程序就是“应用程序”。