3.1 程序的级别

内核程序

由很多内核程序组成了“操作系统内核”,内核是操作系统最重要核心的部分,也是最接近硬件的部分。

应用程序

一条高级语言的代码翻译过来可能会对应多条机器指令,程序运行的过程就是CPU执行一条一条的机器指令的过程。

3.2 指令的级别

特权指令

只允许操作系统内核作为“管理者”去使用特权指令,例如内存清零指令。

非特权指令

应用程序只能使用“非特权指令”,例如加法指令,减法指令。
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。

3.3 内核态和用户态


image.png
在讲特权指令和非特权指令时,CPU可以判断出指令类型,但是他怎么去区分正在运行的是内核程序还是应用程序呢?
CPU有2种状态,“内核态”和“用户态”
处在内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
处在用户态时,说明此时正在运行的是应用程序,此时可以执行非特权指令。

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

image.png
image.png

3.4 阶段总结

1.3 操作系统的运行环境 - 图4

3.5 中断和异常

3.5.1 中断

3.5.1.1 中断的作用

在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。
“中断”是让操作系统内核夺回CPU使用权的唯一途径,会使CPU从用户态变为内核态。

假设没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序,那么何来 多道程序并发 呢??

3.5.1.2 中断的分类

3.5.1.2.1 内中断

也称为 异常,例外。
与当前执行的指令有关,中断信号来源于CPU内部。

内中断的例子:

image.png

3.5.1.2.2 外中断

也称为 “中断”
与当前执行的指令无关,中断信号来源于CPU外部。

外中断的例子:
image.png

1.3 操作系统的运行环境 - 图7

3.5.1.3 中断的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中端信号后,会根据终端信号的类型去查询“中断向量表”,以此来找到响应的中断处理程序来内存中的存放位置。

3.6 系统调用

待补充