欢迎来到天天文库
浏览记录
ID:50455734
大小:1.19 MB
页数:59页
时间:2020-03-09
《操作系统教程——Linux实例分析 教学课件 作者 孟庆昌 第1-8章第7章 中断、 陷入和信号机构.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章中断、陷入和信号机构7.1概述7.2UNIX系统对中断和陷入的处理7.3系统调用的实施举例7.4UNIX信号机构习题7.1概述7.1.1中断及其一般处理过程所谓中断是指CPU对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。图7-1所示为中断时CPU活动的轨迹。图7-1中断示意图1.中断源分类现代计算机都根据实际需要配备有不同类型的中断机构。有的较简单,有的则较复杂,下面介绍几种常见的中断源分类方法。
2、1)按功能划分这种分类法类似于IBM/360、370系统的分类法,所有中断源分为五类:(1)机器故障中断。(2)输入/输出中断。(3)外部中断。(4)程序性中断。(5)访管中断。2)按产生中断的方式划分(1)强迫中断。(2)自愿中断。中断进行分类,其主要分为两类:(1)中断。(2)异常(Exception)。2.中断的一般处理过程对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。一般分为由硬件实施的中断响应和主要由操作系统实施的中断处理两大步骤。发生中断时,CPU暂停执行当前的程序,
3、而转去处理中断,这个由硬件对中断请求作出反应的过程,称为中断响应。一般来说,中断响应顺序执行下述三步动作:(1)中止当前程序的运行;(2)保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);(3)转到相应的处理程序。通常CPU在执行完一条指令后,立即检查有无中断请求,如有,则立即作出响应。中断响应后,就由软件(中断处理程序)进行相应处理。中断处理过程大致分为四个阶段:保存被中断程序的现场、分析中断原因、转入相应处理程序进行处理、恢复被中断程序的现场(即中断返回)。中断处理的一般过程如图7
4、-2所示。图7-2中断处理的一般过程1)保存现场保存被中断程序的现场的目的是为了在中断处理完之后,可以返回到原来被中断的地方,在原有的运行环境下继续正确地执行下去。对现场信息的保存方式是多样化的,常用方式有两种:一种是集中式保存。另一种是分散式保存。2)分析中断原因对中断处理的主要工作是根据中断源确定中断原因,然后转入相应处理程序去执行。为此,应确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索
5、中断向量表的位移。中断向量因机器而异,但通常包括相应中断处理程序入口地址和中断处理时处理机状态字。表7-1列出了示意性的中断向量表。如果是终端发出的中断,则核心从硬件那里得到的中断号是2。利用它去查中断向量表,得到终端中断处理程序ttyintr的地址。表7-1中断向量表3)处理中断核心调用中断处理程序对中断进行处理。4)恢复现场和退出中断执行完相应中断处理程序后,就要退出中断。退出中断的主要工作是:(1)选取可以立即执行的进程。(2)恢复工作现场。7.1.2中断优先级和多重中断高级别中断打断低级别中断的处理
6、层次可以深入多层,从而形成多重中断嵌套处理。此时,CPU的活动轨迹如图7-3所示。图7-3多重中断嵌套处理7.1.3中断屏蔽中断屏蔽是指在提出中断请求之后,CPU不予响应的状态。它常用来在处理某一中断时防止同级别中断的干扰或在处理一段不可分割的、必须连续执行的程序时防止意外事件把它打断。引入中断屏蔽和禁止的原因主要有以下三个方面:(1)延迟或禁止对某些中断的响应。(2)协调中断响应与中断处理的关系。(3)防止同类中断的相互干扰。7.2UNIX系统对中断和陷入的处理7.2.1中断处理当发生中断时,系统作出响应
7、,不管它们是来自硬件(如来自时钟或者外部设备)、程序性中断(执行指令导致“软件中断(SoftwareInterrupts)”),或者来自意外事件(如访问页面不在内存)。核心对中断处理的顺序主要由以下动作完成:(1)保存正在运行进程的各寄存器的内容,把它们放入核心栈的新帧面中。表7-2中断向量表(2)确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包
8、括相应中断处理程序入口地址和中断处理时处理机的状态字。表7-2列出示意性的中断向量表。(3)核心调用中断处理程序,对中断进行处理。(4)中断处理完成并返回。执行完中断处理程序,核心便执行与机器相关的特定指令序列,恢复中断时寄存器内容和执行核心栈退栈,进程回到用户态。中断处理算法输入:无输出:无{保存(进栈)当前断点现场;确定中断来源;寻找中断向量;调用中断处理程序;恢复(退栈)先前保存的现场;}图7-4示出一个多
此文档下载收益归作者所有