中断(广义的)是指程序执行过程当中,遇到急需处理的事件时,暂时停止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其余程序执行的过程。
操做系统是“中断驱动”的;换言之,中断是激活操做系统的惟一方式。
中断或异常处理执行的代码不是一个进程,而是内核控制路径,它表明异常或中断发生时正在运行的当前进程在内核态执行一个独立的指令序列。内核控制路径比进程更“轻”,其上下文信息比进程上下文信息少得多。而上下文切换后CPU执行的是另外一个用户进程。
根据中断源不一样,中断事件处理原则为:
- 处理器硬件故障中断:由处理器、内存储器、总线等硬件故障引发
会经过中断请求向CPU请求处理
处理原则为:保护现场,中止设备,中止CPU,向操做员报告并对故障形成的破坏进行估计和恢复,等待人工干预(复位、设置、替换等)
不一样用户每每有不一样处理要求,借助于信号机制,操做系统可将所捕获的中断事件原封不动的转交给应用程序自行处理。
语法错误:编译程序发现并报错
逻辑错误:测试程序发现并报错
程序运行过程当中产生的异常:
除数为零、操做数溢出等算术异常:简单处理,报告用户;也能够由用户编写中断续元程序处理
非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程
终止进程指令:终止进程
虚拟地址异常:调整内存后从新执行指令
- 访管中断:处理器请求分配外设、请求I/O等时,执行访管指令请求OS服务引发(系统调用经过访管指令和中断机制实现)
处理流程:(1)程序执行访管指令,并经过适当方式指明系统调用号
(2)经过中断机制进入访管中断处理程序,现场信息被保护到核心栈,按功能号实现跳转
(3)经过系统调用入口地址表找到相应中断服务例程的入口地址
(4)执行中断服务例程,正常状况下载结束后返回系统调用的下一条指令继续执行
- I/O中断事件:来源于外围设备报告I/O状态的中断事件
I/O操做正常完成:把等待传输的下一个进程设置为就绪态,让它占有设备和通道并启动数据传输
I/O操做发生故障:先向设备发命令索取状态字,分析产生故障的确切缘由,再进行复执或请求人工干涉
I/O操做发生异常:分析状况采起相应措施,向操做员报告。
设备报到、设备结束:调整设备表
绝对时钟:硬件时钟,按照固定周期发出中断。系统设备绝对时钟寄存器,开机后定时地把寄存器内容加1(可根据开机时间推测当前时间)
间隔时钟:可经过系统调用设置间隔时钟挂起、经过程序设置间隔时钟寄存器的初值,每一个时间切换点将其内容减1,为0时产生间隔时钟中断,唤醒挂起的进程
中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分
中断响应和中断处理的结果就是调出相应的中断服务例程并执行
中断响应由硬件子系统完成;中断处理由软件子系统完成
在指令执行周期最后增长一个微操做,以响应中断
计算机系统中发现并响应中断/异常的硬件装置称为中断装置
因为中断源的多样性,硬件实现的中断装置有多种,分别处理不一样类型的中断,这些中断装置因计算机而异,一般有:
- 处理器内的异常:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷阱
处理器外中断响应和处理器内异常响应的区别:一般在指令执行结束时查询有无中断请求,有则当即响应;而异常发生在指令执行过程当中,一旦发现则立刻处理
- 请求OS服务的系统异常:处理器执行陷入指令时直接触发,相应机制称为系统陷阱
陷阱与系统陷阱是指令的逻辑和实现线路的一部分
执行指令出现异常后,会根据异常状况转向操做系统的异常处理程序;出现虚拟地址异常后,须要从新执行指令,每每越过陷阱独立设置页面异常处理程序;执行陷入指令后,越过陷阱处理,触发系统陷阱,激活系统调用处理程序
多重中断处理:
不一样类型的操做系统有不一样的中断响应优先级(当计算机同时检测到多个中断时, 中断装置响应中断的顺序,由中断查询程序或硬件判优电路决定),当有多个要响应的中断源时,有如下两种方法决定选哪个:
- 软件方法:编写一个查询程序,依据优先级顺序从高到低进行查询,一旦发现中断请求则转入相应中断事件处理程序
- 硬件方法:根据排定的优先级顺序作一个硬件链式排队器,当产生中断事件时屏蔽全部比它优先级低的中断
当计算机响应中断后,在中断处理过程当中,能够再响应其余中断。操做系统是性能攸关程序系统,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在必定层数内(如3层)
中断处理优先级----由中断服务程序各自的中断屏蔽字来动态设定,反映本中断与其它中断间的关系。
单重中断不容许在中断处理时被新的中断打断,于是直到中断返回前才会开中断。所以单重中断系统无需设置中断屏蔽字。
多重中断处理处在开中断状态时,可被新的处理优先级更高的中断打断,从而使中断能够嵌套处理,中断的嵌套处理改变了中断处理的次序,先响应的有可能后处理
- 串行处理:XY两个中断同时发生,先响应X,因Y被屏蔽,继续处理X,再响应并处理Y
- 嵌套处理:XY两个中断同时发生,根据中断优先级,先响应X;因未屏蔽Y,再响应并处理Y;Y处理完成后再处理X。
- 即时处理:在运行中断处理程序时,若是出现程序性中断事件则代表中断处理程序有异常,应马上响应并进行处理


嵌套中断处理举例:
利用栈实现了中断的嵌套处理。
图中,中断处理优先级的顺序是:3# > 2# > 1#
1# 对 2# 开放(不屏蔽)
2# 对 3# 开放(不屏蔽)
综上,决定中断处理次序的因素:
- 中断屏蔽可使中断装置不响应某些中断
- 中断响应优先级决定了中断装置响应中断的次序
例如一种可能的处理次序为:处理机硬件故障中断事件、自愿性中断事件、程序性中断事件、时钟中断等外部中断事件、输入输出中断事件、重启动和关机中断事件