中断

来源:互联网 发布:php replace函数用法 编辑:程序博客网 时间:2024/05/25 18:10

定义:CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动的转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
中断

系统中断:中断系统中的中断发生后,系统停止响应,并执行中断响应,这个过程就叫系统中断。
中断可分三类:

一类 :由CPU外部引起的,称作中断,如I/O中断、时钟中断、控制台中断等。
二类 :是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47~63Hz之外)、程序故障(非法操作码、地址越界、浮点溢出等)等引起的过程。
三类 :由于在程序中使用了请求系统服务的系统调用而引发的过程,称作“陷入“(trap,或者陷阱)。
前两类通常称作中断,它们的产生往往是无意、被动的,而陷入是有意和主动的**

中断处理:中断处理一般分为中断响应和中断处理两个步骤。中断响应由硬件实施,中断处理主要由软件实施。
中断响应:对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。发生中断是,CPU暂停执行当前的程序,而专区处理中断。这个由硬件对中断请求作出反应的过程,称为中断响应。一般说来,中断响应顺序执行下述三步动作

1. 中止当前程序的执行;
2. 保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);
3. 从中断控制器取出中断向量,转到相应的处理程序。

通常CPU在执行完一条指令后,立即检查有无中断请求。如果有,则立即做出响应。

当发生中断时,系统作出响应,不管是来自硬件(如来自时钟或者外部设备)、程序性中断(执行指令导致“软件中断”——Software interrupts),或者来自意外事件(如访问页面不在内存)。
如果当前CPU的执行优先级低于中断的优先级,那么它就中止对当前程序下条指令的执行,接收该中断,并提升处理的执行级别(一般与中断优先级相同),以便在CPU处理当前中断时,能屏蔽其它同级的或低级的中断,然后保存断点现场信息,通过取得的中断向量转到响应的中断处理程序的入口。

0 0