版权归原作者所有,如有侵权,请联系我们

[科普中国]-周期性中断

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

中断

指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。

计算机中的中断可分成内部中断、外部中断和软件中断3种;

内部中断是由CPU的某种内部因素引起的,通常称为异常(Exception)。产生异常的原因有算术操作的异常(如上溢出和下溢出)、程序的错误、非法指令和越权操作、访存中的异常(如虚存中的页面失效)等,它们是在程序执行时由于指令或数据操作出错或导常而产生的中断。

外部中断是由中断信号引起的中断,用于处理各种定时操作和其他外围设备的操作。输入/输出中断是由输入/输出设备产生的外部中断。外部中断可进一步分为可屏蔽中断和不可屏蔽中断。

由自陷(Trap)指令引起的中断是软件中断,用于提供操作系统服务,有时也称为系统调用。软件中断对处理机的影响类似于硬件中断。1

外部中断引起的周期性中断查询方式查询方式是通过执行输入/输出查询程序来完成数据传送的,工作原理是:当CPU启动外设工作后,不断地读取外设的状态信息进行测试,查询外设是否准备就绪,如外设准备好,则可以进行数据传送;否则,CPU继续读取外设的状态信息进行查询等待,直到外设准备好。

采用程序查询方式进行数据传送时,实际上在外设准备就绪之前,CPU一直处于等待状态,致使CPU的利用率较低。倘若CPU按这种方式与多个外设传送数据时,就需要周期性的依次查询每个外设的状态,浪费的时间就更多,CPU的利用率就更低。因此,这种方式适合于工作不太繁忙的系统。2

中断传送方式中断传送方式是指当外设需要与CPU进行信息交换时,由外设向CPU发出请求信号,使CPU暂停正在执行的程序,转去执行数据的输入/输出操作,数据传送结束后,CPU再继续执行被暂停的程序。查询传送方式是由CPU来查询外设的状态,CPU处于主动地位,而外设处于被动地位。中断传送方式则是由外设主动向CPU发出请求,等候CPU处理,在没有发出请求时,CPU和外设都可以独立进行各自的工作。目前的微处理器都具有中断功能,而且已经不仅仅局限于数据的输入/输出,而是在更多的方面有重要的应用。例如实时控制、故障处理以及BIOS和DOS功能调用等。有关中断技术的具体内容将在下一节做介绍。

中断传送方式的优点是:CPU不必查询等待,工作效率高,CPU与外设可以并行工作;由于外设具有申请中断的主动权,故系统实时性比查询方式要好得多。但采用中断传送方式的接口电路相对复杂,而且,每进行一次数据传送就要中断一次CPU。CPU每次响应中断后,都要转去执行中断处理程序,都要进行断点和现场的保护和恢复,浪费了很多CPU的时间。故这种传送方式一般适合于少量的数据传送。对于大批量数据的输入/输出,可采用高速的直接存储器存取方式,即DMA方式。

调度引起的周期性中断时间片轮转法在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把 CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几 ms 到几百 ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。

多级反馈队列调度算法调度算法的实施过程如下所述。

(1) 应设置多个就绪队列, 并为各个队列赋予不同的优先级。 第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第 i+1 个队列的时间片要比第 i 个队列的时间片长一倍。图是多级反馈队列算法的示意。

(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按 FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第 n 队列后,在第 n 队列中便采取按时间片轮转的方式运行。

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第 1~(i-1)队列均空时,才会调度第 i 队列中的进程运行。如果处理机正在第 i 队列中为某进程服务时,又有新进程进入优先权较高的队列(第 1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机, 即由调度程序把正在运行的进程放回到第 i 队列的末尾,把处理机分配给新到的高优先权进程。3

基于周期性中断源的多串口管理在微机系统和嵌入式系统中, 处理器本身中断引脚有限, 经常存在多个外部硬件中断源共享一条中断线的情况。 由于各中断源中断产生的时间彼此独立, 必须采用软件或硬件方法对多中断源优先权排列和多级中断嵌套等问题进行管理。 目前广泛使用的多中断源管理方式主要有两种:软件查询排序和硬件排序。 软件查询排序的特点是: 查询次序即优先权排序, 最先被询问的中断请求具有最高优先级。 软件查询的优点是节省硬件,修改方便, 只要改变程序中的查询次序即可。 缺点是由开始查询至转到真正的服务程序入口时间长, 在中断源较多的情况下执行速度较慢;并且由于中断产生的时间间隔不确定性, 在中断程序执行后的一段时间内如果有中断请求, 可能会造成中断的设备判断混乱, 从而引起中断冲突、丢失, 甚至使得设备无法正常工作。 硬件排序一般采用优先权的编码电路, 对各种外部硬中断进行排队, 还有菊花链式硬件排序电路, 以及中断控制集成芯片 8259A, 但是硬件排序的方法存在中断服务程序编写复杂,中断次数较多的缺点 。

本研究针对异步串行通信的特点, 使用一个周期信号代替多个外部中断源作为中断信号, 称为周期性中断源。 系统中通过在周期性中断源的服务程序中对多个串行通道进行软件查询, 从而减少了中断产生的次数, 降低了处理器的负荷, 避免了数据的重复读取, 并且满足多路数据的无漏检测和服务。4