一、处理器是由运算器、控制器、一系列的寄存器以及高速缓存构成
1. 两类寄存器:
用户可见寄存器:高级语言编译器通过优化算法分配并使用,以减少程序访问内存的次数
控制和状态寄存器:用于控制处理器的操作通常由操作代码使用
常见的控制和状态寄存器
程序计数器(PC:Program Counter),记录将要取出的指令的地址
指令寄存器(IR:Insruction Register),记录最近取出的指令
程序状态字(PSW:Program Status Word),记录处理器的运行状态码、模式、控制位等信息
2. CPU的状态(模式MODE)
现在处理器通常将CPU状态设计划分为两种、三种、或者四种
在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态
3. 特权指令和非特权指令
操作系统需要两种CPU状态
内核态(kernel mode):运行操作系统程序
用户态(user mode):运行用户程序
特权(privilege)指令:只能由操作系统使用、用户程序不能使用的指令
非特权指令:用户程序可以使用的指令
4. CPU状态之间的转换(系统程序和用户程序的转换)
用户态--->内核态
唯一途径--->中断/异常/陷入机制
内核态--->用户态
设置程序状态字PSW
一条特殊的指令:陷入指令(又称访管指令)
提供给用户程序的接口,用于调用操作系统的功能(服务)
二、中断与异常(操作系统的驱动力)
1. 中断/异常 对于操作系统的重要性
就好比:汽车的发动机、飞机的引擎
可以说 操作系统是由“中断驱动”或者“事件驱动”的
2. 主要作用
及时处理设备发来的中断请求
可使OS捕获用户程序提出的服务的请求
防止用户程序执行过程中的破坏性活动等等...
3. 中断/异常的概念
CPU对系统发生的某个事件做出的一种反应,事件的发生改变了处理器的控制流
CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断电继续执行被打断的程序
4. 为什么引入中断与异常?
中断的引入:为了支持CPU和设备之间的并行操作
当CPU启动设备进入输入/输出后,设备便可以独立工作,CPU转去处理与此次输入/输出不相关的事情,当设备完成输入/输出后,通过CPU发中断报告此次输入/输出的结果,让CPU决定如何处理以后的事情
5. 异常的引入:表示CPU执行指令时本身出现的问题
如算术溢出、清零、取数时的奇偶错误,访存地址越界或者执行了“陷入指令”等,这时硬件改变了CPU当前的执行流程,转到相应的错误处理程序或异常处理程序或执行系统调用
6. 事件的划分
中断(外中断):IO中断:在键盘上按了ctrl+c,网卡接到包,打印机读盘结束,、时钟中断:定时器到点了,cpu上运行的程序时间片、硬件故障:笔记本没有电了
异常(内中断):系统调用,页故障、保护性异常,断点指令,其他程序异常(如算术溢出等)
类别 | 原因 | 异步/同步 | 返回行为 |
中断interrupt | 来自I/O设备、其他硬件部件 | 异步 | 总是返回到下一跳指令 |
陷入Trap | 有意识安排的 | 同步 | 返回到下一条指令 |
故障Fault | 可恢复的错误 | 同步 | 返回到当前指令 |
终止Abort | 不可恢复的错误 | 同步 | 不会返回 |
#中断是一种,异常是三种