考研帮 > 数学 > 每日一练

2.2 中断技术

2.2.6 中断的优先级和多重中断

  1.中断的优先级
  在计算机执行的每一瞬间,可能有几个中断事件同时发生。例如,由非法操作码引起程序性中断的同时可能发生外部中断要求。这时,中断装置如何来响应这些同时发生的中断呢?一般来说,中断装置按照预定的顺序来响应,这个按中断请求轻重缓急的程度预定的顺序称为中断的优先级,中断装置首先响应优先级高的中断事件。
  在一个计算机系统中,各中断源的优先顺序是根据某个中断源或中断级若得不到及时响应,造成计算机出错的严重性程度来决定的。例如,机器校验中断表明产生了一个硬件故障,对计算机及当前执行任务的影响最大,因而优先级排在最高;至于I/O中断事件的优先级可放低,这样做只会推迟一次I/O启动或推迟处理一个I/O中断事件,对系统工作的正确性影响不大。当某一时刻有多个中断源或中断级提出中断请求时,中断系统如何按预先规定的优先顺序响应呢?可以使用硬件和软件两种办法。前者根据排定的优先次序做一个硬件链式排队器,当有高一级的中断事件产生时,应该封住比它优先级低的所有中断源;后者编写一个查询程序,依据优先级次序,自高到低进行查询,一旦发现有一个中断请求,便转入该中断事件处理程序入口。
  一种可能的中断优先级由高到低的顺序是:机器校验中断;自愿性中断;程序性中断;外部中断;输入/输出中断;重启动中断。需要注意的是,中断的优先级只是表示中断装置响应中断的次序,而并不表示处理它的先后顺序。
  2.中断的屏蔽
  主机可以允许或禁止某类中断的响应,如主机可以允许或禁止所有的输入/输出中断、外部中断、机器校验中断及某些程序性中断。对于被禁止的中断,有些以后可继续响应,有些将被丢弃。例如,对于被禁止的输入/输出中断的条件将被保留以便以后响应和处理,对于被禁止的程序中断条件,除了少数置特征码以外,都将丢弃不管。有些中断是不能被禁止的,如计算机中的电源掉电中断,自愿性访管中断就不能被禁止。
  主机是否允许某类中断,由当前程序状态字中的某些中断屏蔽位来决定。一般来说,当屏蔽位为1 时,主机允许相应的中断;当屏蔽位为0 时,相应中断被禁止。按照屏蔽位的标志,可能禁止某一类内的全部中断,也可能有选择地禁止某一类内的部分中断。有了中断屏蔽功能,就增加了中断排队的灵活性,采用程序的方法在某段时间中屏蔽一些中断请求,以改变中断响应的顺序。
  3.多重中断事件的处理
  在一个计算机系统运行过程中,由于中断可能同时出现,或者虽不同时出现但却被硬件同时发现,或者出现在其他中断正在进行处理期间,这时CPU又响应了这个新的中断事件,于是暂时停止正在运行的中断处理程序,转去执行新的中断处理程序,这就叫多重中断(又称中断嵌套)。一般来说,优先级别高的中断有打断优先级别低的中断处理程序的权利,但反之不允许优先级别低的中断干扰优先级别高的中断处理程序的运行。系统如何来处理出现的多个中断呢?这是操作系统的中断处理程序所必须解决的问题。
  对于多个中断,可能是同一中断类型的不同中断源,也可能是不同类型的中断。对于前者,一般由同一个中断处理程序按预定的次序分别处理;对于后者,可以区别不同情况作如下处理。
  禁止再发生中断。在运行一个中断处理程序时,对任何新产生的中断不予理睬,这可以通过屏蔽某些中断来实现。例如,在运行处理I/O 中断的例行程序时,可以屏蔽外部中断或其他I/O 中断,甚至所有中断。这种方法简单易行,所有中断都严格按顺序处理,但没有考虑相对优先级和时间限制的要求。
  定义中断优先级。对于有些必须处理且优先级更高的中断源,采用屏蔽方法有时可能是不妥的;因此,在中断系统中往往允许在运行某些中断例行程序时,仍然可以响应中断。这时,系统应负责保护被中断的中断处理例行程序的现场(有的计算机中断系统对断点的保存是在中断周期内,由中断隐指令实现,对用户是透明的),然后再转向处理新中断的例行程序,以便处理结束时有可能返回原来的中断处理例行程序继续运行。操作系统必须预先做出规定,哪些中断类型允许嵌套?嵌套的最大级数?嵌套的级数视系统规模而定,一般不超过三重为宜,因为过多重的“嵌套”将会增加不必要的系统开销。
  响应并进行中断处理。在运行中断处理例行程序时,如果出现任何程序性中断源,一般情况下,表明这时中断处理程序有错误,应立即响应并进行处理。那么在每个中断处理程序的程序状态字中,究竟应该屏蔽哪些中断源将由系统设计而定,需要考虑的情况有:硬件的中断优先级,应用的需要,软件处理所希望的优先级,可能丢失的中断源及其对系统的影响等。

关于"最后阶段,真题的正确打开方式_备考经验_考研帮"15名研友在考研帮APP发表了观点

扫我下载考研帮

考研帮地方站更多

你可能会关心:

来考研帮提升效率

× 关闭