一、中断/异常机制工作原理
1. 中断/异常机制是现代计算机系统的核心机制之一 硬件和软件相互配合而使计算机系统得以充分发挥能力 ●硬件该做什么事?--中断/异常响应 捕获中断源发出的中断/异常请求,以一定方式响应,将处理器控制权交给特定的处理程序 ●软件要做的什么事?---中断/异常处理程序 识别中断/异常类型并完成响应的处理2. 中断响应:发现中断、接收中断的过程
由中断硬件部件完成 处理器控制部件中设有中断寄存器,保存了中断信号中断响应过程示意图
3. 中断向量表
中断向量:一个内存单元,存放中断处理程序入口地址和程序运行时所需的处理机状态字 执行流程按中断号/异常类型的不同通过中断向量表转移控制权给中断处理程序4. linux中的中断向量表
5. 中断响应示意图
6. 中断处理程序
设计操作系统时,为每一类中断/异常事件编好相应的处理程序,并设置好中断向量表 系统运行时若响应中断,中断硬件部件将CPU控制权转给中断处理程序: 保存相关寄存器信息 分析中断/异常的具体原因 执行对应的处理功能 恢复线程,返回被事件打断的程序 小结:软件提前设置好,硬件部件来执行7. 例子:以设备输入输出中断为例
①打印机给CPU发中断信号(硬件) CPU处理完当前指令后检测到中断,判断出中断来源并向相关设备发确认信号 ②CPU开始为软件处理中断做准备:(硬件) 处理器状态被切换到内核态 在系统栈中保存被中观程序的重要上下文环境,主要是程序计数器PC,程序状态字PSW ③CPU根据中断码查中断向量表,获得与该中断相关的处理程序的入口地址,并向PC设置成该地址,新的指令周期开始时,CPU控制转移到中断处理程序(硬件) ④中断处理程序开始工作(软件) 在系统栈中保存现场信息 检查I/O设备的状态信息,操纵I/O设备或者在设备和内存之间传送数据等等 ⑤中断处理结束时,CPU检测到中断返回指令,从系统栈中恢复被中断程序的上下文环境,CPU状态恢复成原来的状态,PSW和PC恢复成中断前的值,CPU开始一个新的指令周期(硬件)8. 例子:I/O中断处理程序(软件)
通常分为两类处理: I/O操作正常结束 若有程序正等待此次I/O的结果,则应将其唤醒 若要继续I/O操作,需要准备号数据重新启动I/O I/O操作出现错误 需要重新执行失败的I/O操作 重试次数有上限,达到时系统将判定硬件故障