田永红
摘要:在现代计算机系统中,中断系统不只是I/O系统,也是整个计算机系统必不可少的重要组成部分。中断响应的次序是固定的,中断处理的次序可以与之保持一致,也可通过修改屏蔽字来灵活地改变,文章针对三种典型的问题,提出解决思路和方法,阐述利用中断屏蔽技术修改中断优先级。
关键词:中断级屏蔽位;中断响应;中断处理
中图分类号:TP316文献标识码:A文章编号:1006-8937(2011)22-0015-02
当CPU与外设交换信息时,如果采用查询的方式,则CPU要浪费很多时间去等待外设,为了解决快速CPU与慢速外设之间的矛盾,一方面提高外设的工作速度,另一方面发展了中断的概念。中断概念的出现,是计算机系统结构设计中的一个重大变革。中断是指CPU终止正在执行的程序,转去处理随机提出的请求,待处理完后,再回到原先被打断的程序继续恢复执行的过程。响应和处理各种中断的软、硬件总体称为中断系统。中断系统是整个计算机系统必不可少的重要组成部分。它对程序的监视和跟踪、人机联系、故障处理、多道程序和分时处理、实时处理、目态程序和操作系统的联系、I/O处理以及多处理机系统中各机的联系等都起着重要的作用。中断响应的次序是固定的,中断处理的次序可以与之保持一致,也可通过修改屏蔽字来灵活地改变,文章针对三种典型的问题,提出解决思路和方法,阐述利用中断屏蔽技术修改中断优先级。
1确定中断屏蔽字
引起中断的各种事件称为中断源。在中、大型计算机系统中,中断源个数多达几十甚至几百个,为每个中断源单独形成入口,显然很困难,也没有这种必要,为简化中断处理程序入口地址形成硬件,将中断源归成几类,每一类中各中断源性质比较接近,对每一类给定一个中断处理程序入口,再由软件转入对相应的中断源进行处理。中断的特点是具有随机性,常常会同时发生多个中断请求,为解决这个问题,需要根据中断的性质、紧迫性、重要性以及软件处理的方便性把中断分成不同的级别,按照优先次序进行响应和处理。在现代计算机系统中,中断优先级一般是由硬件的排队器实现的,因此,当有多个中断源同时请求中断服务时,中断响应次序的高低是固定死的。处理机在执行某一个级别的中断源的中断服务程序时,较之同级的或低级的中断请求不能中断其处理,只有较之高级的中断请求可以中断其处理。为了能由操作系统灵活改变实际的中断处理次序,设置了中断级屏蔽位寄存器,以决定某级中断请求能否进入中断响应排队器,只有能进入排队器的中断请求,才有机会得到响应,从而就可改变中断实际处理完的次序,PSW中包含有中断级屏蔽位字段。因此,引出了第一种典型的问题:给定中断响应次序和希望的中断处理次序,怎么确定各级中断的屏蔽字,方法是:某级中断的屏蔽字中,自身及处理次序较之低的各级中断需要屏蔽。需要特别注意的是,有关中断级屏蔽位“0”、“1”是屏蔽还是“开放”中断,不同机器有着不同的定义,不要将“0”、“1”的含义搞反了。现举例说明,假设机器有5级中断,中断响应优先次序为1→2→3→4→5,令“0”对应于屏蔽,“1”对应于开放,若希望中断处理次序也为1→2→3→4→5,则只需将各级中断处理程序的中断级屏蔽位设置成如表1所示的即可。
若希望其实际的中断处理次序为1→4→5→2→3,则只需将各级中断处理程序的中断级屏蔽位设置成如表2所示的即可。
2确定中断处理次序
第二种典型的问题是:给定中断响应次序和各级中断的屏蔽字,判断出实际的中断处理次序,方法是:中断屏蔽字中全部都屏蔽的中断处理次序是最优先的,只屏蔽自身的中断处理次序是最靠后的,任何一级中断的处理次序处于其中断屏蔽字中被屏蔽的各级中断之前和处于未被屏蔽的各级中断之后。例如可以根据表2中级屏蔽位的设置,首先判断出1的处理次序是最优先的,3的处理次序是最靠后的,而在2的屏蔽字中,4和5是未被屏蔽的,因此,2的处理次序应在4和5之后,在4的屏蔽字中,5是被屏蔽的,因此,4的处理次序应在5之前,所以,实际的处理次序是1→4→5→2→3。
3CPU程序运行过程图
中断的实质是程序的切换,通过画出CPU程序运行过程图可以比较直观地了解程序的切换过程,因此,第三种典型的问题是:给定中断响应次序,各级中断的处理次序和不同时刻中断请求情况,要求画出CPU的程序运行过程图,要点如下:
①纵向为时间轴,横向依次为中断请求,用户程序,1级中断处理程序,2级中断处理程序……。
②用户程序运行时,其现行PSW的中断级屏蔽位为全部开放,不能屏蔽任何中断请求,也就是说所有的中断请求都能进入排队器排队,按中断响应次序,进入其中级别最高的中断处理程序执行。
③进入某级中断处理程序后,按照中断处理次序,中断屏蔽字被设成该级中断应有的状态,如果此时还有未响应的中断请求且未被屏蔽,则转入到其中最高级的中断处理程序执行。表现在程序运行过程图上就是经过一个短暂的停留后,随即转入到处理次序高的程序执行。正在执行某级中断处理程序时,若有新的中断请求且未被屏蔽,则转入到其中最高级的中断处理程序执行。
④任何中断处理程序执行完毕后,要返回到被其中断的程序执行。
需要特别注意的是,一旦转入到任何程序执行,中断屏蔽字随之改变。针对上面所举的例子,假设在运行用户程序时,同时出现第2、4级中断请求,而在处理第2级中断未完成时,又同时出现第1、3、5级请求,则根据上面的要点,画出中断处理次序为1→4→5→2→3的程序运行过程示意图如图1所示。
在图1中,短横线为交换PSW的时间段。通过这个图,可以看出,中断处理次序是由中断请求,中断屏蔽和中断响应次序三方面综合决定的。
4结语
本文阐述了中断响应的次序是由中断响应排队器硬件确定的固定次序,而中断处理的次序可以与之保持一致,也可通过修改屏蔽字来灵活改变。
参考文献:
[1] 李学干.计算机系统结构[M].西安:西安电子科技大学出版社,2006.
[2] 郑纬民,汤志忠.计算机系统结构[M].北京:清华大学出版社,1998.
[3] 李学干.《计算机系统结构》学习指导与题解[M].西安:西安电子科技大学出版社,2001.