定义
系统中断: 中断系统中的中断发生后,系统停止回响,并执行中断回响,这个过程就叫系统中断。
系统中断,一般是硬体中断和软体中断的综合,中断是一个电脑术语,意思跟我们的请求差不多,滑鼠、键盘、板卡或者是一些系统核心组件,要想为你服务,都要向系统提出申请,然后等待作业系统的分配。如果没有这个过程,你什麽也干不了。CPU佔用高的原因就是,系统要保持随时能为你提供服务,就必须保证它的优先权力。
所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程式,保留现场后自动地转去执行相应的处理程式,处理完该事件后再返回断点继续执行被打断的程式。
中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断、时锺中断、控製台中断等。第二类是来自CPU的内部事件或程式执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47~63Hz之外)、程式故障(非法操作码、地址越界、浮点溢出等)等引起的过程。
第三类由于在程式中使用了请求系统服务的系统调用而引发的过程,称作陷入(trap,或者陷阱)。前两类通常都称作中断,它们的产生往往是无意、被动的,而陷入是有意和主动的。
中断处理
中断处理一般分为中断回响和中断处理两个步骤。中断回响由硬体实施,中断处理主要由软体实施。
(1)中断回响
对中断请求的整个处理过程是由硬体和软体结合起来而形成的一套中断机构实施的。发生中断时,CPU暂停执行当前的程式,而转去处理中断。这个由硬体对中断请求作出反应的过程,称为中断回响。一般说来,中断回响顺序执行下述三步动作:
◆中止当前程式的执行;
◆储存原程式的断点信息(主要是程式计数器PC和程式状态暂存器PS的内容);
◆从中断控製器取出中断向量,转到相应的处理程式。
通常CPU在执行完一条指令后,立即检查有无中断请求,如果有,则立即做出回响。
当发生中断时,系统作出回响,不管它们是来自硬体(如来自时锺或者外部设备)、程式性中断(执行指令导致软体中断-Software Interrupts),或者来自意外事件(如访问页面不在记忆体)。
如果当前CPU的执行优先权低于中断的优先权,那麽它就中止对当前程式下条指令的执行,接受该中断,并提升处理机的执行级别(一般与中断优先权相同),以便在CPU处理当前中断时,能禁止其它同级的或低级的中断,然后储存断点现场信息,通过取得的中断向量转到相应的中断处理程式的入口。
(2)中断处理
CPU从中断控製器取得中断向量,然后根据具体的中断向量从中断向量表IDT中找到相应的表项,该表项应是一个中断门。于是,CPU就根据中断门的设定而到达了该通道的总服务程式的入口。
核心对中断处理的顺序主要由以下动作完成:
◆储存正在运行进程的各暂存器的内容,把它们放入核心堆的新帧面中。
◆确定中断源或核查中断发生,识别中断的类型(如时锺中断或盘中断)和中断的设备号(如哪个磁碟引起的中断)。系统接到中断后,就从机器那裏得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包括相应中断处理程式入口地址和中断处理时处理机的状态字。
◆核心调用中断处理程式,对中断进行处理。
◆中断处理完成并返回。中断处理程式执行完以后,核心便执行与机器相关的特定指令序列,恢复中断时暂存器内容和执行核心堆退堆,进程回到使用者态。如果设定了重调度标志,则在本进程返回到使用者态时做进程调度。
















