操作系统教程—Linux实例分析 孟庆昌 第7章 中断、 陷.ppt
《操作系统教程—Linux实例分析 孟庆昌 第7章 中断、 陷.ppt》由会员分享,可在线阅读,更多相关《操作系统教程—Linux实例分析 孟庆昌 第7章 中断、 陷.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 第第7章章 中断、中断、陷入和信号机构陷入和信号机构 7.1 概述概述 7.2 UNIX系统对中断和陷入的处理系统对中断和陷入的处理 7.3 系统调用的实施举例系统调用的实施举例 7.4 UNIX信号机构信号机构 习题习题 第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 7.1 概概 述述 7.1.1中断及其一般处理过程所谓中断是指CPU对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。图7-1所示为中断时CPU活动的轨迹。第
2、第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 图7-1中断示意图第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 1.中断源分类现代计算机都根据实际需要配备有不同类型的中断机构。有的较简单,有的则较复杂,下面介绍几种常见的中断源分类方法。1)按功能划分这种分类法类似于IBM/360、370系统的分类法,所有中断源分为五类:第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 (1)机器故障中断。(2)输入输出中断。(3)外部中断。(4)程序性中断。(5)访管中断。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 2)按产生中断的方式划分(1)强迫中断。(2)自愿中
3、断。中断进行分类,其主要分为两类:(1)中断。(2)异常(Exception)。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 2.中断的一般处理过程对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。一般分为由硬件实施的中断响应和主要由操作系统实施的中断处理两大步骤。发生中断时,CPU暂停执行当前的程序,而转去处理中断,这个由硬件对中断请求作出反应的过程,称为中断响应。一般来说,中断响应顺序执行下述三步动作:第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 (1)中止当前程序的运行;(2)保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的
4、内容);(3)转到相应的处理程序。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 通常CPU在执行完一条指令后,立即检查有无中断请求,如有,则立即作出响应。中断响应后,就由软件(中断处理程序)进行相应处理。中断处理过程大致分为四个阶段:保存被中断程序的现场、分析中断原因、转入相应处理程序进行处理、恢复被中断程序的现场(即中断返回)。中断处理的一般过程如图7-2所示。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 图7-2中断处理的一般过程第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 1)保存现场保存被中断程序的现场的目的是为了在中断处理完之后,可以返回到原来被中
5、断的地方,在原有的运行环境下继续正确地执行下去。对现场信息的保存方式是多样化的,常用方式有两种:一种是集中式保存。另一种是分散式保存。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 2)分析中断原因对中断处理的主要工作是根据中断源确定中断原因,然后转入相应处理程序去执行。为此,应确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常包括相应中断处理程序入口地址和中断处理时处理机状态字。表7-1列出了示意性的中断向量表。如果是终端发出
6、的中断,则核心从硬件那里得到的中断号是2。利用它去查中断向量表,得到终端中断处理程序ttyintr的地址。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 表7-1中断向量表第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 3)处理中断核心调用中断处理程序对中断进行处理。4)恢复现场和退出中断执行完相应中断处理程序后,就要退出中断。退出中断的主要工作是:(1)选取可以立即执行的进程。(2)恢复工作现场。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 7.1.2中断优先级和多重中断高级别中断打断低级别中断的处理层次可以深入多层,从而形成多重中断嵌套处理。此时,CPU的活
7、动轨迹如图7-3所示。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 图7-3多重中断嵌套处理第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 7.1.3中断屏蔽中断屏蔽是指在提出中断请求之后,CPU不予响应的状态。它常用来在处理某一中断时防止同级别中断的干扰或在处理一段不可分割的、必须连续执行的程序时防止意外事件把它打断。引入中断屏蔽和禁止的原因主要有以下三个方面:(1)延迟或禁止对某些中断的响应。(2)协调中断响应与中断处理的关系。(3)防止同类中断的相互干扰。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 7.2 UNIX系统对中断和陷入的处理系统对中断和陷入
8、的处理 7.2.1中断处理当发生中断时,系统作出响应,不管它们是来自硬件(如来自时钟或者外部设备)、程序性中断(执行指令导致“软件中断(SoftwareInterrupts)”),或者来自意外事件(如访问页面不在内存)。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 核心对中断处理的顺序主要由以下动作完成:(1)保存正在运行进程的各寄存器的内容,把它们放入核心栈的新帧面中。表7-2中断向量表第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 (2)确定“中断源”或者查证中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从
9、机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包括相应中断处理程序入口地址和中断处理时处理机的状态字。表7-2列出示意性的中断向量表。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 (3)核心调用中断处理程序,对中断进行处理。(4)中断处理完成并返回。执行完中断处理程序,核心便执行与机器相关的特定指令序列,恢复中断时寄存器内容和执行核心栈退栈,进程回到用户态。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 中断处理算法输入:无输出:无保存(进栈)当前断点现场;确定中断来源;寻找中断向量;调用中断处理程序;恢复(退栈)先前保存的现场;第第7 7
10、章章 中断、中断、陷入和信号机构陷入和信号机构 图7-4示出一个多级中断的例子。进程在执行系统调用期间接到盘中断,而在执行盘中断处理子程序期间又接到时钟中断并对它进行相应处理。每次系统只接受一个中断(或一个系统调用),建立一个新的映像帧面,在其中保存前一个处理子程序的寄存器内容。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 图7-4多级中断时核心栈层次第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 7.2.2陷入处理在UNIX系统中,对异常的处理称为陷入(Trap)。因为各种异常事件经过硬件处理,再统一进入陷入处理程序trap。引起陷入的事件可分为两组:一组是自愿进入陷入
11、,称为自陷,如使用系统调用、断点跟踪;另一组是由于程序运行中出现软、硬件故障或错误而进入陷入,也称为捕俘,如转换无效、访问违章、非法指令等。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 (1)请求系统管理人员干预。(2)按用户规定方式进行处理。(3)用户栈自动扩充。(4)系统调用处理。多数系统调用带有一个或几个参数。传递参数的方式一般有两种:通过通用寄存器(如r0,r1)的直接传送和在trap指令后自带参数。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 系统调用入口表sysent的项数与系统调用编号一样多,通常为64。每项有三个部分:自带参数个数、标志位(如果执行set
12、jmp函数,则置为0,否则置为1)和相应处理程序的入口地址。表7-3列出了sysent的结构形式。第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 表7-3系统调用入口表第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 系统调用算法输入:系统调用号码输出:系统调用执行结果根据系统调用号码从入口表中检索项;确定系统调用的参数个数;把参数从用户地址空间复制到user中;保存当前映像,以便失败时返回;调用核心的系统调用子程序进行处理;第第7 7章章 中断、中断、陷入和信号机构陷入和信号机构 if(在子程序执行期间有错)在保存用户现场的0号寄存器中置出错码;在保存用户现场的PS寄存器中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统教程Linux实例分析 孟庆昌 第7章 中断、 操作系统 教程 Linux 实例 分析 中断
限制150内