中断与中断系统


中断:没有我,还想提高计算机性能,做梦吧!

设想一个场景:
小宏正在吃饭,突然接到公司的电话,要求马上赶到公司开会。此时小宏做了如下几件事情:

  1. 放下碗筷
  2. 拿上车钥匙
  3. 去车库取车
  4. 赶到公司

如上场景在生活中经常能够见到,放在本文中,有一个术语能够很好的诠释这一场景——中断。

目录
  • 中断
    • 中断源
    • 中断字
    • 中断类型
    • 中断向量
    • 中断嵌套
      • 中断优先级
      • 中断屏蔽
  • 中断处理程序

中断

公司打来电话要求小宏马上去公司开会,因而小宏必须放下没有吃完的饭,转而赶去公司开会,等开完会再回到家继续吃饭。这几个动作就表现出了中断的概念。而小宏就是一个中断装置。

什么是中断
在程序运行过程中出现某种紧急事件,必须中止当前正在运行的程序,转而去处理此事件,然后再恢复原来运行的程序,这个过程就被称为中断。
什么是中断装置
中断系统中的硬件部分,其职能是发现并响应中断,具体为:

  1. 识别中断源
  2. 保存现场
  3. 引出中断处理程序

中断源

公司打电话要求小宏马上去公司开会,这就是引起小宏不得放下碗筷去公司开会的事件了。在计算机术语中,也称之为中断源。

引起中断的事件称为中断源

中断字

当小宏到了公司,走进会议室开始开会,此时:

  1. 拿出笔记本
  2. 开始记录会议内容
    以上是小宏在处理中断事件,我们称,笔记本是中断记录器,笔记本上记录的内容是中断字。

在中断装置发现并响应中断后,转到响应的中断处理程序。
硬件系统为每一个中断源设置一个寄存器,即为中断寄存器,而中断寄存器中保存了与中断事件相关的一些信息,这些信息就称为中断字

中断类型

小宏记录了一会,发现自己对于某一内容有疑问,于是标记下来,等待会议的提问阶段抛出此疑问。
小宏现在所做是其自己有意识的安排,并且使自愿的,我们称此为自愿性中断。既然有自愿性,相对的就有强迫性中断,被公司叫去开会,这就属于强迫性中断

  1. 强迫性中断
    这类中断事件是正在运行的程序锁不期望的,这类中断是否发生,何时发生,无法预知。
    • 时钟中断
    • 输入输出中断
    • 控制台中断
    • 硬件故障中断
    • 程序错误中断
  2. 自愿性中断
    这类中断事件是正在运行的程序有意识的安排,这类中断的发生具有必然性,发生时机,位置确定。

中断向量

小宏是在技术部会议室开技术研讨会议,这就是所谓的中断向量。
技术部会议室对应中断程序入口地址(PC),技术研讨会议对应的是运行环境(PSW),PC和PSW合称中断向量。

NOTE:
同类事件的处理方法是相同的,所以不是每一个中断源都有一个中断处理程序,而是每一类中断时间有一个中断处理程序。

中断嵌套

小宏在提问阶段抛出疑问时,是在其处理第一个中断事件时发生的,这就是一种嵌套。我们知道,开会时领导发言是不允许被打断的,除非是更高一级的领导才能打断(0.....0),这就是中断的优先级问题以及中断屏蔽。

中断嵌套主要是嵌套,虽然嵌套可以无休止的进行下去,但是,由于中断优先级的存在使得当前中断只能被更高优先级的事件中断,所以中断嵌套实际上是无法无限的。
想出现低优先级的事件中断也并非不可行,只需要调整一下优先级,比如说开会时的提问阶段就提高了普通员工的优先级。
注意:
中断发生时,需要保存(使用栈保存,栈区位置是由硬件确定的)被中断程序的现场信息,以保证处理完中断事件后可以恢复现场。

中断优先级

硬件规定,不可改变,但程序可以适当做出调整。

就如领导的优先级高于普通员工(你说是谁规定的呢?  ̄▽ ̄)

中断屏蔽

中断屏蔽指令可以暂时禁止中断源向处理器发送中断请求。

哪怕是领导,在一些会议上也是不能打断会议的进行 ︿( ̄︶ ̄)︿。

中断处理程序

小宏在会议上做了什么动作,还记得吗?那些动作就组成了一个处理程序。

中断处理程序处理中断的过程中可能会使用通用寄存器,所以需要进一步保存现场信息。
保存什么现场信息呢?保存时需要注意些什么吗?
中断处理完毕返回用户程序时,需要通过一条指令将PC和PSW弹出系统栈,为什么呢?

保存现场信息: PC,PSW以及通用寄存器内容
保存时需注意:现场信息保存在系统栈中,在保存和恢复现场的过程中不响应新的中断(中断屏蔽)。
一条指令恢复PC和PSW:中断向量中程序状态字PSW与指令计数器PC的内容必须由一条指令同时恢复,这样才能保证系统状态由管态转到目态的同时,控制转到上升进程的断点处继续执行。如果不同时恢复,则只能(1)先恢复PSW再恢复PC,在恢复PSW后已经转到目态,操作系统恢复PC的使命无法完成;(2)先恢复PC再恢复PSW,PC改变后转到操作系统另外区域(因为PSW仍为系统状态),PSW无法恢复。