程序中断一般简称中断,是指CPU在正常运行程序的过程当中,因为预选安排或发生了各类随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。html
2、80x86微处理器的中断 80x86微处理器的中断类型通常分为2类,即因为执行某些指令引发的软中断和由处理器之外其余控制电路发出中断请求信号引发的硬中断。 CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。post
中断的通常过程:性能
主程序只是在设备A,B,C数据准备就绪时,才去处理A,B ,C,进行数据交换。在速度较慢的外围设备准备本身的数据时,CPU照常执行本身的主程序 。在这个意义上说,CPU和外围设备的一些操做是并行地进行的,于是同串行进行的程序查询方式相比,计算机系统的效率是大大提升了。以下图:url
实际的中断过程还要复杂一些,下图示出了中断处理过程的详细流程图.当CPU执行完—条现行指令时,若是外设向CPU发出中断请求、那么CPU在知足响应条件的状况下,将发出中断响应信号,与此同时关闭中断(“中断屏蔽”触发器置“1”),表示CPU再也不受理另外—个设备的中断。这时、CPU将寻找中断请求源是哪一个设备。并保存CPU本身的程序计数器(Pc)的内容.而后,它将转移处处理该中断源的中断服务程序.CPU在保存现场信息,设备(如文换数据)之后.将恢复现场信息.在这些动做完成之后,开放中断(“中断屏蔽”触发器置‘o”),并返网到原来被中断的主程序的下一条指令。操作系统
(1) 尽管外界中断请求是随机的,但CPU只有在当前一条指令执行完毕后,即转入公操做时才受理设备的中断请求,这样才不致于使当前指令的执行受到干扰。公操做是指一条指令执行结束后CPU所进行的操做,如中断处理、直接内存传送、取下条指令等 。外界中断请求信号一般存放在接口中的中断源锁存器里,并经过中断请求线连至CPU,每当一条指令执行到末尾,CPU便检查中断请求信号。若中断请求信号为“1”,则CPU转入“ 中断周期”,受理外界中断。(2) 为了在中断服务程序执行完毕之后正确地返回到原来主程序被中断的断点(PC内容)而继续执行主程序,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态(包括寄存器的内容和一些状态标志位)都保存到堆栈中去。这些操做叫作保存现场。(3) 当CPU响应中断后,正要去执行中断服务程序时,可能有另外一个新的中断源向它发出中断请求。为了避免致形成混乱,在CPU的中断管理部件中必须有一个中断屏蔽触发器,它能够在程序的控制下置“1”(设置屏蔽),或置“0”(取掉屏蔽)。只有在中断屏蔽标志为“0”时,CPU才能够受理中断。当一条指令执行完毕CPU接受中断请求并做出响应时,它一方面发出中断响应信号INTA,另外一方面把中断屏蔽标志置“1”,即关闭中断。这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完毕之后,它才从新使中断屏蔽标志置“0”,即开放中断,并返回主程序。所以,中断服务程序的最后必须有两条指令,即开中断指令和返主指令,同时在硬件上要保证返主指令执行之后才受理新的中断请求。(4) 中断处理过程是由硬件和软件结合来完成的。如在前图中,中断周期由硬件实现,而中断服务程序由机器指令序列实现。后者除执行保存现场、恢复现场、开放中断并返回主程序任务外,对要求中断的设备进行服务,使其同CPU交换一个字的数据,或做其余服务。.net
轮询(Polling)I/O方式或程序控制I/O方式,是让CPU以必定的周期按次序查询每个外设,看它是否有数据输入或输出的要求,如有,则进行相应的输入/输出服务;若无,或I/O处理完毕柏,CPU就接着查询下一个外设。设计
所需硬件:外设接口提供状态端口、数据端口3d
软件机制:应用程序必须定时查询各个接口的状态端口,判断是否须要输入、输出数据,若是须要,则经过数据端口进行数据操做。htm
特色:CPU经过执行指令主动对外部设备进行查询,外部设备处于被动地位。blog
上图为通常过程。
程序控制方式:
硬件的速度指标:因为“程序控制方式”彻底采用软件的方式对外设接口进行控制,因此它的硬件操做只是普通的端口读写,并没有特别之处,其速度指标由总线传输速度、端口的响应速度共同决定。
对于这种外设控制方式,速度指标关键在于软件。
中断处理方式:
中断处理方式自己所做的原子操做解释和程序控制方式是一致的。
只不过由于加入了中断请求和响应机制,对状态端口的读取变成了在中断响应过程当中对中断号的读取,对状态端口的判断变成了对中断入口地址的肯定。
从本质上来讲,中断处理方式和程序控制方式自己的速度指标一致,没有大的差异。
程序控制方式:
因为硬件不支持中断方式,所以操做系统把CPU控制权交给应用程序后,只要应用程序不交还CPU控制权,操做系统就始终不能恢复对CPU的控制(无定时中断)。应用程序与操做系统都是软件模块,操做系统属于核心模块,它们之间存在交接CPU控制权的关系。正是因为这样的关系,一旦使用对外设的“程序控制方式”时,应用程序出现死锁,则操做系统永远没法恢复对系统的控制。应用程序的故障经过外设控制方式波及到做为核心模块的操做系统,所以,根据关联可靠性指标的计算可知,“程序控制方式”的关联可靠性指标很低。
中断处理方式:
因为提供定时中断,操做系统能够在应用程序当前时间片结束后经过中断服务程序从新得到对CPU的控制权。应用程序的故障不会波及到操做系统,所以,中断处理方式的关联可靠性指标高。
程序控制方式:
因为全部应用程序中都包含对端口的操做,一旦硬件接口的设计发生变化,则全部应用程序都必须进行修改,这会使修改费用升高不少倍。所以,程序控制方式会使相关硬件模块的局部修改指标相对较低。
中断处理方式:
应用程序不直接操做端口,对端口的操做是由中断服务程序来完成的。若是某个硬件接口的设计发生了变化,只须要修改它相关的中断服务程序便可。所以,中断处理方式使得相关硬件模块的局部修改指标较高。
“程序控制方式”(CPU查询方式)在早期的计算机系统中可以知足应用需求;可是随着外部设备种类的增多、速度差别的加大,这种方式逐渐成为系统性能提升的障碍。它的生命期只限于早期计算机阶段,由于当时外部设备少,且都是低速设备,到8位机出现之后,这种外设控制方式(体系结构)被淘汰。
“中断处理方式”(外设请求方式)可以协调CPU与外设间的速度差别,可以协调各类外设间的速度差别,提升系统的工做效率(速度指标)。使应用程序与外设操做基本脱离开来,下降了程序的设备相关性(关联可靠性指标、局部修改指标)。虽然目前某些快速设备相互间的通讯没有经过CPU,也没有使用中断处理方式,可是对于慢速设备、设备故障的处理来讲,中断处理方式仍然是最有效的。不管未来计算机系统中的元件怎样变化,只要存在慢速设备与快速CPU之间的矛盾,使用中断处理方式都是适合的。即使不使用中断服务程序,中断的概念也会保持好久。在短时期内,计算机系统还没法在全部领域离开人工交互操做,人的操做速度必定比机器的处理速度慢,所以慢速设备将仍然保持存在(但这不是慢速设备存在的惟一缘由)。正由于存在这样的需求,中断处理方式具备较长的生命期。
(转载自:http://www.cnblogs.com/jhxk/articles/1893314.html)