处理器状态
- 内核态 (Kernel Mode):运行操做系统程序。
- 用户态 (User Mode):运行用户程序。
- 用户态 → 内核态:中断/异常/陷入机制。
- 内核态 → 用户态:设置程序状态字 PSW。
- 特权指令 :只能由操做系统使用、用户程序不能使用的指令。
- 非特权指令 :用户程序可使用的指令。
中央处理器
- 处理器由运算器、控制器、一系列的寄存器以及高速缓存构成。
-
两类寄存器算法
- 用户可见寄存器:高级语言编译器经过优化算法分配并使用之,以减小程序访问内存次数。
- 控制和状态寄存器:用于控制处理器的操做,一般由操做系统代码使用。
控制和状态寄存器
- 用于控制处理器的操做。
- 在某种特权级别下能够访问、修改。
-
常见的控制和状态寄存器编程
- 程序计数器(PC :Program Counter ):记录将要取出的指令的地址。
- 指令寄存器(IR :Instruction Register ):记录最近取出的指令。
- 程序状态字(PSW :Program Status Word ):记录处理器的运行状态,如条件码 、模式、控制位。在 PSW 中专门设置一位,根据运行程序对资源和指令的使用权限而设置不一样的 CPU 状态。
中断与异常机制
能够说操做系统是由 “ 中断驱动 ” 或者 “ 事件驱动 ” 的。缓存
主要做用
- 及时处理设备发来的中断请求。
- 可以使操做系统捕获用户程序提出的服务请求。
- 防止用户程序执行过程当中的破坏性活动。
概念
- CPU 对系统发生的某个事件作出的一种反应。
- CPU 暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断点,继续执行被打断的程序。
- 中断:外部事件,正在运行的程序所不指望的。
- 异常:由正在执行的指令引起。

工做原理
- 硬件的工做(中断/异常响应):捕获中断源发出的中断/异常请求,以必定方式响应,将处理器控制权交给特定的处理程序。
- 软件的工做(中断/ 异常处理程序):识别中断/异常类型并完成相应的处理操做。

- 中断向量:一个内存单元,存放中断处理程序入口地址和程序运行时所需的处理机状态字。执行流程按中断号/异常类型的不一样,经过中断向量表转移控制权给相应的中断处理程序。


中断响应示意图

中断处理程序
系统调用
- 用户在编程时能够调用的操做系统功能。
- 是操做系统为用户态运行的进程和硬件设备进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。能够说是操做系统留给用户程序的一个接口。
- 每一个操做系统都提供几百种系统调用(进程控制、进程通讯、 文件使用、目录操做、设备管 理、信息维护等)。
系统调用和库函数之间的联系与区别
- 系统调用所提供给用户的是直接而纯碎的高级服务,若是想要更加人性化,具备更符合特定状况的功能,那么就要咱们用户本身定义,所以衍生了库函数,它把部分系统调用包装起来。好比当咱们要用 C 语言打印一句话的时候,若是没有用到库函数printf,那么咱们就须要本身实现就须要调用 putc() 和 write() 等这样一些系统函数。
- 系统调用是为了方便使用操做系统的接口,而库函数则是为了人们编程的方便。
- 在移植性方面,不一样操做系统的系统调用通常是不一样的,移植性差;而在全部的ANSI C编译器版本中,C库函数是相同的。
执行过程
当 CPU 执行到特殊的陷入指令时:优化
-
中断/异常机制spa
- 硬件保护现场
- 经过查中断向量表把控制权转给系统调用总入口程序
-
系统调用总入口程序操作系统
- 保存现场
- 将参数保存在内核堆栈里
- 经过查系统调用表把控制权转给相应的系统调用 处理例程或内核函数
- 执行系统调用例程
恢复现场,返回用户程序设计