操作系统教程—Linux实例分析 孟庆昌 第7章 中断、 陷.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:59 大小:2.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统教程—Linux实例分析 孟庆昌 第7章 中断、 陷.ppt

操作系统教程—Linux实例分析孟庆昌第7章中断、陷.ppt

预览

免费试读已结束,剩余 49 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章中断、陷入和信号机构7.1概述图7-1中断示意图1.中断源分类现代计算机都根据实际需要配备有不同类型的中断机构。有的较简单,有的则较复杂,下面介绍几种常见的中断源分类方法。1)按功能划分这种分类法类似于IBM/360、370系统的分类法,所有中断源分为五类:(1)机器故障中断。(2)输入/输出中断。(3)外部中断。(4)程序性中断。(5)访管中断。2)按产生中断的方式划分(1)强迫中断。(2)自愿中断。中断进行分类,其主要分为两类:(1)中断。(2)异常(Exception)。2.中断的一般处理过程对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。一般分为由硬件实施的中断响应和主要由操作系统实施的中断处理两大步骤。发生中断时,CPU暂停执行当前的程序,而转去处理中断,这个由硬件对中断请求作出反应的过程,称为中断响应。一般来说,中断响应顺序执行下述三步动作:(1)中止当前程序的运行;(2)保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);(3)转到相应的处理程序。通常CPU在执行完一条指令后,立即检查有无中断请求,如有,则立即作出响应。中断响应后,就由软件(中断处理程序)进行相应处理。中断处理过程大致分为四个阶段:保存被中断程序的现场、分析中断原因、转入相应处理程序进行处理、恢复被中断程序的现场(即中断返回)。中断处理的一般过程如图7-2所示。图7-2中断处理的一般过程1)保存现场保存被中断程序的现场的目的是为了在中断处理完之后,可以返回到原来被中断的地方,在原有的运行环境下继续正确地执行下去。对现场信息的保存方式是多样化的,常用方式有两种:一种是集中式保存。另一种是分散式保存。2)分析中断原因对中断处理的主要工作是根据中断源确定中断原因,然后转入相应处理程序去执行。为此,应确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常包括相应中断处理程序入口地址和中断处理时处理机状态字。表7-1列出了示意性的中断向量表。如果是终端发出的中断,则核心从硬件那里得到的中断号是2。利用它去查中断向量表,得到终端中断处理程序ttyintr的地址。表7-1中断向量表3)处理中断核心调用中断处理程序对中断进行处理。4)恢复现场和退出中断执行完相应中断处理程序后,就要退出中断。退出中断的主要工作是:(1)选取可以立即执行的进程。(2)恢复工作现场。7.1.2中断优先级和多重中断高级别中断打断低级别中断的处理层次可以深入多层,从而形成多重中断嵌套处理。此时,CPU的活动轨迹如图7-3所示。图7-3多重中断嵌套处理7.1.3中断屏蔽中断屏蔽是指在提出中断请求之后,CPU不予响应的状态。它常用来在处理某一中断时防止同级别中断的干扰或在处理一段不可分割的、必须连续执行的程序时防止意外事件把它打断。引入中断屏蔽和禁止的原因主要有以下三个方面:(1)延迟或禁止对某些中断的响应。(2)协调中断响应与中断处理的关系。(3)防止同类中断的相互干扰。7.2UNIX系统对中断和陷入的处理核心对中断处理的顺序主要由以下动作完成:(1)保存正在运行进程的各寄存器的内容,把它们放入核心栈的新帧面中。(2)确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包括相应中断处理程序入口地址和中断处理时处理机的状态字。表7-2列出示意性的中断向量表。(3)核心调用中断处理程序,对中断进行处理。(4)中断处理完成并返回。执行完中断处理程序,核心便执行与机器相关的特定指令序列,恢复中断时寄存器内容和执行核心栈退栈,进程回到用户态。中断处理算法输入:无输出:无{保存(进栈)当前断点现场;确定中断来源;寻找中断向量;调用中断处理程序;恢复(退栈)先前保存的现场;}图7-4示出一个多级中断的例子。进程在执行系统调用期间接到盘中断,而在执行盘中断处理子程序期间又接到时钟中断并对它进行相应处理。每次系统只接受一个中断(或一个系统调用),建立一个新的映像帧面,在其中保存前一个处理子程序的寄存器内容。图7-4多级中断时核心栈层次7.2.2陷入处理在UNIX系统中,对异常的处理称为陷入(Trap)。因为各种异常事件经过硬件处理,再统一进入陷入处理程序trap。引起陷入的事件可分为两组:一组是自愿进入陷入,称为自陷,如使用系统调用、断点跟踪;另一组是由于程