- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章中断系统-北京大学微处理器研究
第 13 章 中断系统 本章主要内容 (1)中断及中断处理的基本概念 (2)80x86实模式中断系统 (3)可编程中断控制器8259A 13.1 基本概念 13.1.1 中断的定义 在程序运行时,系统外部、内部或现行程序本身若出现紧急事件,处理器必须立即强行中止现行程序的运行,改变机器的工作状态并启动相应的程序来处理这些事件,然后再恢复原来的程序运行,这一过程称为中断。 13.1.2 中断响应和处理过程 CPU在执行每条指令的适当时刻,检测中断请求信号。 若发现中断请求信号有效,对于可屏蔽中断还必须CPU开放中断,则在下一机器周期进入中断响应周期。 进入中断响应周期后,中断响应和处理的过程如下: 1. 关中断 CPU在响应中断时,发出中断响应信号INTA,同时内部自动地关中断,以禁止接受其他的中断请求。 2. 保存断点 把断点处的指令指针IP值和CS值压入堆栈,以使中断处理完后能正确地返回主程序断点。 3. 识别中断源 CPU要对中断请求进行处理,必须找到相应的中断服务程序的入口地址,这就是中断的识别。 4. 保护现场 为了不使中断服务程序的运行影响主程序的状态,必须把断点处有关寄存器(指在中断服务程序中要使用的寄存器)的内容以及标志寄存器的状态压入堆栈保护。 5. 执行中断服务程序 在执行中断服务程序中,可在适当时刻重新开放中断,以便允许响应较高优先级的中断。 6. 恢复现场并返回 即把中断服务程序执行前压入堆栈的现场信息弹回原寄存器,然后执行中断返回指令,从而返回主程序继续运行。 在上述中断响应及处理的6项操作中,前3项是中断响应过程,一般由中断系统硬件负责完成; 后3项是中断处理过程,通常是由用户或系统程序设计者编制的中断处理程序(软件)负责完成。 针对一个具体的系统或机型,中断服务程序设计者应该清楚该系统在中断响应时,中断响应硬件完成了哪些操作(如程序状态字PSW是否已被压入堆栈),还需中断处理软件(中断服务程序)完成哪些操作。 13.1.3 中断优先级和中断嵌套 1. 中断优先级 在实际系统中,多个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理,这时CPU必须确定服务的次序,即根据中断源的重要性和实时性,照顾到操作系统处理的方便,对中断源的响应次序进行确定。 这个响应次序称为中断优先级(priority)。 通常,可用软件查询法确定中断优先级,也可用硬件组成中断优先级编码电路来实现。 现代PC机中多采用可编程中断控制器(如8259A)来处理中断优先级问题。 (1) 软件查寻法确定中断优先级 采用软件查询法解决中断优先级只需要少量硬件电路。如图13.1所示,系统中有多种外部设备,将这些设备的中断请求信号相“或”,从而产生一个总的中断请求信号INTR发给CPU。 当CPU响应中断请求进入中断处理程序后,必须在中断处理程序的开始部分安排一段带优先级的查询程序,查询的先后顺序就体现了不同设备的中断优先级,即先查的设备具有较高的优先级,后查的设备具有较低的优先级。 一般来说总是先查速度较快或是实时性较高的设备。 软件查询的流程如图13.2所示。 (2) 菊花链优先级排队电路 菊花链优先级排队电路是一种优先级管理的简单硬件方案。它是在每个设备接口设置一个简单的逻辑电路,以便根据优先级顺序来传递或截留CPU发出的中断响应信号INTA,以实现响应中断的优先顺序。 典型的菊花链优先级结构如图13.3(a) 所示。 2. 中断嵌套 当CPU正在执行优先级较低的中断服务程序时,允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。 此时,CPU首先为级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低的那一级,继续为它进行中断服务。 如图13.4所示。 中断嵌套的深度(中断服务程序又被中断的层次)受到堆栈容量的限制。 所以在编写中断服务程序时,必须要考虑有足够的堆栈单元来保留多次中断的断点信息及有关寄存器的内容。 13.2 80x86实模式的中断系统 13.2.1 中断的分类 中断分类的方式很多。 根据进入中断的方式可分为自愿中断和强迫中断。 根据其重要性可分为可屏蔽中断和不可屏蔽中断。 根据中断源的位置可分为内部中断和外部中断等等。 如图13.5所示。 关于中断分类的补充说明 为了支持多任务和虚拟存储器等功能,80386及以上CPU 把外部中断称为“中断”(interrupt),把内部中断称为“异常”(exception) 。与8086一样,它也最多处理256种中断和异常。 根据引起异常的程序是否可被恢复和恢复点的不同,又把异常分为三类: 故障(fault) 陷阱(trap) 中止(abort)
原创力文档


文档评论(0)