程序运行
- 程序的运行过程其实就是CPU执行一条一条的机器指令的过程。
- 指令就是处理器CPU能够识别、执行的最基本的命令。
- 注意:不少人把命令提示符“小黑框”中使用的命令称为“指令”,但这其实是“交互式命令接口”的命令行所输入的命令。这里所讲的指令指的是二进制机器指令。
内核程序 VS 应用程序
应用程序
- 普通程序员写的程序。
内核程序
- 微软、苹果公司的专业人员负责实现操作系统的,他们写的就是“内核程序”
有很多内核程序组成“操作系统内核”,简称“内核”
内核是操作系统最重要最核心的部分,也就是最接近硬件的部分
甚至可以说,一个操作系统只有一个内核就够了(如:Docker -> 仅需Linux内核) - 注意:图形化用户界面GUI是操作系统的功能,但并不在内核中。
特权指令 VS 分特权指令
- 在CPU设计和生产时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断指令的类型。
使用者
- 应用程序:
应用程序只能使用“非特权指令”,如:加法指令、减法指令 - 内核程序
操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者”——即,操作系统内核来使用。
内核态 VS 用户态
- CPU有两种状态,“内核态”和“用户态”。
- 拓展: CPU中有个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
内核态
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
- 别名: 内核态 = 核心态 = 管态
用户态
- 处于用户态时,说明此时正在执行的是应用程序,此时只能执行非特权指令。
- 别名: 用户态 = 目态
内核态与用户态的切换
- 故事理解用户态和内核态的转换
总结
参考:《2021王道考研操作系统》
王道B站视频课