230 likes | 445 Views
第三讲 中断系统 目的与要求 : 理解内核程序运行机制--中断 / 异常(陷入)机制及中断 / 异常(陷入)处理过程。 重点与难点 : 中断系统概念及中断 / 异常(陷入)处理过程。 作业: 1 , 3 , 6. 第二章 操作系统结构 2.1 中断 / 异常(陷入). 中断的引入 : 为了 CPU 和通道 ( 或设备 ) 之间的并行,当 CPU 启动通道 ( 或设备 ) 进行输入输出后,通道 ( 或设备 ) 可以独立工作, CPU 也可以转去做其它任务。
E N D
第三讲 中断系统 目的与要求:理解内核程序运行机制--中断/异常(陷入)机制及中断/异常(陷入)处理过程。 重点与难点:中断系统概念及中断/异常(陷入)处理过程。 作业:1,3,6
第二章 操作系统结构 2.1中断/异常(陷入) 中断的引入:为了CPU和通道(或设备)之间的并行,当CPU启动通道(或设备)进行输入输出后,通道(或设备)可以独立工作,CPU也可以转去做其它任务。 通道(或设备) 输入输出完成后,必须通知CPU,让CPU继续输入输出后的事情,通道(或设备)通过向CPU发中断告诉CPU此次输入输出结束。
异常(陷入)引入:用于表示CPU执行指令时本身出现算术溢出,零做除数,取数时的奇偶错,访存指令越界,或就是执行了一条所谓“陷入指令”(用于实现系统调用)等情况。这时中断当前的执行流程,转到相应的错误处理程序或陷入处理程序。异常(陷入)引入:用于表示CPU执行指令时本身出现算术溢出,零做除数,取数时的奇偶错,访存指令越界,或就是执行了一条所谓“陷入指令”(用于实现系统调用)等情况。这时中断当前的执行流程,转到相应的错误处理程序或陷入处理程序。 中断/异常(陷入):系统发生某个异步/同步事件后,处理机暂停正在执行的程序,转去执行处理该事件程序。
2.1.1中断/异常(陷入)分类 I/O中断 中断(外中断) 时钟中断 广义中断 系统调用 缺页 断点指令 其它程序性异常 (如算术溢出等) 异常(内中断) 陷入 中断(狭义)与异常(陷入)的区别: 中断: 与正执行指令无关,可以屏蔽 异常或陷入: 与正执行指令有关,不可屏蔽*
2.1.2中断的分级与屏蔽 中断寄存器:寄存中断事件的全部触发器。 中断位:每个触发器称为一个中断位,当发生某个中断事件时相应位被置上。 中断序号:给中断的一个顺序编号. 中断响应:由硬件在执行每一条指令的最后时刻判断是否有中断,有则无条件转入操作系统的中断处理程序. 中断寄存器图示*
中断优先级:中断的优先程度.原则上,高、低优先级中断同时到先响应高级中断。高级中断可以打断低级中断处理程序的运行,同级中断同时到时,则按位序响应。中断优先级:中断的优先程度.原则上,高、低优先级中断同时到先响应高级中断。高级中断可以打断低级中断处理程序的运行,同级中断同时到时,则按位序响应。 高级中断处理 中级中断处理 低级中断处理
中断优先级设计原则: • 从提高资源利用率的角度考虑:高速设备的中断优先级高,慢速设备的中断优先级低。 • 在交互式系统中也可以考虑用户响应满意优先原则。 • 如某机上的UNIX系统把中断级别分为: • 时钟中断:中断优先级=6级 • 磁盘中断:中断优先级=5级 • 终端等其它外设中断:中断优先级=4级
处理机优先级:指处理机正运行程序的中断响应级别。在中断处理程序运行前设置。即当处理机处理某一优先级中断时,只允许处理机去响应比该优先级高的中断,而屏蔽低于或等于该优先级的中断。处理机优先级:指处理机正运行程序的中断响应级别。在中断处理程序运行前设置。即当处理机处理某一优先级中断时,只允许处理机去响应比该优先级高的中断,而屏蔽低于或等于该优先级的中断。 中断屏蔽:指禁止处理机响应中断或禁止中断出现.
中断寄存器 屏蔽寄存器 响应中断* 1 1 1 0 • 中断屏蔽有方法: • 软件实现:由软件按中断优先级约定,在响应某级中断时置屏蔽寄存器,屏蔽那些同等级和低级的中断* 软件实现中断屏蔽图示
2.2中断/异常(陷入)响应和处理 • CPU能够在每条机器指令执行周期内的最后时刻扫描中断寄存器,“询问”是否有中断信号。若无中断信号,CPU继续执行程序的后续指令,否则CPU停止执行当前程序的后续指令,无条件地转入操作系统内的中断处理程序。这一过程称为中断响应。 • 异常(陷入)是在执行指令的时候,由指令本身的原因发生的,CPU中指令的执行逻辑发现发生了异常(陷入)则转入操作系统内的异常(陷入)处理程序。
几个基本概念 1、断点和恢复点 PC: 程序计数器.指向马上要执行的那一条指令. 断点: 检测到中断时,处理机刚执行完的那条指令地址. 恢复点:断点的逻辑后续指令地址.PC的值. 现场信息:指中断那一刻确保被中断程序能继续运行的有关信息.如PC,通用寄存器,特殊寄存器等.*
断点和恢复点图示 断点 恢复点
2、核心态与用户态 核心态(系统态,监督方式,管态):允许特权指令执行的状态,在此状态下地址空间也较大. 用户态(用户态,用户方式,目态):一般程序所运行的状态. PS(PSW):处理机状态字.寄存处理机运行状态的寄存器. • 当前处理机状态. • 处理机优先级 • 各种控制位(如,外中断赋能位)*
3、中断向量 中断向量:一片存放中断处理程序入口地址和程序运行所需处理机状态字的内存单元。 硬件按中断号,异常(陷入)类型的不同通过中断向量表散转。
中断/异常(陷入)处理的一般过程 • 中断,异常(陷入)进入 • 保存现场 • 分析原因,转中断/异常(陷入)处理程序 • 恢复现场
保护现场 分析中断原因 ? 该级还有中断 有条件地 进程调度 恢复现场 中断处理的流程图:
某机UNIX中断处理详细过程: 1.中断,异常(陷入)进入 • 硬件自动将当前PC,PS存入暂存寄存器. • 硬件按中断号从指定的中断向量单元中取出新的PC,PS内容装入 PC,PS寄存器. • 将原PC,PS保存到现场保护区栈*
2.保存现场 现场保存/恢复过程示例.
一个现场区栈帧的形成过程: • 硬件将PS,PC压栈,且根据中断类将中断向量表中的新的PS,PC值送PS,PC寄存器. • 中断入口第一条为转总控程序指令,该特殊转移指令将r0压栈且将中断处理程序地址存入r0. • 由总控程序将新的PS压栈(因其中有陷入号信息). • 由总控将r1,r6压栈(r6中为栈指针,此时是上一栈帧顶或用户栈顶).由总控从新PS低五位截取trap号进入栈. • 总控在转相应中断(trap)处理程序时,将返回地址压栈. • 由各中断(trap)处理程序先将r5,r4,r3,r2压栈,返回总控时恢复r2,r3,r4,r5.*
PS 硬件保存 增PC 长r0 方nps(新ps) 向r1 r6 总控程序保存 dev (trap号) tpc (总控返回地址) r5 r4 处理程序保存 r3 r2 sp
3.分析原因,转中断/异常(陷入)处理程序 总控程序直接根据r0(已存放好中断程序的入口地址)内容转子.进行中断(陷入)处理,转子时已将返回地址压栈(转子指令自动).* 注:中断处理通常是向设备控制器发下一个I/O请求,并就绪原等I/O结束的进程。异常(陷入)处理包含操作系统系统调用处理,及异常时进程结束处理。
4.恢复现场(总控程序) • 1.回退到核态时: • 退栈. • 执行rtt指令.该指令自动将栈帧中保存的原PC,PS值装入PC,PS寄存器. • 2.回退到用户态时: • 低调(进行进程调度). • 退栈. • 执行rtt指令.该指令自动将栈帧中的PC,PS值装入PC,PS寄存器.*
主要内容 • 中断/异常(陷入)引起系统内核程序运行 • 中断/异常(陷入)的分类 • 中断的分级 • 中断/异常(陷入)响应和处理 • 中断/异常(陷入)响应 • 中断/异常(陷入)处理过程