中断在操作系统中的应用

上传人:豆浆 文档编号:11368386 上传时间:2017-08-16 格式:PPT 页数:27 大小:2.38MB
返回 下载 相关 举报
中断在操作系统中的应用_第1页
第1页 / 共27页
中断在操作系统中的应用_第2页
第2页 / 共27页
中断在操作系统中的应用_第3页
第3页 / 共27页
中断在操作系统中的应用_第4页
第4页 / 共27页
中断在操作系统中的应用_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《中断在操作系统中的应用》由会员分享,可在线阅读,更多相关《中断在操作系统中的应用(27页珍藏版)》请在金锄头文库上搜索。

1、,中断在操作系统中的应用,中 断 实 现 的 机 制,系 统 调 用 与 中 断的 关 系,硬 件 中 断 的 例 子 及 其 工 作 原 理,一、,二、,三、,中断的定义:,在CPU执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需暂停正在执行的程序,转去处理该事件(执行中断服务程序),并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断。断点处是指返回主程序时执行的第一条指令的地址。,中断源:指能够引起中断的原因或发出中断申请的来源。主要有以下几类:,(1)外部设备请求中断。一般的外部设备如键盘、磁盘驱动器、磁带机、打印机等在工作告一段落后发出中断请求,要求CPU

2、为它服务。(2)实时时钟请求中断。如定时/计数器,先有CPU发出指令,让时钟电路开始计时工作,待规定的时间到,时钟电路发出中断申请,CPU转入中断服务程序进行中断处理。(3)故障请求中断。当出现电源掉电、存储出错或溢出故障时,发出中断请求,CPU转去执行故障处理程序,如启动备用电源、报警等。(4)异常。由于CPU执行指令引起的中断,中断的分类: 1.按中断的性质来划分,则系统中的中断可分为:可屏蔽中断和不可屏蔽中断。对不可屏蔽中断,程序员不能控制它,系统肯定会立即响应的,而对于可屏蔽中断,汇编语言程序员可以通过指令CLI和STI来控制对它们的响应。 2.按中断源来划分,则系统中的中断又可分为:

3、硬件中断和软件中断。对于硬件中断,程序员不能控制它,它们基本上是随机产生的,而对于软件中断,汇编语言程序员可通过指令INT和INTO来有目的安排它们的。,中断请求,中断排队,中断响应,中断处理,中断返回,中断处理过程,中断请求是由中断源向CPU发出中断请求信号。软件中断源是在CPU内部由中断指令或程序出错直接引发中断;硬件中断源必须通过专门的电路将中断请求信号传送给CPU,CPU也有专门的引脚接收中断请求信号。例如,8086/8088 CPU用INTR引脚(可屏蔽中断请求)和NMI引脚(非屏蔽中断请求)接收硬件中断请求信号。一般外设发出的都是可屏蔽中断请求,中断排队:通常,系统中有多个中断源,

4、当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。,1中断优先级 中断请求是随机发生的,当系统具有多个中断源时,有时会同时出现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次序称为中断优先级。对于不同级别的中断请求,一般的处理原则是:(1) 不同优先级的多个中断源同时发出中断请求

5、,按优先级由高到低依次处理。 (2) 低优先级中断正在处理,出现高优先级请求,应转去处理高优先级请求,服务结束后再 返回原优先级较低的中断服务程序继续执行。(3) 高优先级中断正在处理,出现低优先级请求,可暂不响应。(4) 中断处理时,出现同级别请求,应在当前中断处理结束以后再处理新的请求。,2中断优先级的确定在微机系统中通常用三种方法来确定中断源的优先级别,即软件查询法、硬件排队电路法和专用中断控制芯片法。,1) 软件查询法 软件查询法需要简单的硬件电路支持。以8个中断源为例,其硬件电路如图所示,将8个外设的中断请求组合起来作为一个端口(中断寄存器),并将各个外设的中断请求信号相或,产生一个

6、总的INT信号。,软件查询法的硬件电路,软件查询方式的流程图,2) 硬件排队电路 采用硬件排队电路法,各个外设的优先级与其接口在排队电路中的位置有关。常用的硬件优先权排队电路有链式优先权排队电路、硬件优先级编码加比较器的排队电路等。下图给出了一个链式优先级排队电路。图中,当响应信号沿链式电路进行传递时,最靠近CPU并发出中断请求的接口将首先拦截住响应信号,CPU进入相应外设的中断处理程序,在服务完成后,该外设撤消其中断请求,解除对下一级外设的封锁。,3中断嵌套 CPU在执行低级别中断服务程序时,又收到较高级别的中断请求,CPU暂停执行低级别中断服务程序,转去处理这个高级别的中断,处理完后再返回

7、低级别中断服务程序,这个过程称为中断嵌套,如图所示。,一般CPU响应中断请求后,在进入中断服务程序前,硬件会自动实现关中断,这样,CPU在执行中断服务程序时将不能再响应其他中断请求。为了实现中断嵌套,应在低级别中断服务程序的开始处加一条开中断指令STI。能够实现中断嵌套的中断系统,其软、硬件设计都非常复杂,如果采用了可编程中断控制器,就会方便很多。,中断响应:经中断排队后, CPU收到一个当前申请中断的中断源中优先级别最高的中断请求信号,如果满足条件, 则中止执行现行程序, 响应中断申请。,中断响应的条件: 有中断请求信号 中断请求没有被屏蔽 CPU允许响应中断请求 CPU在现行指令执行结束时

8、响应中断,响应步骤1.标志寄存器内容入栈2.IF清零3.保护断点,即当前CS、IP入栈4.寻找中断服务程序入口地址,中断处理: 中断处理的过程实际就是CPU执行中断服务程序的过程。用户编写的用于CPU为中断源进行中断处理的程序称为中断服务程序。由于不同中断源在系统中的作用不同,所要完成的功能不同,因此,不同中断源的中断服务程序内容也各不相同。例如,对于图7.11所示的输入设备,其中断服务程序的主要任务是用输入指令(IN)从接口中的数据端口向CPU输入数据。,中断返回: 执行完中断服务程序,返回到原先被中断的程序,此过程称为中断返回。为了能正确返回到原来程序的断点处,在中断服务程序的最后应专门放

9、置一条中断返回指令(如8086/8088的IRET指令)。中断返回指令的作用实际上是恢复断点,也就是保护断点的逆过程。,中 断 实 现 的 机 制,系 统 调 用 与 中 断的 关 系,硬 件 中 断 的 例 子 及 其 工 作 原 理,一、,二、,三、,前面已经讲过中断的定义,那什么是系统调用呢?,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口。操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,内核提供一系列具备预定功

10、能的多内核函数,通过一组称为系统调用的(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。,整个系统调用的过程可以总结如下:1 执行用户程序(如:fork)2 根据glibc中的函数实现,取得系统调用号并执行int $0x80产生中断。3 进行地址空间的转换和堆栈的切换,执行SAVE_ALL。(进行内核模式)4 进行中断处理,根据系统调用表调用内核函数。5 执行内核函数。6 执行RESTORE_ALL并返回用户模式,系统调用和中断调用有什么联系和区别呢

11、?,首先它们都是操作系统概念。中断调用是DOS操作系统中,系统调用的特殊形式而已。系统调用,都是指操作系统的开发者,提供了许多系统的程序库,实现输入/输出等基本的功能,我们编写程序的时候就调用这些程序库,不必要自己到显示器上绘图和读取键盘端口。在UNIX操作系统下,系统调用主要是C语言格式调用的一些函数库。比如printf和scanf函数,我们写程序的时候直接可以用,编译系统把它转变为对操作系统函数库调用的代码,目标文件可以独立运行。在WINDOWS系统,系统调用主要是以一系列的DLL、EXE文件方式给出,比如USER32.DLL、NTDLL.DLL等,编写程序的时候可以直接调用里面的GETD

12、C等函数库。在DOS系统下,操作系统不以函数库形式提供系统调用,而是把整个操作系统的所有代码都LOAD到内存里面,把相关系统调用功能安装到中断接口里面,我们写的程序需要调用的时候,调用相应的中断。比如打开文件等操作,就调用INT 21,中 断 实 现 的 机 制,系 统 调 用 与 中 断的 关 系,硬 件 中 断 的 例 子 及 其 工 作 原 理,一、,二、,三、,1.设计一个中断处理程序。要求中断请求信号以跳变方式由IR2引入(可为任一定时脉冲信号),当CPU响应IR2请求时,输出字符串“8259A INTERRUPT!”,中断10次,程序退出(设8259A的端口地址为20H和21H,中

13、断类型号为40H)。,中断处理程序如下:DATASEGMENTMESSDB8259A? INTERRUPT!, 0AH, 0DH, $COUNT DB 10; 计数值为10DATAENDSSTACK SEGMENTSTACKSTA DB100H DUP(?)TOP EQULENGTHSTA ;数据块长度为100H的符号名STACK ENDSCODE SEGMENTASSUMECS:CODE, DS:DATA, SS:STACKMAIN: CLI ;令IF=0关闭中断MOV AX,DATAMOV DS, AX ;初始化DSMOV AX, STACKMOV SS, AX ;初始化SSMOV SP,

14、 TOPMOV AL, 13H ; 8259A初始化,ICW1的内容,OUT 20H, AL ; 单片, 边沿触发MOV AL, 40H ; 中断类型号40HOUT 21H, AL ;写入ICW2的口地址A=1MOV AL, 01H ; 非自动结束OUT 21H, AL MOV AX, SEG INT-P ; 设置中断向量MOV DS, AX ; 中断服务子程序入口段基址送DSMOV DX, OFFSET INT-P ;中断服务子程序入口偏移地址送DXMOV AL, 42H ; IR2的中断类型号42H送ALMOV AH, 25H ; 25H功能调用INT 21HINAL, 21H ; 读IMR(中断屏蔽寄存器)AND AL, 0FBH; 允许IR2请求中断OUT 21H, AL ; 写中断屏蔽字OCW1WAIT1:STI ; 开中断(令IF=1开中断)CMP COUNT,0 ; 判断10次中断是否结束JNZ WAIT1 ; 未结束, 等待MOV AX, 4C00H ; 结束, 返回DOSINT 21HINT-P PROC ; 中断服务子程序PUSH DS ; 保护现场PUSH AXPUSH DX,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号