中断

1.中断相关概念

计算机中都配置了中断装置,用户程序执行过程中不但可通过系统调用,还可以用中断方式来请求和获得操作系统的服务。采用中断技术后还能实现CPU 和 I/O 设备交换信息使 CPU 与 I/O 设备并行工作。此外,在计算机运行过程中,还有许多事件会随机发生,如硬件故障、电源掉电、人机联系和程序出错等,这些事件必须及时加以处理。中断(interrupt)是指程序执行过程中,当发生某个事件时,中止 CPU 上现行程序的运行,引出处理该事件的服务程序执行的过程。在提供中断装置的计算机系统中,在每两条指令或某些特殊指令执行期间都检查是否有中断事件发生,若无则立即执行下一条或继续执行,否则响应该事件并转去处理中断事件。

计算机处理突发事件的能力是由硬件和软件配合完成的。首先由硬件的中断装置发现中断事件;然后中断装置停止当前正在执行的程序,引出处理该中断事件的程序来处理。引起中断的事件称为中断源,发现中断源并产生中断事件的硬件称为中断装置
 

2.中断的分类

2.1.根据中断事件的性质分类

根据中断事件的性质,中断可分为强迫性事件中断和自愿性事件中断

2.1.1.强迫性事件中断

强迫性事件中断是由于某种事故或外部请求信息所引起的,包括:

  • 机器故障中断事件,如电源故障;
  • 程序性中断事件,如除数为0;
  • 外部中断事件,如时钟的定时中断;
  • 输入输出中断事件,如设备出错,传输结束等。

2.1.2.自愿性事件中断

自愿性事件中断是运行的程序所期待的事件。由于程序执行了一条访管指令,程序对操作系统有某种需求,便自愿停止当前程序而转入中断处理程序进行处理,如要求OS协助启动外围设备工作。

2.2.根据中断信号的来源分类

根据中断信号来源可分为外中断和内中断。

2.2.1.外中断

一般又称为中断,是指来自处理器和主存储器之外的中断,包括:电源故障中断、时钟中断、控制台中断、它机中断和 I/O 中断等。

2.2.2.内中断

指来自处理器和主存内部的中断,一般又称陷入或异常,包括:通路校验错、主存奇偶错、非法操作码、地址越界、页面失效、调试指令、访管中断、算术操作溢出等各种程序性中断等。其中访管中断是由机器指令提供的特殊指令,该指令执行时将会引起中断。
中断和陷入的区别在于:中断是由与现行指令无关的中断信号触发的,通常在两条机器指令之间才可以响应中断,一般而言,中断处理程序提供的服务不是为当前进程所需要的。而陷入则是由处理器正在执行的现行指令所引起的,因而,一条指令执行期间允许响应陷入,通常,陷入处理程序提供的服务是为当前进程所用的。

3.中断装置

发现中断源并产生中断事件的硬件称为中断装置。计算机处理突发事件的能力是由硬件和软件配合完成的。中断装置处理中断的流程如下:

  • 发现中断源,提出中断请求。当发现多个中断源时,将根据优先级先后发出中断请求。
  • 保护现场。将处理器中某些寄存器内的数据存放于内存储器,以便中断返回后恢复现场,程序继续运行。
  • 启动处理中断事件的中断处理程序。

4.中断处理程序

处理中断事件的程序称为中断处理程序它的主要任务是处理中断事件和恢复正常操作。由于不同中断源对应不同中断处理程序,故快速找到中断处理程序的入口地址是一个关键问题。寻找入口地址可用如下办法:在主存储器(常在低地址区)设置一张向量地址表,存储单元的地址对应向量地址,存储单元的内容为入口地址。 CPU响应中断后,根据预先规定的次序找到相应向量地址,便可获得该中断事件处理程序的入口地址。
一个操作系统设计者将根据中断的不同类型和不同的应用环境,而确定不同的处理原则。具体地讲,一个中断处理程序主要做以下四项工作:

  • 保护未被硬件保护的一些必需的处理状态。例如,将通用寄存器的内容保存到主存储器,从而,使中断处理程序在运行中可以使用通用寄存器。
  • 识别各个中断源,分析产生中断的原因。
  • 处理发生的中断事件。中断处理程序将根据不同的中断源,进行各种处理操作。有简单的操作,如置一个特征标志;也有相当复杂的操作,如重新启动磁带机倒带并执行重读操作。
  • 恢复正常操作。恢复正常操作一般有几种情况:恢复中断前的程序按断点执行;重新启动一个新的程序或者甚至重新启动操作系统。
     

5.中断的优先级和多重中断

5.1.中断优先级

在计算机执行的每一瞬间,可能有几个中断事件同时发生,这时,中断装置如何来响应这些同时发生的中断呢?一般说,中断装置按照预定的顺序来响应,这个按中断请求轻重缓急的程度预定的顺序称为中断的优先级,中断装置首先响应优先级高的中断事件。在一个计算机系统中,各中断源的优先顺序是根据某个中断源或中断级若得不到及时响应,造成计算机出错的严重性程度来定。当某一时刻有多个中断源或中断级提出中断请求时,中断系统如何按预先规定的优先顺序响应呢?可以使用硬件和软件两种办法。

  • 硬件:根据排定的优先次序做一个硬件链式排队器,当有高一级的中断事件产生时,应该封住比它优先级低的所有中断源;
  • 软件:编写一个查询程序,依据优先级次序,自高到低进行查询,一旦发现有一个中断请求,便转入该中断事件处理程序入口
  • 注意:中断的优先级只是表示中断装置响应中断的次序,而并不表示处理它的先后顺序。

5.2.中断屏蔽

主机可以允许或禁止某类中断的响应,如主机可以允许或禁止所有的输入输出中断、外部中断、机器校验中断以及某些程序性中断。对于被禁止的中断,有些以后可继续响应,有些将被丢弃。例如,对于被禁止的输入输出中断的条件将被保留以便以后响应和处理,对于被禁止的程序中断条件,除了少数置特征码以外,都将丢弃不管。有些中断是不能被禁止的,例如,计算机中的电源掉电中断,自愿性访管中断就不能被禁止。

主机是否允许某类中断,由当前程序状态字(PSW,Programming Status Word)中的某些中断屏蔽位来决定。一般,当屏蔽位为 1 时,主机允许相应的中断,当屏蔽位为 0 时,相应中断被禁止。按照屏蔽位的标志,可能禁止某一类内的全部中断,也可能有选择地禁止某一类内的部分中断。有了中断屏蔽功能,就增加了中断排队的灵活性,采用程序的方法在某段时间中屏蔽一些中断请求,以改变中断响应的顺序。

5.3.多重中断

在一个计算机系统运行过程中,由于中断可能同时出现,或者虽不同时出现但却被硬件同时发现,或者出现在其他中断正在进行处理期间,这时 CPU 又响应了这个新的中断事件,于是暂时停止正在运行的中断处理程序,转去执行新的中断处理程序,这就叫多重中断(又称中断嵌套)一般来说,优先级别高的中断有打断优先级别低的中断处理程序的权利,但反之不允许优先级别低的中断干扰优先级别高的中断处理程序的运行
对于多个中断,可能是同一中断类型的不同中断源,这时一般由同一个中断处理程序按预定的次序分别处理;也可能是不同类型的中断,这时可以按不同情况作如下处理:

  • 禁止再发生中断。在运行—个中断处理程序时,对任何新产生的中断不予理睬,这可以通过屏蔽某些中断来实现。这种方法简单易行,所有中断都严格按顺序处理,但没有考虑相对优先级和时间限制的要求。
  • 定义中断优先级。对于有些必须处理且优先级更高的中断源,采用屏蔽方法有时可能是不妥的,因此,在中断系统中往往允许在运行某些中断例行程序时,仍然可以响应中断,这时,系统应负责保护被中断的中断处理例行程序的现场,然后,再转向处理新中断的例行程序,以便处理结束时有可能返回原来的中断处理例行程序继续运行。操作系统必须预先做出规定,哪些中断类型允许嵌套?嵌套的最大级数?过多重的‘嵌套’将会增加不必要的系统开销。
  • 响应并进行中断处理。在运行中断处理例行程序时,如果出现任何程序性中断源,一般情况下,表明这时中断处理程序有错误,应立即响应并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯Jungle

您的支持是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值