内容正文:
操作系统原理(第2版)
1.6.2 中断技术
中断机制是实现多道程序并发执行的重要条件,也是现代计算机系统的重要组成部分。中断是指程序在执行过程中CPU对系统发生的某个事件做出的一种反应。中断具有以下特点:
(1)中断是随机的。
(2)中断是可恢复的。
(3)中断是自动处理的。
中断发生时,CPU暂停正在执行的程序并保存其运行现场信息,然后自动转去执行相应的中断处理程序,中断处理完成后返回到被中断程序的断点处(同时恢复为被中断程序所保存的现场信息)继续执行或者重新调度其他程序执行。
计算机系统中引入中断的目的主要有两个:一是解决CPU与I/O设备的并行工作问题;二是实现实时控制。
1.6 操作系统运行基础
1.中断分类
根据中断源和中断事件的性质,可以将中断划分为不同的类型。
1.6 操作系统运行基础
(1)外中断:指来自于CPU之外的外部设备通过硬件请求方式产生的强迫性中断。
外中断可以发生在用户态,也可以发生在内核态。不同的外中断通常具有不同的优先级,当CPU处理高一级的中断时,会部分或全部屏蔽较低优先级的中断,外中断一般在两条机器指令之间响应。外中断又可分为不可屏蔽中断和可屏蔽中断。不可屏蔽中断在当前指令执行结束后,就会无条件立即予以响应;可屏蔽中断则根据中断允许标志位是否允许来决定CPU是否响应中断。可屏蔽中断通常用于CPU与外设之间的数据交换。
1.6 操作系统运行基础
(2)内中断:是由CPU在执行指令过程中检测到一个或多个错误或异常条件引起的,用于表示CPU执行指令时本身出现算术溢出、0作除数、取数时的奇偶校验错、访存(访问内存)指令越界或执行了一条所谓的“异常指令”(用于实现系统调用)等情况。这时中断当前执行的程序,转到相应的错误处理程序或异常处理程序。
内中断由CPU中控制器里的硬件中断装置产生,中断处理程序所提供的服务是当前运行程序所需要的,如内存访问错误、单步调试和被0除等。内中断处理程序在当前运行进程(程序)的上下文中执行。
内中断不可屏蔽,一旦发生必须立即响应处理。内中断通常发生在用户态,允许在指令执行期间进行响应并且允许多次响应。
1.6 操作系统运行基础
内中断的分类:
(1)强迫性中断。与当前运行程序的执行完全异步,中断是由随机事件和外部请求所引发的,引起强迫性中断的事件不是当前运行程序所期待的。强迫性中断事件主要包括硬件故障中断、程序性中断、外部中断和I/O中断等。
(2)自愿性中断。用户程序在运行过程中请求操作系统为其提供某种功能服务,通过执行一条访管指令而引起的中断,称为“访管中断”或“陷阱”(Trap)。
自愿性中断事件是当前运行程序所期待的,是用户在程序中有意安排的中断,它表示用户程序对操作系统的某种需求。当用户需要操作系统提供某种服务时,就使用访管指令或系统调用产生自愿性中断来达到需求的目的。
1.6 操作系统运行基础
访管中断:访管中断是通过执行访管指令而产生的中断。
用户程序执行时,如果执行的是访管指令就产生一个访管中断,并通过陷入指令将CPU的状态从用户态转换为内核态,然后将处理权移交给操作系统中的一段特殊代码(系统调用子程序),这一过程称为陷入。访管指令在用户态下执行,它包括两个部分:操作码和访管参数。操作码指出该指令是访管指令;访管参数则描述具体的访管要求。不同的访管参数对应不同的中断服务要求,就像机器指令的操作码一样,操作系统通过分析访管指令中的访管参数,调用相应的系统调用子程序为用户服务,系统调用功能完成后再返回到用户态继续运行用户程序。
1.6 操作系统运行基础
2.中断向量
每个中断有一个唯一的与其对应的中断向量号,并按照中断向量号从小到大的顺序放在中断向量表中。根据中断向量号可得到该中断向量在中断向量表中的位置。
中断向量表一般存放在内存中的固定区域。较为简单的PC-DOS系统的中断向量表占用了内存最低端的1KB空间,共存储了256个中断向量。
1.6 操作系统运行基础
3.中断响应与处理
中断系统是现代计算机系统的核心组成部分,通常由两部分组成:硬件中断装置和软件中断处理程序。
(1)硬件中断装置是中断系统的机制部分,负责捕获中断源发出的各种中断请求,并以一定方式响应中断源,然后将CPU控制权交给特定的中断处理程序;
(2)软件中断处理程序是中断