操作系统基础·2 操作系统的运行环境和运行机制
1、CPU的态,又称CPU的特权级,是CPU的工作状态,由当前CPU执行的哪类程序决定。区分处理机状态的目的是保护操作系统。CPU状态切换的三个场景:(1)应用程序调用操作系统提供的系统调用:应用程序通过系统调用指令将CPU状态从用户态切换到内核态;(2)应用程序执行指令触发了异常,导致CPU的特权级从用户态切换到内核态,如访内存指令触发了缺页异常;(3)应用程序执行中CPU收到来自外设的中断,对中断的处理导致CPU的特权级从用户态切换到内核态。内核态与用户态的区别如下图:


2、CPU中的寄存器:程序计数器(PC,记录下一条要执行的指令的地址)、指令寄存器(IR,记录最近取出并解码的指令)、程序状态字寄存器(PSW,记录处理器的运行状态,其中一些位可以影响处理器的行为,如中断允许位、处理器状态位等)、通用寄存器、控制寄存器。CPU的工作流程是取指-译码-执行-写回。计算机系统的运行如上图。
3、中断一般通过中断向量将控制权转移到中断服务例程,中断向量包含服务例程的地址。中断需保存现场与恢复现场,现场是在中断的那一时刻能确保程序继续运行的有关信息(包括后继指令所在主存的单元号、程序运行所处的状态、指令执行情况、程序执行的中间结果)。中断概念如下图1,中断处理过程如下图2:



4、中断响应:当CPU发现有中断请求时,中止现行程序执行并引出中断处理程序的过程,需硬件支持(如PC 、PSW 、系统堆栈:内存的固定区域、中断向量表)。中断响应过程如中上图,保留程序断点及CPU的状态信息、自动转入相应的中断处理程序。其实质是交换指令的地址和CPU的状态信息。
5、中断的分类,按来源:中断(外部)/Trap(内部),按功能:输入输出中断/外中断/机器故障中断/程序性中断(溢出、用户态用内核态指令)/访管中断(对操作系统提出某种需求时所发出的中断、非法操作有时也被称为系统调用、陷阱或软件中断),按方式:强迫/自愿(如访管)。
6、系统调用是操作系统提供的服务的编程接口,是用户在程序一级请求操作系统服务的一种手段,是带有功能号的“访管指令”,其功能由操作系统中的程序完成(软件方法)。当处理机执行到访管指令时发生中断,该中断称为访管中断,表示正在运行的程序对操作系统的某种需求。系统调用的实现如下图1,参数传递如下图2:


