“操作系统原理”课程开放性实践教学探讨
2014-08-15金炜东
蒋 鹏,金炜东
(西南交通大学电气工程学院,四川成都 610031)
“操作系统原理”是计算机科学与计算以及相关专业的一门重要的专业基础课程[1]。该课程的实验课使得学生能够动手修改操作系统内核并进行编译和运行,是一种解决目前操作系统课程过于理论化的一种有效手段[2]。但是目前的实验课基本上以使用操作系统接口为主,难以深入到处理机管理、内存管理等操作系统原理级别的知识点。因此,迫切需要一种不依赖具体硬件而又可以修改运行的操作系统供学生实验。
1 操作系统实验分类
国内外很多高校都开设了操作系统实验,主要包括验证型实验、操作型实验、源代码剖析实验以及拓展设计型实验等四大类别。
(1)验证型实验是指验证“操作系统原理”中一些常用的技术,例如进程调度算法等。一般编写一些应用程序来模拟验证“操作系统原理”中一些较为抽象和难以理解的章节。这类实验方法比较简单,可以直观地给学生展示一些算法的难点。但是由于这类方法是通过模拟实验来完成,无法模拟和验证与硬件相关的章节例如中断处理等。另外,这类方法也无法给学生一个完整操作系统的概念。
(2)操作性实验是目前比较常见的一种实验类型。主要是通过在Linux或者Windows上让学生体验一下操作系统提供的接口,包括命令接口和编程接口。通过操作系统的接口,可以使得学生直观地观察到操作系统提供的服务和采用的技术。另外,这类实验的好处在于可以使得学生在真实的操作系统上进行实验,有利于对操作系统本身的理解。但是,这类方法最大的问题在于无法深入理解操作系统的底层和原理。
(3)源代码剖析实验是目前国外比较常见的“操作系统原理”实验方法。学生可以通过分析Linux和MINIX等开源的操作系统,较为深入地理解操作系统提供的服务以及组织结构。这种方法可以涵盖绝大多数操作系统原理内容。要求学生和教师对于Linux和MINIX等操作系统熟悉程度较高。
(4)拓展设计型实验是目前比较流行的一种实验方案[3]。该方法通过修改操作系统内核达到拓展操作系统的目的。这种方法一般要求在实际的硬件环境下,通过编译和运行一个操作系统以达到教学目的。但是这种实验方法成本较高,需要专门的硬件和软件平台,不利于大规模推广。
综上所述,目前操作“系统原理课程”实验改革还处于一种尚待完善的阶段。由于受到硬件环境限制,目前大多数实验课程还都停留在使用操作系统层面上。虽然一些重点大学已经开设了修改和拓展操作系统的实验,但总体而言有针对性的拓展和修改操作系统的实验还比较少。
我们针对本科教学的特点,提出一种针对操作系统实验课程设计的新思路和新方法。该方法通过修改开源操作系统以拓展操作系统功能为目标,使得学生能够动手修改操作系统和根据需要拓展一个简单的操作系统。该实验无需特定的硬件平台支持,就在Windows平台上加上VC++编译器即可完成操作系统的修改和运行验证。
2 操作系统实验选择
操作系统实验首先一定是开放源代码的,这样学生才能深入到操作系统内部进行研究。现有大家熟知的开源操作系统Linux和MINIX以及一些嵌入式操作系统例如eCos和ucosII等可供选择,采用哪种策略才能选择一个便于学习的操作系统是一个需要解决的问题。我们认为,作为教学用途的开源操作系统应该具备代码精简 、便于学习、功能完善 、易于移植和不依赖特定硬件等几个特点。
虽然Linux等操作系统功能强大,但学生难以在短时间内掌握这样庞大的操作系统。因此,我们选择了FreeRTOS作为教学的操作系统[4]。FreeRTOS是一种实时嵌入式操作系统,其代码精简,核心代码少于5000行。该系统包含相对完整的基于时钟中断的抢占式内核,以及信号量、锁和内存管理等多种常见操作系统服务。另外,FreeRTOS能够在VC++下编译,能够在Windows环境下模拟执行。这就不需要特定的硬件支持就可以让操作系统运行起来。因此选择该操作系统作为学习系统具有修改后即可运行等便于学习的特性。
3 操作系统实验内容
我们为该课程设计了进程管理、同步与死锁、处理器调度和内存管理等四个主要实验。其中前两个实验为基本实验,是每个学生都必须参加的实验。后两个实验为拓展实验,其对学生的编程能力要求较高,适合于有兴趣的学生。每个实验相对独立,但也有一定的关联性。
(1)进程管理:通过FreeRTOS创建新的进程使学生能够深入了解进程创建的过程以及PCB(Process Control Block)的作用。由于FreeRTOS的PCB相对比较简单,只有栈指针、标识和优先级等选项,而且可以通过VC++的断点调整功能跟踪一个任务创建的过程。结合观察结果,深入分析内核相关代码,从而实现对进程管理原理的深入理解。
(2)处理机调度:FreeRTOS采用的基于时钟中断的优先级抢占内核。为了使学生深入直观地了解抢占式内核,该实验要求对FreeRTOS调度器进行修改,将任务调度信息储存到一个特定格式的文件。通过分析不同优先级任务调度情况,可以让学生深刻体会到时钟中断是触发调度的重要契机。而且当高优先级任务进行就绪队列后,时钟中断可以使高优先级任务立即抢占低优先级任务。
(3)同步和死锁:通过创建三个FreeRTOS的任务,并争夺四个信号量来模拟死锁情况。通过该模拟死锁,使学生深刻理解了死锁的四个条件:互斥条件,请求与保持条件,不剥夺条件和环路等待条件。
(4)内存管理:由于FreeRTOS自带的内存管理算法相对比较复杂。本实验设计将FreeRTOS的内存分配和释放算法切换至简单的固定分区分配算法,即将内存划分成几个不同大小的分区,每个分区设置一定数目的内存块供系统使用。
该实验的目的是让学生了解内存分配的基本原理,以及不同内存分配算法的优缺点。
上述四个主要的实验内容构成了“操作系统原理”的实验主要部分,基本覆盖了“操作系统原理”这门课程的重点和难点部分。在实验中,每组学生选择完成其中一个或者多个实验。在实验过程中,根据学生的学习能力和兴趣的不同,设置基本实验和拓展实验两大类型。由于实验可以在学生自己的计算机上完成,因此不需要进入专门实验室就可以完成实验。
4 结语
本文通过一个在Windows环境下可以执行的实时操作系统FreeRTOS,实现了使学生深入了解操作系统的目标。由于该操作系统的精简和较好的可移植性,学生可以通过阅读操作系统代码和修改操作系统功能来全面和深入的学习一个实时操作系统,从而避免了“操作系统原理”这门课程过于理论化的问题。当然,学生在实现“操作系统原理”实验改革方面还是遇到了不少困难。例如学生C语言基础较差,难以看懂操作系统内核代码等。
[1] 汤子瀛 哲凤屏 汤小丹,计算机操作系统,[M].西安:西安电子科技大学出版社,2004。
[2] 陈渝,向勇,“操作系统”课程实验教学探讨,[J].北京:计算机教育,2009(14):135-136
[3] 刘乃琦,蒲晓蓉,刘丹.计算机操作系统精品课程建设,[J].北京:计算机教育,2006(7):17-20
[4] http://www.freertos.org/