2010年6月24日星期四

中断处理过程

一个完整的中断处理过程应该包括:中断请求、中断排队或中断判优、中断响应、中断处理和中断返回等环节,下面分别进行讨论。
  1.中断请求
  中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件:
  (1)外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向CPU发出中断请求。
  (2)系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。当这个外设中断请求被屏蔽,虽然这个外设准备工作已经完成,也不能发出中断请求。
  2.中断排队
  中民申请是随机的,有时会出现多个中断源同时提出中断申请。但CPU每次只能响应一断源的请求,那么究竟先响应哪一个中断源的请求呢?这就必须根据各中断源工作性质的轻重缓急,预先安排一个优先级顺序,当多个中断源同时申请中断时,即按此优先级顺序进行排队,等候CPU处理。一般是把最紧迫和速度最高的设备排在最优先的位置上。CPU首先响应优先级别最高的中断源。当中断处理完毕,再响应级别低的中断申请。
  中断排队可以采用硬件的方法,也可以采用软件的方法。前者速度快,但需要增加硬设备;后者无需增加硬设备,但速度慢,特别是中断源很多时尤为突出。
  软件优用查询技术。当CPU响应中断后,就用软件查询以确定是哪些外设申请中断,并判断它们的优先权。一个典型的软件优先权排队接口电路如图6-10所示,图中把8个外设的中断请求触发器组合起来,作为一具端口,并赋以设备号。把各个外设的中断请求信号相“或”后,作为INTR信号,故其中任一外设有中断请求,都可向CPU送出INTR信号。当CPU响应中断后,把中断寄存器的状态作为一个外设读入CPU,逐位检测它们的状态,若哪一位为1,则该位对应的外设有中断请求,应转到相应的服务程序的入口。其流程如图6-11所示。
相应的查询程序如下:

  XOR AL,AL ;CF清0
  IN AL,20H ;输入中断请求触发器的状态
  RCL AL,1 ;左移一位,检测最高位是否有请求
  JC POW ;有,转相应服务程序
  RCL AL,1 ;否,检测下一位
  JC DISS
  …
  查询方法的优点是:
  (1)询问的次序,即优先权的次序。显然,最先询问的,优先权的级别最高。
  (2)省硬件。不需要有判断与确定优先权的硬件排队电路。
  缺点是:由询问转至相应的服务程序入口的时间长,尤其是在中断源较多的情况下。
  硬件优先权排队电路,目前均采用专用中断管理接口芯片如8259A等。
  3.中断响应
  经中断排队后,CPU收到一个当前申请中断的中断源中优先级别最高的中断请求信号,如果允许CPU响应中断(IF=1),在执行完一条指令后,就中止执行现行程序,而响应中断申请。此时首先由硬件电路保护断点,即将当前正在执行的程序的段地址(CS)和偏移地址(IP)以及标志寄存器(FR)压入堆栈;然后关闭CPU内的允许中断触发器IF(可屏蔽中断时);接下来就是寻找中断服务程序的入口地址。
  寻找中断服务程序入口地址的方法分软件和硬件两种。软件方法即为上述的查询方式。在硬件方式中,目前均采用矢量中断方式。所谓矢量中民即当CPU响应中断后,由提出中断请求的中断源向CPU发去一个中断矢量,CPU根据这个中断矢量找到中断程序的入口地址,而转到相应的中断服务程序。以Intel为CPU的PC系列微型计算机系统就采用矢量中断方式。
  4.中断处理
  中断响应后,进入中断处理,即执行中断服务程序。在中断服务程序中,首先要保护现场,把中断服务程序中所要使用到的寄存器内容保护起来,如将经们的内容压入堆栈,然后才进行与此次中断有关的相应服务处理。处理完毕要恢复现用到的寄存器内容保护起来,如将经们的内容压入堆栈,然后才进行与此次中断有关的相应服务处理。处理完毕要恢复现场,即恢复中断前各寄存器的内容。如果在中断服务程序中允许嵌套(可屏蔽中断方式时),还应用STI指令将IF=1(即开中断)。
  5.中断返回
  通常,中断服务程序的最后一条指令是一条中断返回指令。当CPU执行这条指令时,把原来程序被中断的断点地址从堆栈中弹回CS和IP中,原来的FR弹回FR。这样,实中断的程序就可以从断点处继续执行下去。CPU从中断服务程序又回到了被中断的主程序。
  在实际应用系统中,中断可以嵌套,即可以有多重中断。所谓多重中断,就是在CPU执行某一中断服务程序时,又有优先级别更高的中断源申请断,此时,CPU应当暂停止这个中断服务,而去处理优先级别比它高的中断申请。处理完毕再返回中断占,继续处理较低优先级别的中断。这种在低级中断中还嵌套有高级中断的多重中断方式,对实时处理系统是很有用的。

转载自:
http://202.116.0.161/wjyl/site/text/chapter6/6.3.2.htm

没有评论:

发表评论