操作系统 1.3_1 操作系统的运行机制

发布时间 2023-09-15 09:28:41作者: 凉白茶

操作系统的运行机制

image

内核程序和应用程序

image

我们普通程序员写的程序就是“应用程序”
微软、苹果有一帮人负责实现操作系统。他们写的是“内核程序”,由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
内核是操作系统最重要的核心部位,也是最接近硬件的部分,甚至可以说,一个操作系统只要有内核就够了(eg:Docker ——> 仅需Linux内核),操作系统的功能未必都在内核中,如图形化用户界面GUI。

特权指令和非特权指令

CPU设计和生产时就划分了特权指令和非特权指令,因此CPU执行一条指令就能判断出其类型。

  • 非特权指令:应用程序只能使用“非特权指令”,如:加法指令、减法指令等。
  • 特权指令:操作系统内核作为“管理者”,有时候会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者” —— 即操作系统内核来使用。

内核态和用户态

问题:CPU能判断出指令类型,但是它怎么区分此时正在运行的是内核程序or应用程序?

CPU有两种状态:“内核态”和“用户态”

  • 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
  • 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

拓展:CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
别名:内核态=核心态=管态;用户态=目态

内核态、用户态的切换

内核态 —> 用户态:执行一条特权指令,修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
用户态 —> 内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。(除了非法使用特权指令之外,还有很多事件会触发中断信号。一个共性是,但凡需要操作系统介入的地方,都会触发中断信号)。

image