操作系统(四)操作系统的运行机制

1.4 操作系统的运行机制

目录

1.4 操作系统的运行机制

1.4.1 内核程序&应用程序

1.4.2 特权指令&非特权指令

1.4.3 内核态&用户态

1.4.4 操作系统的内核

1.4.5 小结


  操作系统其实也是一种程序,程序的执行过程也就是CPU执行一行行机器指令的过程。区别于一般程序员开发的应用程序,实现操作系统的程序就是内核程序。

1.4.1 内核程序&应用程序

  内核程序:实现操作系统的程序称为内核程序,许多内核程序结合在一起便组成了操作系统内核。

  应用程序:普通程序员借助编程工具以及高级语言所完成的程序叫做应用程序。

1.4.2 特权指令&非特权指令

  特权指令:作为系统资源的管理者,操作系统可以使用一些直接关系重大的指令(内存清零等),这些指令被称为特权指令,而且应用程序没有办法直接使用特权指令,这保证了操作系统的安全。

  非特权指令:应用程序可以使用的指令,如加减乘除指令等。

  CPU在设计的时候便已经划分出了特权指令以及非特权指令,因此在执行这条命令前CPU就可以先判断指令的内容。

1.4.3 内核态&用户态

  CPU有两种状态:内核态(或称核心态,管态)以及用户态(目态)。当CPU处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令;当CPU处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。在CPU中有一个寄存器叫做程序状态寄存器(PSW),该寄存器的01状态来表示此时处于内核态还是用户态。

  下面我们来讲解一下,用户态与内核态之间是如何相互进行变化的。

  内核态-->用户态:需要执行一条特权指令(指令内容是修改PSW寄存器状态),此时内核态转变为用户态,CPU主动让出使用权。

  用户态-->内核态:由“中断”引发,当CPU检测到中断时,操作系统会强制将CPU变为内核态夺回CPU使用权,再执行与中断有关的一系列操作。

  下面我们用一个小栗子来解释一下这个过程:

① 刚开机时,CPU 为“内核态”,操作系统内核程序先上CPU运行
 
② 开机完成后,用户可以启动某个应用程序
 
③ 操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上CPU运行
 
④ 应用程序运行在“用户态
 
⑤ 此时,一位黑客在应用程序中植入了一条特权指令,企图破坏系统…
 
⑥ CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”
 
⑦ 这个非法事件会引发一个中断信号
 
⑧ “中断”使操作系统再次夺回CPU的控制权
 
⑨ 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
 

1.4.4 操作系统的内核

  当我们刚开始使用操作系统的时候,会发现一些程序并不是必需的(记事本等),这些程序称为操作系统的非内核功能,下图是将操作系统进行了更进一步的划分。

操作系统(四)操作系统的运行机制

  有人将内核划分为大内核以及微内核,这两种划分在不同的时期各有优势。下面用企业来类比一下操作系统:

内核就是企业的管理层,负责一些重要的工作。只有管理层(内核程序)才能执行特权指令,普通员工(应用程序)只能执行非特权指
 
令。用户态、核心态之间的切换相当于普通员工和管理层之间的工作交接。
 
大内核:企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织结构混乱,难以维护。
 
微内核:随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方便维护;缺点是效率低。
 

1.4.5 小结

操作系统(四)操作系统的运行机制

需要注意的是:

  特权指令只能在核心态下执行; 内核程序只能在核心态下执行。