一、中断/异常机制工作原理

       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操作
             重试次数有上限,达到时系统将判定硬件故障