操作系统运行机制
操作系统运行机制
说明
- 如果只想了解操作系统应用:
- 熟悉内核态和用户态
- 如果想深入学习操作系统:
- 熟悉内核态和用户态,内核程序和应用程序,特权指令和非特权指令
程序是如何运行的
内核程序和应用程序
我们普通程序员写的程序就是应用程序
微软、苹果有一帮人负责实现操作系统,他们写的是内核程序。由很多内核程序组成了操作系统内核,或简称内核(Kernel)。内核是操作系统最重要最核心的部分,也是最接近硬件的部分。甚至可以说,一个操作系统只要有内核就够了(eg:Docker—>仅需Linux内核)
注:操作系统的功能未必都在内核中,如图形化用户界面GUI。
特权指令和非特权指令
- 应用程序只能执行非特权指令,比如:加法指令,减法指令。
- 内核程序可以执行特权指令,比如:内存清零指令。这些指令影响重大,只允许管理者——操作系统内核使用。
内核态和用户态
CPU有两种状态,内核态和用户态
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示内核态,0表示用户态。CPU通过这个寄存器实现的状态切换。
- 内核态->用户态:执行一条特权指令——修改PSW的标志位为用户态,这个动作意味着操作系统主动让出CPU使用权。
- 用户态->内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权。
举例
- 刚开机时,CPU为内核态,操作系统内核程序现上CPU运行。
- 开机完成后,用户可以启动某个程序。
- 操作系统内核程序在合适的时候主动让出CPU,让该应用程序上CPU运行。
- 应用程序运行在用户态。
- 此时,一位黑客在应用程序中植入了一条特权指令,企图破坏系统。
- CPU发现接下来要执行的指令是特权指令,但是自己处于用户态。
- 这个非法事件会引发一个中断信号。CPU检测到信号后,会立即变为内核态,并立即停止运行当前的应用程序,转而运行中断服务程序。
- 中断使操作系统再次夺回CPU控制权。
- 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的程序。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 MyAKDreamのBlog!