应用驱动的操作系统教学研究

时间:2022-10-14 11:59:51

应用驱动的操作系统教学研究

摘要:针对目前操作系统课程教学中存在的不足,提出一种应用驱动的操作系统教学模式,即教师布置一些有针对性的实验,促使学生学好操作系统基本理论并用理论知识指导编程实验,通过编程实验加深对理论知识的理解。

关键词:操作系统;教学实践;应用驱动

操作系统在现代社会生活中起着越来越重要的作用,除传统的计算机外,手机、家用电器、汽车电子、工业控制设备中大量的嵌入式应用都需要操作系统。操作系统是计算机科学与技术及相关专业的一门主干课程,掌握操作系统基本原理可以提高学生应用开发的实践能力,有利于学生对相关后续课程的学习。传统的操作系统教学方法存在一些不足之处,需要改进以加深学生对操作系统原理的理解,增强学生应用理论知识解决实际问题的能力。

1 教学中存在的问题

操作系统的教学包括理论讲授和实践环节,在多年的教学实践中,我们发现操作系统的教学普遍存在一些不足之处。

1)课时安排不尽合理。

在教学中,有的学校将操作系统原理和操作系统实验作为一门课,也有很多学校将二者分成了两门课;但无论是哪一种方式,大部分学生都觉得实验学时安排较少。对于学习自主性不强的学生而言,这是个大问题,原因在于绝大部分应用软件都需要利用操作系统的功能,因此操作系统实验除了要验证操作系统的一些理论外,还需要为学生进行应用软件开发提供实践锻炼的机会。

2)理论讲授内容不能反映操作系统的最新发展。

类似于其他计算机软、硬件技术,操作系统也经历了系统结构与实现技术的变更与发展。早期的操作系统由于受硬件、程序设计语言及软件设计技术的限制,一些设计原理与实现技术相比现代操作系统已经过时或不合理,而现代操作系统则运用到一些新的概念和技术,如现代操作系统中已经很少采用存储管理中的覆盖技术,作业的概念也被淡化,而越来越多地用到操作系统触摸屏技术、语音控制技术、包括手机操作系统在内的嵌入式操作系统及相关技术。这些内容在大部分教材中也都没有反映出来。

3)与其他课程教学的联系不紧密。

操作系统课程的教学需要其他一些专业课程的支持,这些课程包括计算机组成原理、高级语言程序设计、编译原理、汇编语言程序设计等。由于高校中这些课程的教学往往由不同教师承担,不同课程的任课教师之间交流很少,因此操作系统课程教学还需要与这些课程的教学加强联系。虽然学生已经学习了高级语言程序设计,但是很多高级语言程序课程都是以讲授相关的语法为主,很少涉及如何利用这种程序设计语言调用操作系统功能等方面的内容,然而在实际的软件开发中不进行操作系统功能调用是很难想象的,从而导致学生在面对实际问题的时候常常感到无从下手。例如,大部分学生在学习了C语言程序设计之后,对于一些问题,包括main函数返回值的作用、main函数中两个参数argc和argv的作用等,仍然不是很清楚。

4)实验安排存在不足。

对于操作系统这类实践性很强的课程,让学生真正掌握相关的知识以及实验环节非常重要,而课堂讲授只是一种效果很一般的教学手段。研究表明,对于需要理论和实践相结合的课程,如果只有课堂讲授,学生只能掌握大约30%的知识;但是目前很多实验安排都是模拟性质的,跟实际应用之间还有一定距离,从而导致学生不能很好地将理论和实际应用相结合,学习目标不够明确,学习积极性不高。另外,程序代码和文档都很容易拷贝,导致学生在实验过程中经常出现复制或抄袭现象。

5)成绩考核不尽合理。

目前的考核成绩是由平时成绩、期末考试成绩以及实验或课程设计成绩按一定的比例加权计算得出。一般来讲,期末成绩所占比重较大,但是期末考试是采用卷面考试的方式,主要以理论为主,因此存在两种不太合理的情形:①学生虽然最终成绩好,但是实际动手能力差,运用理论知识解决实际问题的能力弱;②个别学生平时不认真学习,在期末考试前通过死记硬背也能及格。我们认为考试既要考核学生的理论知识,又要考核学生应用理论知识解决实际问题的能力,而且考核应该贯穿在整个学习过程中,而不应该只在学期末进行。

2 以应用为驱动的教学方法

根据存在的问题,我们对操作系统的教学方法进行了改进,由于学生基础较差,缺乏钻研理论知识的兴趣,不能将理论用于实际软件开发,因此我们研究并设计了一些示范性、有广泛应用的、能覆盖这门课程基本内容的实验。学生通过完成这些实验能直观认识到学习操作系统理论的作用,从而增加学习理论的兴趣和动力,以理论指导实践并通过实践进一步加深对理论的理解。

我们设计的实践性实验分为3层模式,即学习用户模式下的系统功能调用、掌握监控操作系统行为的方法和工具、了解部分操作系统内核的实现。为了提高学生的学习兴趣,在讲授相关理论之前,我们先布置与该理论相关的实验,在课堂上为学生演示教师设计的接近实际应用的实验,让学生知道这些理论可以应用到相关的软件开发中;提前布置实验以便学生预习教师将讲授的理论知识,这样,在教师讲授理论时,学生已经对相关内容有了一定了解。

在理论教学中,我们让学生通过讨论变被动学习为主动学习;在教学实践中,我们发现如果学生没有对相关内容进行预习,那么讨论将很难开展。实验安排的提前促使学生预习,而教师的实验演示则让学生对相关内容的应用背景有了直观认识,这使得讨论活动的开展比较顺利。

对于实验用的操作系统平台,我们选用Windows和Android。选择Windows平台是因为考虑到很多应用是基于Windows的,这样学生更容易将所学的课程知识与将来的实际工作结合得更好。另外,虽然Windows不是开源软件,但是由于有Microsoft公司Windows Research Kernel和Curriculum Resource Kit等项目的支持,学生还是可以完成从系统调用到部分实现操作系统内核方面的实验。由于目前移动平台在生产和生活中应用得越来越广泛,让学生了解移动操作系统平台和初步掌握基于移动操作系统平台的开发就显得非常重要。目前移动系统中用得较多的有嵌入式Linux,Android,Symbian,iOS和VxWorks等。在教学中,我们选用Android完成移动平台的相关教学和实验。

选择Android有多个方面的原因。首先,Android系统的开放性使得它成为一个当前被广泛使用的系统,与教学性质简单的操作系统平台相比,该系统能让学生学习到很多只有通过实际运用才能掌握的知识。其次,由于Android基于开源的Linux内核,因此学生可以充分利用Linux平台丰富的工具和开发文档,同时也可以把在其他Linux相关课程中学到的知识很容易地用到Android上。第三,Android是目前增长最快的移动平台,很多学生都有基于Android平台的移动终端,如平板电脑和手机,因此基于Android的开发平台容易搭建,开发实验也容易验证和应用,从而增加学生的学习兴趣。第四,Android作为一个开源系统,学生能够完整地了解整个系统,包括操作系统内核、相关的开发库及图形环境。第五,作为一个商业平台,Android还在不断地开发和改进,以便学生能够在现代操作系统发展过程中更好地学习它。最后,Android作为一个商业化平台,有商业公司对Android及相关的开发工具进行维护和更新,使教师能够更加专注于将有限的资源用于教学,而不是花大量时间研究和开发维护教学用的操作系统。

基于原来教学中存在的问题和以上考虑,我们从以下几个方面对操作系统课程教学作出改进。

1)课时安排。

实验学时的增加让学生在验证操作系统一些基本理论的同时,还能结合应用软件开发锻炼学生利用操作系统功能提高软件开发效率的能力。我们在课程后期专门安排了一个操作系统课程设计项目,让学生了解软件开发的一般流程以及操作系统在其中的作用,如何利用操作系统把独立开发的多个模块组织起来以及如何检验模块间的互斥和同步等。通过这一调整,理论讲授的课时虽然减少,但由于学生通过实验加深了对理论的理解,因而也促进了学生对理论知识的掌握。

2)理论讲授内容。

我们对教学大纲进行调整,删除一些已过时的内容,同时增加现代操作系统中的新概念和技术。例如:在淡化作业概念的同时,增加线程部分的内容;介绍当前软件开发的基本模式,让学生了解软件开发的基本架构;在软件开发平台上,不再单一地强调PC平台的软件开发,也让学生对嵌入式平台如iOS,Android,VxWorks,Windows Phone以及云计算等都有所了解。

3)与其他课程教学的联系。

操作系统课程的教学需要其他一些专业课程的支持,这些课程包括计算机组成原理、高级语言程序设计、编译原理、汇编语言程序设计等。在教学中,我们有意带学生复习这些课程中与操作系统原理相关的内容。例如:对于一个简单的C语言程序,我们通过复习和讲解该程序的编译和链接,对照源代码、汇编代码及机器码,让学生了解程序执行前的处理过程;再结合操作系统进程空间的组织以及进程的执行过程进行讲解,加深学生对程序运行相关知识的了解。

4)实验。

实践性学习在计算机科学的教学中起着重要作用。在操作系统教学中,实践性编程项目尤其重要。操作系统的实验可以通过两种方式划分:①看实验是抽象的还是具体的,抽象的实验是为了让学生理解操作系统中所用的算法和技术,实现或者模拟部分算法和技术,具体方法则是从实际角度强调操作系统相关功能的设计和实现;②通过内部观点和外部观点来区分,内部观点是从操作系统设计者的角度看操作系统,而外部观点则是以用户或应用软件开发人员的身份使用操作系统提供的功能。

鉴于本校学生的实际情况,我们在课程设计中主要安排具体的、外部观点的实验,以应用为主导,鼓励学有余力的学生完成部分实现操作系统具体功能的实验,在评定成绩时给予一定加分。由于程序代码很容易复制,因此常常出现学生拷贝代码应付实验检查的情况。为了最大限度地防止这种情况的出现,实验检查主要采用两种方式:①随机抽取代码中的某一部分,让学生解释这些代码的作用;②随机删除代码中的某几行,让学生在限定时间内把代码补充完整。除了一般性实验,我们还在下半学期安排了课程设计,让学生能够综合运用本学科知识,为开发较大规模的软件奠定基础。

5)考核。

对于考核,我们严格检查学生的实验和课程设计,加大平时成绩、上机实验成绩、课程设计成绩在总评中所占的比例。学生只有积极参加课堂讨论,按时完成作业,高质量地完成实验和课程设计,才可能在最后的成绩评定中得到较高分数。

3 结语

针对当前操作系统课程教学中存在的一些问题,我们提出一种以应用为驱动的教学方法:以应用为导向,让学生根据应用的需要学习基本理论。教师通过设计一系列贴近实际软件开发的实验,以便实验能基本覆盖操作系统课程的大纲内容。学生通过完成这些实验项目实践,加深了对理论知识的理解并提高了应用开发水平,了解到操作系统的理论在软件开发中的重要作用,既增加了学习理论知识的兴趣,又提高了应用软件开发水平。

我们提出的操作系统教学模式已在楚雄师范学院的嵌入式操作系统教学中进行了实践。该模式更注重实践,强调结合社会需求培养学生的动手能力,灵活运用考核方式充分调动学生学习兴趣,激发学习积极性,在实际教学过程中收到了良好效果,也获得了学生好评。

上一篇:“数据结构”课程教学中的案例设计及应用 下一篇:基于GDIO的财经类院校计算机专业特色型人才培...