针对实践的操作系统实验教学研究
2012-04-29王春爽,王德广,张雪,贾慧敏
王春爽,王德广,张雪,贾慧敏
摘要:操作系统是计算机最基本的系统软件,是所有应用程序开发的基础,操作系统课程在计算机相关专业的本科教学中,具有非常重要的地位。在该门课程中,既要讲授操作系统的基本概念和典型的实现技术,又必须通过具体的例子说明它们的原理,并充分利用实践教学加深学生的理解。本文将对操作系统课程中的实验教学方面进行研究,提出改革方法,以全面提高学生的实践能力。
关键词:操作系统;实验教学;实践能力
中图分类号:G642.0 文献标志码:A文章编号:1674-9324(2012)12-0280-02
一、操作系统教学的内容和现状
操作系统是计算机最基本的系统软件,它控制系统的所有资源,是所有应用程序开发的基础。其学科的特点,决定了在教学中不仅要强调基本概念和基本原理,更要强调它的设计与实现技术。在一般本科院校针对计算机及软件工程专业制定的培养目标中,都会要求学生具有在相关领域继续学习的能力,同时会将加强学生设计和实现操作系统的能力列入其中。由此可见,实践能力被作为非常重要的指标,可目前的实际情况则远非如此。
操作系统是全国计算机科学与技术专业硕士研究生入学考试课程,由于考试大纲的涵盖范围比较集中于理论方面,于是日常教学往往将进程管理、内存管理、文件系统管理和设备管理的设计原理和实现技术作为构成操作系统课程的主要知识体系,实例研究也主要以Linux系统为主,与实际的操作系统实践相差较远。Andrew S.Tanenbaum曾指出,对于操作系统这门课程,学生应该学习那些在实践中真正有用的概念,而不仅仅是寻求理论上的完善,许多内容已经被证明在操作系统的设计和软件开发实现中并不实用,如解决死锁的银行家算法等,理应压缩相关教学内容的课时,分布给实用性更强的领域。
二、操作系统实验教学的内容组织
操作系统课程具有原理多、概念抽象、内容设计范围广等特点,教学内容中包括操作系统内部工作原理、相关概念、实现技术与算法等,在有限的学时中覆盖所有内容是不可能的,而其中用于实践教学的学时将更加有限,有必要进行合理的设计,以达到充分提高学生动手实践能力的目的。因此,在内容选择上,应该坚持以下原则:
1.明确教学目标,突出学科重点,不求面面俱到。
2.强调实用的算法和具体的实现技术,尽可能做到理论联系实际,原理和实现技术相呼应。
3.实例研究以Linux系统为主,都是要辅以Windows系统的实现方法。
同时,学生的兴趣和能力也有很大的差异,针对不同的学生,应该制定不同层次的教学目标。经过教学实践,本文认为可以分成基本目标和高级目标两个层次:
1.基本目标:要求学生掌握操作系统的基本概念和典型的实现技术,在应用软件设计中能够借鉴操作系统设计中的思想和方法,比如在并发程序设计中能够熟练运用信号量(Semaphore)等方法解决进程间通信(InterProcess Communication)问题,设计进程同步的算法。这个目标是作为计算机及软件工程专业本科生必须达到的目标,是操作系统这门课程教学的基本要求。
2.高级目标:要求学生能够综合运用所学知识对具体的操作系统进行分析,并且有能力设计和实现一个小型的操作系统,比如嵌入式操作系统。想要达到这个目标,学生需要继续深入学习,并且进行大量的实践,在日常教学有限的实验课时中很难实现。因此,应适当增加课外实践,对于部分动手能力比较强的学生,通过相关的课程设计,可以自己动手实现一个小型的操作系统。
基于上述原则和不同的培养目标,对于实验教学内容的安排可以包括如下三个方面:
1.进程同步算法:进程管理是操作系统课程的重点也是难点,现代计算机系统广泛采用多任务环境,应用软件也日趋复杂,其中涉及大量资源的共享与竞争、多个任务之间的通信与同步等问题,这些问题的基础就是操作系统的并发问题。因此,应该围绕互斥与信号量的实现技术设计实验,要求学生能够设计进程同步算法,并进行实例分析。
2.页面置换算法:内存管理是操作系统课程的另一个重点,存储空间的分配和管理尤其为软件开发人员重视。现代操作系统普遍采用分页式(Paging)结合虚拟存储(Virtual Memory)的方法解决内存分配的问题,学习和研究页面置换算法、围绕其设计实验非常必要。要求学生能够实现基本的页面置换算法,能够进行横向的比较,并且自行设计置换方法。
3.设计并实现一个小型操作系统:要求学生对操作系统相关基础原理进行深入研究,对目前应用的具体操作系统进行分析和剪裁,设计并实现一个至少包含进程管理、内存管理、文件系统管理和设备管理等主要内容的小型操作系统,此部分实验应作为课外选做内容。
三、操作系统实验教学的方法
不同的算法,在实验教学中的方法是不尽相同的,应根据实际情况具体实施;学生层次不同,对于编程工具的掌握和编程能力差异很大,指导方法也应有所区别。以进程同步算法为例,应首先让学生明确信号量的物理意义,了解引入信号量是为了操作系统的层面上解决进程并发带来的结果的不确定问题,从而引导学生用忙等待(busy waiting)或阻塞(blocking)的方法实现信号量的程序代码,从资源等待的角度出发分析设计进程同步算法。这样的实验教学,有助于加深学生对进程管理的了解,对于操作系统内资源分配的问题,也会有初步的认识。
操作系统是人设计的,尽善尽美的系统是不存在的,因此在指导学生自己开发小型操作系统时,要明确是在一种特定的环境和目标之下,设计和实现一个符合实际需要的系统。这样,在实践总结时,学生会从设计者的角度出发,总结出自己在设计该系统时主要着重解决的是哪一方面的问题、如何解决的问题以及为何采用此种方法来解决问题。通过这样的实践,会让学生对操作系统的原理深入了解,同时增加了自己的分析内容。
四、结语
操作系统在计算机系统中占有重要地位,操作系统课程是相关专业的核心课程,合理的定位教学目标、适当增加实验教学的比例和难度是非常必要的。本文从操作系统实验教学的现状入手,提出了在日常教学中对实践环节进行改革的一些探索和方法,可以有效地提升学生对本门课程的认识和兴趣,同时增强动手能力。
参考文献:
[1]Andrew s.Tanenbaum.现代操作系统[M].第3版.陈向群,马洪兵,等,译.北京:机械工业出版社,2009.
[2]William Stallings.操作系统精髓与设计原理[M].第5版.陈渝,译.北京:电子工业出版社,2006.