欢迎来到天天文库
浏览记录
ID:44962620
大小:151.50 KB
页数:24页
时间:2019-11-06
《第8章 中断技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章中断技术8.1中断的概念8.1.1概述中断是现代计算机技术领域里的一项非常重要的技术。中断是为快速改变程序的运行环境而提供的一种机制。程序控制的转换是由计算机内部事件或者是外部硬件事件启动的。所谓中断,其实是CPU在执行当前程序的过程中,由于某种随机出现的外围设备的请求,使得CPU暂时停止正在执行的程序(即中断),转去执行为外围设备服务的程序。当为外围设备服务的程序执行完后,CPU再返回到暂时停止正在执行的程序处(即断点)继续执行其原来的程序。这种中断就是通常所说的外部中断。Pentium的中断:有2个硬件中断INTR、NMI,和3个软件中断INT、INTO、INT3。外部中断和内部
2、软件中断就构成了一个完整的中断系统。发出中断请求的来源非常多,不管是由于外部事件而引起的外部中断、还是由于软件执行过程而引发的内部软件中断,凡是能够提出中断请求的设备或异常故障,均被称其为中断源。Pentium把中断分成三种类型。①中断:②异常:③程序异常:1.实模式下的中断操作当微处理器执行完当前指令之后,它就按给定的顺序来检查下面一些条件,以便确定一个中断是否有效。①检查指令的执行;②检查是否单步执行的指令;③检查是不是一条不可屏蔽中断NMI;④检查浮点部件的段是否越界;⑤检查是不是一条可屏蔽中断INTR;⑥检查是不是一条调用中断过程指令INT。如果在检查的过程中发现一个或多个中断条件
3、与检查的条件相符合,就按顺序执行下列操作步骤:(1)将标志寄存器的内容下压入栈。(2)清除标志寄存器中的允许中断标志IF位和自陷标志TF位。(3)将代码段寄存器CS的内容下压入栈。(4)将指令指针寄存器IF的内容下压入栈。(5)将中断向量的内容取出,并将其送入指令指针寄存器IF和代码段寄存器CS.2.保护模式下的中断操作保护模式下的中断操作与实模式下的中断操作几乎是一样的,但二者的中断向量表有所不同。1.在实模式下,使用的是中断向量。2.而在保护模式下,使用的是保存在中断描述符表IDT中的中断描述符。8.1.2中断系统中断系统的作用(1)实现分时操作:(2)处理异常事故:(3)实现实时操作
4、:2.中断响应和中断处理过程不论是硬件中断还是软件中断,都是通过调用中断服务程序或中断管理程序为中断服务。系统内存在着多个中断源,必须为每个中断源,预先编好中断处理程序并且将其存放到主存储器中,当CPU响应中断之后,就会调出相应的中断服务程序对中断进行处理。对于多个中断请求,通常的做法是将中断源按优先级别的高低将其分成几级,中断系统则是根据中断源级别的高低给以响应。当有多个“中断请求”存在时,中断系统是按中断源优先级别的高低响应中断,而在执行中断处理程序时,能被更高优先级的中断源所中断,而不能被同级或更低级的中断源所中断。被当前程序所屏蔽的中断源不能向CPU发出中断请求。8.2异常与中断中
5、断是在程序执行期间随着硬件信号一起而随机出现。而异常则是在执行引起异常的指令时产生。不论是中断还是异常均有两个中断源:8.2.1中断源分类1.中断(1)可屏蔽中断INTR。可屏蔽中断是硬件中断,是从Pentium的管脚INTR输入端上接收的中断请求信号(2)不可屏蔽中断NMI不可屏蔽中断也是硬件中断,是从Pentium的NMI管脚上接收到的输入信号2.异常异常是由微处理器检测到的。根据报告异常的方式以及是否支持重新启动引起异常的指令,可将异常分为故障、自陷和异常终止三种类型。(1)故障(faults)是指在该指令中检测到异常之前,在指令边界处报告的异常。(2)自陷(traps)是指在指令中
6、检测到异常之后马上就在指令边界处报告的异常。(3)异常终止(aborts)是指不总是报告引起异常的指令的位置,且不允许重新启动引起异常的程序。3.程序异常Pentium系统内的溢出中断INTO、INT3(中断类型3)、INTn(中断类型n),以及按界检查数组下标BOUND指令等,均可触发异常,虽然也把这些指令称之为“软中断”,但是,Pentium是把它们当作异常来处理的。8.2.2中断控制器可编程中断控制器82C59A负责对Pentium微处理器系统的中断进行管理。一个单独的82C59A中断控制器可从多达8个外部中断源中接受中断请求。而若把几个82C59A芯片串接起来,则它们所能接收的中断
7、请求可达64个之多。82C59A首先分辨出各现役中断的优先级,然后中断微处理器的操作,并把一个用于识别中断源的代码送给微处理器。8.2.3异常和中断向量Pentium微处理器把每个不同类型的中断或异常与识别号一一对应联系起来,以便于识别,把这个识别号称之为向量。为不可屏蔽中断和异常分配的向量在0~31之间。向量号说明0除法错1调试异常2不可屏蔽中断3断点4被检测出的INTO上溢5超出了BOUND范围6无效操作码7协同处理
此文档下载收益归作者所有