操作系统原理课程中断技术教学的探讨

2020-11-25 01:22孙悦周洲
现代计算机 2020年27期
关键词:调用中断进程

孙悦,周洲

(北京联合大学智慧城市学院,北京100101)

0 引言

目前,操作系统原理课程的教学,仍然是以四大管理功能为基础,即处理机管理、存储器管理、设备管理和文件管理[1]。操作系统是中断驱动的,中断技术对操作系统非常重要,如何介绍中断技术及其在操作系统中的作用,很多教材并没有系统的讲解,而中断技术又贯穿在四大管理功能中,以中断为主线,系统阐述多道程序设计的内部实现过程,讲解操作系统运转原理,帮助学生对操作系统形成完整的概念,在操作系统教学中有重要意义[2]。本文主要从理论教学和实践教学两个角度对中断技术教学安排展开探讨。

1 理论教学

在介绍完第一章操作系统概论后,介绍进程管理之前,先引入中断技术教学,统一介绍中断技术的基本概念。由于学生在学习计算机组成原理或微机原理与接口等硬件课程中已经对中断技术有了认识,这部分教学内容可以根据学生前面学习情况进行调整。然后介绍操作系统内核和处理机状态,分析中断技术对操作系统的重要性,最后在不同的管理模块指明其作用。

1.1 中断的基本概念

中断也称外中断,指来自CPU 执行指令以外的事件发生,如设备发出的各种I∕O结束中断。异常也称为内中断、例外或陷入,指源自CPU 执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令(系统调用)等[3]。这里要突出软中断的概念,系统调用的执行是通过软中断的方式实现的,即当用户程序调用系统程序时,由中断技术实现。

现代计算机都提供了中断机制,中断作为一种提高CPU 效率的机制,一是可以使 CPU 在I∕O 操作的执行过程中能够执行其他指令,二是允许中断处理器正常的处理过程,转去处理中断请求。时钟部件一般以中断方式对外提供服务,由CPU 内部的计时器产生,允许操作系统以一定规律执行函数[4]。

1.2 分析中断对操作系统的重要性

这部分要引导学生思考,操作系统程序和用户程序都在系统中运行,操作系统程序如何获得处理机并取得管理地位?由此引入操作系统内核、系统态和用户态的概念,说明处理机状态至少划分为系统态和用户态两种状态,操作系统内核包括中断处理程序、时钟管理、进程调度和设备驱动程序等操作系统中核心的程序,必须在核心态执行,所以操作系统内核执行时,处理机状态要转换为核心态,以保证操作系统内核执行时具有最高权限,而核心态到用户态转换的唯一途径是通过中断,这就说明了中断对操作系统的重要性[1]。

中断机制是操作系统得以正常工作的最重要的手段,它使得操作系统可以捕获普通程序发出的系统功能调用;及时处理设备的中断请求;防止用户程序中破坏性的活动等。系统运行过程中,无论是用户进程还是系统进程之间的切换都离不开中断技术。中断对于操作系统的重要性就像机器中的驱动齿轮一样,所以有人把操作系统称为是由“中断驱动”的。

1.3 中断技术应用场合

中断是多道程序得以并发执行的基础,没有中断,就不可能实现多道程序,进程之间的切换是通过中断来完成的。另外,中断也是设备管理的基础,为了提高处理机的利用率,实现CPU 与I∕O 设备并行执行,也必须有中断的支持。中断处理程序是I∕O 系统中最低的一层,它是整个I∕O 系统的基础。所以在后续进程管理和设备管理相关功能讲解时要强调中断的作用。

(1)进程同步

在单处理机多道程序操作系统中,中断的发生是随机的,某个进程在访问资源时,由于中断的发生,导致其他进程获得执行机会,会出现其他进程竞争或同时访问资源的情况,造成系统混乱,所以必须采用同步机制对进程同步访问资源加以控制,例如开关中断、信号量和管程等进程同步机制。其中开关中断是最简单的解决方法,避免了一个进程执行时其他进程获得执行的机会,但是代价太大,其他的解决方法在实现的过程中降低了代价或者比较友好,但是同样要借助开关中断来实现某些功能。这部分内容是学生学习时感觉最困难的,引入同步机制前,要先说明原因,有助于学生理解各种同步机制。

(2)进程切换

进程的切换使系统中的各进程均有机会占用CPU,由中断、异常、系统调用等触发中断,当前运行的进程被中断,先将CPU 切换为核心态,保存硬件未来得及保存的现场信息;然后由操作系统调用中断服务程序处理出现的中断事件;中断处理后,某些进程的状态会发生变化,也可能又创建了一些新的进程。进程调度程序根据预定的调度算法从就绪队列选一个进程占用CPU,这个占用CPU 运行的进程可能仍是被中断的进程,也可能是另一个进程;保存原来进程的CPU现场信息,恢复待运行进程的CPU 现场信息;中断返回,将CPU 切换为用户态。这说明中断发生后,可能会导致进程切换,有进程切换则一定是由于中断发生了,中断处理过程中要进行处理机状态切换。

(3)设备管理中中断处理程序

因为输入输出中断最为常见,所以多数操作系统教材把中断技术的介绍放在设备管理章节。前面已经介绍过中断技术的相关概念,讲到这个章节时侧重中断处理程序和其他输入输出软件的关系。操作系统的中断处理程序位于 I∕O 系统的底层,直接与 I∕O 硬件进行交互,当I∕O 设备发出中断请求信号时,中断硬件完成初步处理后便会转向中断处理程序,由中断处理程序对中断请求信号进行处理[4]。

2 实践教学

操作系统实践教学目前主要有三种方式,第一种是采用某些公司或高校自主研发的操作系统实验平台,并开发相应的实验,可以对该操作系统进行一些验证性实验或直接修改系统源代码。第二种是要求学生从零开始自制操作系统。第三种是比较传统的一种,在目前常用的计算机操作系统中实现某些命令操作和算法模拟。由于第三种比较受限制,以下主要对前两种教学方式中的实验内容安排进行讨论。

2.1 操作系统实验平台

这种方式与实验环境密切相关,操作系统实验平台一般都允许通过验证或补充代码的方式实现实验环节,可以更密切地结合教材内的内容,体现中断技术在不同资源管理中的作用,帮助学生理解消化教材里的内容。以《操作系统实验教程》为例,它以自主开发的EOS 操作系统为实例,并配有集成开发实验环境可直接查看或修改操作系统源代码,设计有如下一些实验与中断技术关系密切[5]。

(1)基本输入输出部分

这部分实验用以加深对操作系统设备管理基本原理的认识,以键盘设备为例,键盘设备是一种典型的中断驱动的设备,需要为键盘中断设置一个中断服务程序,每当键盘设备上的一个键被按下或者弹起时就会触发一次键盘中断,键盘中断服务程序就会被调用。可以调试EOS 内核中键盘中断服务程序的执行过程和显示字符的方式,从多个层面上理解控制台的工作原理,即从键盘输入数据,从显示器输出数据,修改EOS的键盘设备和显示设备处理代码,对键盘输入和字符显示进行非常规的控制,深入理解键盘设备和显示器终端的处理过程。

(2)设备驱动程序

此实验配合设备管理中设备驱动程序内容,通过调试EOS 串口驱动程序向串口发送数据的功能,了解设备驱动程序的工作原理,进一步理解设备工作过程中中断技术的作用。在为EOS 串口驱动程序添加从串口接收数据的功能之前,先通过调试向串口发送数据的源代码,了解向串口发送数据的工作原理,以串口控制器8250 为例,在中断模式下,操作系统每发送或接收一个字节会触发一次中断,掌握中断处理程序和设备驱动程序之间的关系。

(3)实现缺页中断处理功能和页面置换

此实验配合存储管理章节中缺页中断处理和页面置换算法的理论教学部分。当一个应用程序开始运行时,操作系统通常并没有将应用程序可执行文件中的代码和数据立即加载到内存中,所以程序从入口点开始运行时,就会立刻导致CPU 产生一个缺页异常,内核的缺页异常处理程序会根据引起缺页异常的线性地址把可执行文件中对应的代码页从文件系统中加载到物理内存页面中,并映射到进程逻辑地址对应的位置。当异常处理程序返回后,CPU 就会重新执行之前导致异常的那条指令,使得程序能够得以继续执行。设计缺页中断处理程序实现按需加载功能,可仿照EOS 中已经提供的中断处理程序(例如键盘中断、定时器中断)来添加缺页中断处理程序[5]。页面置换算法可以选择实现教材中介绍的算法并通过页面序列测试置换结果。

(4)使用软中断实现系统调用

此实验配合操作系统接口部分中的系统调用内容,帮助学生进一步理解系统调用是通过软中断的方式实现的。实验过程中可以通过调试直接从EOS 应用程序进入操作系统内核,观察函数的调用层次。由于Windows 操作系统采用中断号0x2E 作为应用程序接口的软中断,实验时可以采用类似的方式,首先添加中断号为0x2E 的中断处理器程序,并使用寄存器存储系统调用号,在中断处理程序中根据不同的系统调用号来调用不同的内核函数[5]。

2.2 自制操作系统

如果实践教学安排是由学生自己实现一个操作系统,这部分内容可以先以实现键盘和鼠标中断为例,通过这部分实验,学生可以非常直观地认识到如果没有中断技术,设计的操作系统是无法进行交互的。

选用《30 天自制操作系统》这本教材为例,在以自制操作系统为实践内容时,第一部分实验都是操作系统的启动,对应着教材第一天至第三天的内容。第二部实验就是要解决中断处理,在教材第四天至第八天的内容中,安排了画面显示,实现了字符的显示和键盘鼠标事件的中断处理[6]。说明操作系统启动后,用户要想和系统进行交互,在所有管理功能实现之前,首先要能够响应键盘中断和鼠标中断。要使用中断,先将全局段号记录表和中断记录表正确无误地初始化,接着初始化可编程中断控制器,最后完成中断处理程序的制作。另外后面定时器和多任务的实现等功能都同样避不开中断技术的使用。

选择自制操作系统,更能直观地说明中断对操作系统的重要性。只有解决了中断,才能通过鼠标和键盘同操作系统交互,才能继续实现后面的内存管理、多任务管理和设备管理等功能,随着后续功能的实现,学生会发现中段技术的应用几乎贯彻了自制操作系统的整个过程。这种直接的认知会加深学生对中断和操作系统关系的透彻理解,但在实现上需要更多学时。

3 结语

中断技术作为操作系统原理课程中不可或缺的一部分内容,要求学生在学习操作系统各管理功能之前就要有个宏观概念,有助于对后续课程内容的理解和灵活应用。文章探讨中断技术和操作系统理论及实践部分的结合方式,帮助学生理解中断技术在操作系统课程不同功能模块中的作用,在教学过程中起到了较好的效果,帮助学生理解概念的同时提高设计操作系统的能力。由于操作系统是个庞大的系统软件,文中探讨还有不完善之处,后期的教学活动中会进一步研究。

猜你喜欢
调用中断进程
TMS320F28335外部中断分析与研究
一种航天器星上时间获取方法
雪后林鸟
Dalvik虚拟机进程模型研究
快速杀掉顽固进程
不留死角 全方位监控系统
跟踪导练(二)(5)
基于Android Broadcast的短信安全监听系统的设计和实现
中外民主法制进程专题复习
利用RFC技术实现SAP系统接口通信