中断在操作系统中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(3)故障请求中断。当出现电源掉电、存储出错或 溢出故障时,发出中断请求,CPU转去执行故障处理 程序,如启动备用电源、报警等。
(4)异常。由于CPU执行指令引起的中断
中断的分类: 1.按中断的性质来划分,则系统中的中断可分为: 可屏蔽中断和不可屏蔽中断。对不可屏蔽中断,程序 员不能控制它,系统肯定会立即响应的,而对于可屏 蔽中断,汇编语言程序员可以通过指令CLI和STI来控 制对它们的响应。 2.按中断源来划分,则系统中的中断又可分为:硬 件中断和软件中断。对于硬件中断,程序员不能控制 它,它们基本上是随机产生的,而对于软件中断,汇 编语言程序员可通过指令INT和INTO来有目的安排它们 的。
一、
中 断 实 现 的 机 制
二、
系 统 调 用 与 中 断 的 关 系
三、
硬件中断的例子及 其工作原理
1.设计一个中断处理程序。要求中断请求信号以跳变方式由IR2引入(可为 任一定时脉冲信号),当CPU响应IR2请求时,输出字符串“8259A INTERRUPT!”,中断10次,程序退出(设8259A的端口地址为20H和21H,中 断类型号为40H)。
中断服务程序
中断处理
返回断点
中断源:指能够引起中断的原因或发出中断申请 的来源。主要有以下几类:
(1)外部设备请求中断。一般的外部设备如键盘、 磁盘驱动器、磁带机、打印机等在工作告一段落后 发出中断请求,要求CPU为它服务。 (2)实时时钟请求中断。如定时/计数器,先有CPU 发出指令,让时钟电路开始计时工作,待规定的时 间到,时钟电路发出中断申请,CPU转入中断服务程 序进行中断处理。
STI MOV MOV MOV INT DEC JNZ IN OR OUT NEXT: MOV OUT POP POP POP IRET INT-P CODE END
; 开中断
DS, AX DX, OFFSET MESS AH, 09H 21H COUNT NEXT AL, 21H AL, 04H 21H, AL CLI AL, 20H 20H, AL DX AX DS ENDP ENDS MAIN
整个系统调用的过程可以总结如下: 1. 执行用户程序(如:fork) 2. 根据glibc中的函数实现,取得系统调用号并执行int $0x80产生中断。 3. 进行地址空间的转换和堆栈的切换,执行SAVE_ALL。 (进行内核模式) 4. 进行中断处理,根据系统调用表调用内核函数。 5. 执行内核函数。 6. 执行RESTORE_ALL并返回用户模式
LOGO
中断在操作系统中的 应用
www.themegallery.com
一、
中 断 实 现 的 机 制
二、
系 统 调 用 与 中 断 的 关 系
三、
硬件中断的例子及 其工作原理
中断的定义:
主程序 在CPU执行程序的过程中, 出现了某种紧急或异常的 事件(中断请求),CPU需 暂停正在执行的程序,转 有中断请求 去处理该事件(执行中断 服务程序),并在处理完 毕后返回断点处继续执行 断点 被暂停的程序,这一过程 称为中断。断点处是指返 继续执行 回主程序时执行的第一条 指令的地址。
2.中断优先级的确定 在微机系统中通常用三种方法来确定中断源的优先级别,即软件查询法、硬 件排队电路法和专用中断控制芯片法。 1) 软件查询法 软件查询法需要简单的硬件电路支持。以8个中断源为例,其硬件电路 如图所示,将8个外设的中断请求组合起来作为一个端口(中断寄存器),并将 各个外设的中断请求信号相或,产生一个总的INT信号。
断点保护

D7 D0
INT 1 中 断 寄 存 器 INT 2
…Hale Waihona Puke Baidu
INT ? 1 N INT ? 2 Y 对2号中 断源服务 Y 对1号中 断源服务
CPU
INT 8
N


INTR
INT
≥1
INT ? n N
Y
对n号中 断源服务
软件查询法的硬件电路
软件查询方式的流程图

2) 硬件排队电路 采用硬件排队电路法, 各个外设的优先级与其接口在 排队电路中的位置有关。常用 1#中断请求 的硬件优先权排队电路有链式 优先权排队电路、硬件优先级 应答1# 编码加比较器的排队电路等。 2#中断请求 下图给出了一个链式优先级排 队电路。图中,当响应信号沿 链式电路进行传递时,最靠近 应答2# CPU并发出中断请求的接口将 首先拦截住响应信号,CPU进 3#中断请求 入相应外设的中断处理程序, 在服务完成后,该外设撤消其 应答3# 中断请求,解除对下一级外设 的封锁。
首先它们都是操作系统概念。中断调用是DOS操作系统中, 系统调用的特殊形式而已。 系统调用,都是指操作系统的开发者,提供了许多系统的程 序库,实现输入/输出等基本的功能,我们编写程序的时候就调 用这些程序库,不必要自己到显示器上绘图和读取键盘端口。 在UNIX操作系统下,系统调用主要是C语言格式调用的一些 函数库。比如printf和scanf函数,我们写程序的时候直接可以 用,编译系统把它转变为对操作系统函数库调用的代码,目标文 件可以独立运行。 在WINDOWS系统,系统调用主要是以一系列的DLL、EXE文件 方式给出,比如USER32.DLL、NTDLL.DLL等,编写程序的时候可 以直接调用里面的GETDC等函数库。 在DOS系统下,操作系统不以函数库形式提供系统调用,而 是把整个操作系统的所有代码都LOAD到内存里面,把相关系统调 用功能安装到中断接口里面,我们写的程序需要调用的时候,调 用相应的中断。比如打开文件等操作,就调用INT 21
输入 锁存器 三态 缓冲器
输入 设备
数据总线
中断请求 +5 V D Q &
端口 译码
地址总线 RD
Q 中断屏蔽 & INT
中断排队:通常,系统中有多个中断源,当有多个中断源同时发出 中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。 为此,计算机给每个中断源规定了优先级别,称为优先权。这样, 当多个中断源同时发出中断请求时,优先权高的中断能先被响应, 只有优先权高的中断处理结束后才能响应优先权低的中断。计算机 按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通 过硬件电路来实现,亦可通过软件查询来实现。 1.中断优先级 中断请求是随机发生的,当系统具有多个中断源时,有时会同时出 现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次 序称为中断优先级。对于不同级别的中断请求,一般的处理原则是: (1) 不同优先级的多个中断源同时发出中断请求,按优先级由高到低依 次处理。 (2) 低优先级中断正在处理,出现高优先级请求,应转去处理高优先级 请求,服务结束后再 返回原优先级较低的中断服务程序继续执行。 (3) 高优先级中断正在处理,出现低优先级请求,可暂不响应。 (4) 中断处理时,出现同级别请求,应在当前中断处理结束以后再处理 新的请求。
中断处理: 中断处理的过程实际就是CPU执行中断服务程序的 过程。用户编写的用于CPU为中断源进行中断处理的程 序称为中断服务程序。由于不同中断源在系统中的作用 不同,所要完成的功能不同,因此,不同中断源的中断 服务程序内容也各不相同。例如,对于图7.11所示的输 入设备,其中断服务程序的主要任务是用输入指令(IN) 从接口中的数据端口向CPU输入数据。 中断返回: 执行完中断服务程序,返回到原先被中断的程序, 此过程称为中断返回。为了能正确返回到原来程序的 断点处,在中断服务程序的最后应专门放置一条中断 返回指令(如8086/8088的IRET指令)。中断返回指令 的作用实际上是恢复断点,也就是保护断点的逆过程。
; 单片, 边沿触发 ; 中断类型号40H ;写入ICW2的口地址A=1 ; 非自动结束 ; 设置中断向量 ; 中断服务子程序入口段基址送DS ;中断服务子程序入口偏移地址送DX ; IR2的中断类型号42H送AL ; 25H功能调用 ; 读IMR(中断屏蔽寄存器) ; 允许IR2请求中断 ; 写中断屏蔽字OCW1 ; 开中断(令IF=1开中断) ; 判断10次中断是否结束 ; 未结束, 等待 ; 结束, 返回DOS ; 中断服务子程序 ; 保护现场
OUT MOV OUT MOV OUT MOV MOV MOV MOV MOV INT IN AND OUT WAIT1: CMP JNZ MOV INT INT-P PUSH PUSH PUSH
20H, AL AL, 40H 21H, AL AL, 01H 21H, AL AX, SEG INT-P DS, AX DX, OFFSET INT-P AL, 42H AH, 25H 21H AL, 21H AL, 0FBH 21H, AL STI COUNT,0 WAIT1 AX, 4C00H 21H PROC DS AX DX
中断请求
中断排队
中断处理 过程
中断响应
中断处理 中断返回
中断请求是由中断源向CPU发出中断请求信号。软件中断源是 在CPU内部由中断指令或程序出错直接引发中断;硬件中断源 必须通过专门的电路将中断请求信号传送给CPU,CPU也有专 门的引脚接收中断请求信号。例如,8086/8088 CPU用INTR引 脚(可屏蔽中断请求)和NMI引脚(非屏蔽中断请求)接收硬件中 断请求信号。一般外设发出的都是可屏蔽中断请求
中断处理程序如下: DATA SEGMENT MESS DB'8259A? INTERRUPT!', 0AH, 0DH, '$' COUNT DB 10 ; 计数值为10 DATA ENDS STACK SEGMENT STACK STA DB 100H DUP(?) TOP EQU LENGTH STA ;数据块长度为100H的符号名 STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK MAIN: CLI ;令IF=0关闭中断 MOV AX,DATA MOV DS, AX ;初始化DS MOV AX, STACK MOV SS, AX ;初始化SS MOV SP, TOP MOV AL, 13H ; 8259A初始化,ICW1的内容
“ 1”
INT 响应
&
&
&
&
&
&
3.中断嵌套 CPU在执行低级别中断服 务程序时,又收到较高级别的中 断请求,CPU暂停执行低级别中断 服务程序,转去处理这个高级别 的中断,处理完后再返回低级别 中断服务程序,这个过程称为中 断嵌套,如图所示。 一般CPU响应中断请求后, 在进入中断服务程序前,硬件会 自动实现关中断,这样,CPU在 执行中断服务程序时将不能再响 应其他中断请求。 为了实现中断嵌套,应在低级别 中断服务程序的开始处加一条开 中断指令STI。能够实现中断嵌 套的中断系统,其软、硬件设计 都非常复杂,如果采用了可编程 中断控制器,就会方便很多。
一、
中 断 实 现 的 机 制
二、
系 统 调 用 与 中 断 的 关 系
三、
硬件中断的例子及 其工作原理
前面已经讲过中断的定义,那什么是系统调用呢? 所谓系统调用,就是内核提供的、功能十分强大 的一系列的函数。这些系统调用是在内核中实现的, 再通过一定的方式把系统调用给用户,一般都通过门 (gate)陷入(trap)实现。系统调用是用户程序和内核 交互的接口。 操作系统的主要功能是为应用程序的运行创建良 好的环境,为了达到这个目的,内核提供一系列具备 预定功能的多内核函数,通过一组称为系统调用的 (system call)的接口呈现给用户。系统调用把应用 程序的请求传给内核,调用相应的的内核函数完成所 需的处理,将处理结果返回给应用程序,如果没有系 统调用和内核函数,用户将不能编写大型应用程序。
主程序
低级中断服务程序 高级中断服务程序
STI 低级中断请求 高级中断请求
STI
中断响应:经中断排队后, CPU收到一个当前申 请中断的中断源中优先级别最高的中断请求信 号,如果满足条件, 则中止执行现行程序, 响应 中断申请。 中断响应的条件: ① 有中断请求信号 ② 中断请求没有被屏蔽 ③ CPU允许响应中断请求 ④ CPU在现行指令执行结束时响应中断 响应步骤 1.标志寄存器内容入栈 2.IF清零 3.保护断点,即当前CS、IP入栈 4.寻找中断服务程序入口地址
相关文档
最新文档