前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的操作系统实验报告主题范文,仅供参考,欢迎阅读并收藏。
关键词:操作系统;实验教学;教学质量;应用型本科
1操作系统实验教学的重要性
“操作系统”课程是计算机科学与技术专业必修的一门专业基础课,本课程的学习目的是让学生掌握操作系统的基本概念、基本原理、设计方法和实现技术[1-2],为今后在相关领域的工作打下坚实基础。
实验教学是“操作系统”课程必不可少的环节,我们不仅要设置实验,而且还要重视实验,使其很好地辅助课堂教学。实验教学的质量直接影响学生的就业机会和工程实践能力[3]。德国教育家第斯多惠曾经说过:“教学的艺术不在于传授的本领,而在于激励、唤醒和鼓舞。”而实验教学的重点就是培养学生的好奇心和求知欲,帮助学生自主学习、独立思考,鼓励学生发现问题、提出问题,并通过实验过程找到解决问题的方法和途径。
2现状与存在的问题
操作系统实验教学的重要性使我们有足够的理由要教好这门课,但是在实际的实验教学活动中,学生要真正完成好操作系统的实验内容却并不是十分容易的事情。下面从专业培养方案的定位、前导课程
影响、选用操作系统以及实验教学质量监控等方面进行分析。
2.1应用型本科计算机专业培养方案的定位
长期以来,我国计算机专业教育带有浓厚的计算机系统研究型人才培养色彩,与应用型本科人才培养目标的“理论够用,注重实践”的特点不太相符。国家教育部强调对不同院校不同层次的学生要采取分类指导的原则,应用型本科计算机类学生的培养目标是培养既懂得计算机专业的理论知识,又掌握计算机应用技能的高级应用人才。对此问题的研究,我们课程组在文献[4-5]中已进行过论述,特别需要说明的是我们课程组负责人范辉教授参加了由教育部教学指导委员会组织的全国高校操作系统课程研究与资源建设项目,并在其中承担了应用型本科操作系统课程的部分研究与建设工作,使我校的应用型本科操作系统的课程建设起到了很好的示范作用。
2.2前导课程的影响
“操作系统”的前导课程有“程序设计语言”、“数据结构”、“计算机组成原理”和“汇编语言”等,它的后续课程包括“计算机网络”、“数据库原理”和“编译原理”等计算机学科的重要课程,如图1
作者简介:孙述和(1966-),男,山东烟台人,副教授,硕士,研究方向为计算机应用、图像处理;谢青松(1965-),男,副教授,硕士,研究方向为算法分析与设计、信息安全技术;董付国(1977-),男,山东聊城人,讲师,硕士,研究方向为数字图像处理、信息安全;杜萍(1981-),女,山东青岛人,讲师,硕士,研究方向为基于角色的访问控制。
所示。大部分学生在学任何一门课之初都比较认真,主观上有较强烈的学好这门课的愿望,但是随着课程的日益深入,课程特征不断显露,特别是“操作系统”这门课本身的理论性较强且实验内容对前导课的依赖性很大,从而打击了一部分学生的学习热情,甚至有一部分学生因前导课程学习较差而放弃了操作系统实验作业的完成,从而影响了课堂学习甚至包括后续课程的学习。
图1 “操作系统”的前导与后续课程
2.3选用的实验操作系统
由于操作系统课程本身的原因,使得操作系统实验环境较难选择。大部分教材以Unix系统为实例,而Unix的安装成本又较贵,不太适宜用于学生实验。而传统的Windows操作系统的大部分源代码未公开,具有一定的局限性和不透明性。所以,我们选用Linux作为主要的实验操作系统。但是,由于大部分学生之前都没有接触过Linux,并且还都非常熟悉Windows系统,思维定势难免会给Linux的认识与学习带来一定的难度。
2.4实验教学质量监控
从目前的实验教学情况来看,各个学校对评价工作都较为重视,但存在着只重结果而忽视过程以及考核方式不科学等问题。由于当前互联网技术的高速发展,网络资源不断丰富,在实验过程中,学生的实验报告或设计代码部分存在抄袭现象,这部分学生虽然提交了实验报告,成绩也不错,但实际上,却没有掌握相关的知识。如何在实验过程中进行教学质量监控,合理利用网络资源,避免抄袭,使学生能够既掌握知识又锻炼能力,这为我们的实验教学提出了新的难题。
3提高实验教学质量的对策与方法
笔者结合自己近几年的教学实践,就“操作系统”课程实验教学中遇到的上述问题,从以下3个方面谈谈自己的体会。
3.1化难为易,从主观和客观两方面进行引导
(1) 在学习的主动性方面,潜移默化地消除学生的畏难情绪。
① 在第一节实验课上多下功夫。通过实例告诉学生操作系统实验学习在现在的学习和今后工作中的重要性,使学生从纯粹学好课程的想法变为有目的性的学习。例如,从考研和就业的角度,强调编程能力和动手能力的重要性,并结合前导课程如“高级程序设计”中的线程等相关内容加以说明。
② 结合教师和前面学生的经验,介绍操作系统实验学习的方法和特征,以及可能遇到的困难,让学生针对自身的学习情况,提前准备和查阅前导课程的相关内容,做到心中有数。同时,把一些好的学习技巧传授给学生,让学生知道怎么学、怎么做。
③ 在后面的实验课上,单纯地强调操作系统实验内容重要性的意义已经不大,教师应在每一次布置实验作业的时候,有意识的从应用及工程实践角度,用案例的方式对实验内容加以多角度描述,从而使学生明确实验目的并激发学习兴趣。
(2) 在客观上,化难为易,有针对性地解决学生的学习难题。
① 分层次设计实验要求,如表1所示将学生粗略分为高中低3个层次。
表1学生层次分类
层次前导课程
掌握情况学习兴趣与
学习目的人数
第一层次基础知识
非常扎实学习兴趣非常强烈一小部分
(
第二层次基础知识稳固学习目的明确绝大部分
(>80%)
第三层次基础知识较差学习兴趣不高一小部分
(
对不同层次学生,有针对性地分析并提出解决方案,以帮助他们提高,如表2所示。
表2按层次设计实验要求
层次针对性分析及解决方案
第一层次多加鼓励及肯定,并结合其兴趣点推荐学习资料,引导自学,可在后面的团队实验任务中委以重任。
第二层次按照既定的实验要求和目的进行实验安排。
第三层次放弃部分选做实验,适量延长必做实验的学时,以弥补前导课程的不足并强化必做实验。
② 提供参考程序,帮助学生快速入门。这个方法主要是针对第三层次和第二层次的一小部分前导课程学习效果不好的学生而言的。我们以实验“进程调度模拟程序设计”为例进行说明。
例1:进程调度模拟程序设计
实验目的:加深对进程概念和进程调度算法的理解。
实验内容:(a)给出进程调度的动态优先级和时间片轮转调度算法描述;
(b) 用C语言设计一个对n个并发进程进行调度的程序,每个进程由一个进程控制块结构表示;
(c) 调度程序应当包含两种不同的调度算法,运行时可以任选一种,以利于分析和比较;
(d) 程序应能显示或打印各种进程状态和参数变化情况,便于观察。
实验参考方案:对于这个实验,首先要明确实验目的是通过编程加深对进程概念和算法的理解,对算法的理解是重点,而非编程本身。我们给编程确实有困难的学生,提供一个实验参考框架,并在此基础上基本实现动态优先算法,只留下一些涉及到该算法核心思想的代码让学生自己填空,最后重点考察学生在此框架基础上自己编写的时间片轮转调度算法的实现。当然,对于绝大部分基础较好的学生,我们还是建议程序框架也要自己搭建。
③ 我们还可以多鼓励学生充分合理利用网络资源,如果有某些疑问或未解决的问题可以自己到网络上寻找答案或到一些论坛上参与讨论,增加自己学习和丰富操作系统知识的途径。
3.2由浅入深,多角度多层次学习掌握Linux系统
我们选择Linux做为实验操作系统,由于大部分学生之前都没有接触过它,所以做实验时应该从易到难,一步步的来操作,如图2所示。
图2Linux系统学习阶段示意图
我们的方法是首先熟悉Linux简单操作的验证性实验,包括基本的应用级实验和系统管理级实验。在这一阶段,可以引导学生通过对熟悉的Windows操作系统的相关功能,对比学习Linux操作系统的功能,如表3所示。
表3操作系统验证性实验列表
序号实验内容LinuxWindows
1系统安装√√
2系统的用户接口和编程界面√√
3系统的界面认识(窗口系统、文件管理和系统管理工具等)√√
4使用U盘√√
5屏蔽Windows桌面上的“回收站”√
6观察注册表内容√
其次,在熟悉操作系统的基本操作与环境之后,进入设计性实验阶段,编程模拟实现操作系统的某些功能模块,如表4所示。
表4Linux系统设计性实验列表
序号实验内容(对应算法或命令)必做选做
1进程调度模拟程序设计(动态优先级算法、时间片轮转调度算法)√
2页面置换模拟程序设计(OPT、FIFO、LRU)√
3文件系统模拟设计(login、dir、read、open、close等)√
最后,进行实验内容难度较大,但很有意义,也很有意思的源代码阅读级实验,这部分内容建议学生分组协作完成。可选内容有很多,例如进程创建、内存分配、系统安全性、磁盘驱动、文件的读或写、虚拟文件系统、idle进程等,每组学生可自主选题,最后的实验报告,由团队统一提交。表5所示是我们2008~2009年度第二学期学生源代码阅读级实验分组情况汇总。
表5源代码阅读级实验分组情况列表
序号实验内容是否团队人数/组
1进程创建√9
2内存分配√10
3文件的读或写√8
4虚拟文件系统√10
5网络传输√10
6设备管理√10
3.3改进考核方式,加强实验教学质量的监控
要加强实验教学质量监控,保证操作系统课程的教学质量,我们对传统的只提交实验报告的实验考核方法从如下几个方面进行了改革与实践:
(1) 提高实验成绩在最终课程成绩中所占比例(如图3所示),引导学生重视实验教学。
图3 提高实验成绩比例示意图
(2) 对设计性实验和综合性实验的成绩评定,应
在实验报告的基础上,综合多种形式进行考核量化。我们的方法是在实验过程中,不定时抽查部分学生的程序,并有针对性的提问和讨论,保证一学期每个学生至少有一次提问的机会,按回答情况进行打分。团队形式的综合性实验还要求组长提交任务分配情况以及个人完成情况,将协作能力、资料分析能力等纳入考核指标。
4结束语
我校“操作系统”(应用型本科)从2004年被评为“校级精品课程”和2006年被评为“山东省省级精品课程”以来,在更新教学与实验内容、加强教学梯队建设与教材建设、改进教学方法和教学手段、加强素质教育、培养创新人才等方面不断进行探索与实践,已开始显现初步成效。近年来,我校计算机专业学生在山东省软件设计大赛、学生科研立项、考研录取率、毕业生就业率等诸多方面的成绩稳步攀升。总之,要让学生学好“操作系统”、做好操作系统实验、提高人才培养质量,还需要我们不断在教学实践中加以发现和总结。我们将不断努力,逐步完善操作系统实验教学体系,在改革中探索、提高,培养出更多适应社会需要的应用型人才。
参考文献:
[1] 谢青松,范辉. 操作系统课程教学之我见[J]. 计算机教育,2004(9):75.
[2] 王国华.《操作系统》实验课程的设置与实践[J]. 山西财经大学学报:高等教育版,2006(4):108.
[3] 郭观七,周细义,张舸. 应用型本科计算机专业实践教学改革探索[J]. 计算机教育,2009(12):85-87.
关键词:操作系统;计算机专业师范生;课堂教学;实验教学
中图分类号:G642 文献标识码:B
1引言
2007年3月5日国务院总理在政府工作报告中指出,在教育部直属师范大学实行师范生免费教育。这意味着,近代中国在相当长时间内实行的师范生免费教育制度,如今将重新返回大学校园。自2007年秋季入学起,教育部直属6所师范大学:北京师范大学、东北师范大学、华东师范大学、华中师范大学、西南大学和陕西师范大学开始招收生免费师范生。华中师范大学计算机科学系已经招收了07级和08级2届计算机专业的免费师范生,一共约200人,以后还会继续招收。由于计算机专业不像中文、数学、英语等专业那样原来就是师范专业,有现成的针对师范生的授课大纲和经验,这些学生的课程如何设置成了一个亟待研究解决的问题。
“操作系统原理”课程是学习计算机科学的必修课程,又是一门理论性与实践性都很强的课程,要求学生掌握计算机操作系统的基本原理、基本概念;了解操作系统的设计方法;学会使用常用的操作系统;而且要求学生能够理解和实现简单的相关算法。这门课程的内容和教学方法针对师范生如何调整,是本文要说明的主要内容。
2针对师范生的“操作系统”课程的问题
2.1课程的地位问题
毋庸置疑,在原来的教学体系中,“操作系统”课程处于专业课的核心地位,是极为重要的专业必修课,但是对于毕业后要从事中小学信息技术教学的师范生来说,这门课程的地位如何?这需要从分析中小学对信息技术教师的基本要求入手,为此笔者分析了国家制定的高中初中和小学的信息技术课程标准,并访问了一些中小学的信息技术教师。
我国在中小学对学生信息技术教育的目标主要是激发和培养学生的兴趣,使学生能掌握某些技术的运用,并鼓励创新。
初中和小学的信息技术课程的基本要求有:
(1) 了解计算机的结构和工作原理。
(2) 能利用因特网有效获取信息,解决实际问题。
(3) 能使用文字处理、绘画、电子表格等简单软件表达想法。
(4) 能运用常用远程通讯工具进行合作学习。
高中信息技术课程包括必修与选修两个部分,共六个模块。必修部分只有“信息技术基础”一个模块,选修部分包括“算法与程序设计”、“多媒体技术应用”、“网络技术应用”、“数据管理技术”和“人工智能初步”五个模块,信息技术课程各模块之间的关系结构如图1所示。
由此可见我国中小学的信息技术教育是以计算机的基础知识和应用为主,在高中包括C或Java语言编程、Dreamware、Photoshop等多媒体工具的使用、Access数据库的使用等,以使用工具为主,同时包含简单的理论知识。
笔者还采访了一些中小学的信息技术教师,他们普遍认为中小学信息技术教师由于学科的特殊性,不可能像其他专业的教师那样只完成教学任务,而是要做很多与计算机有关的工作,如校园网络的建设和维护、网站的制作;竞赛培养如NOI竞赛;为其他专业教师做教学比赛的课件;学校硬件维护,如功能教室、多媒体教室、电视台、网络教室等设备维护。这使中小学对信息技术的教师要求很高,要求教师知识面广,有很强的应用能力,并有一定的专长。
据此可以了解“操作系统”课程虽然不是师范生以后要讲授的课程,但仍然十分重要。在中小学的信息技术基础课程中一般都要讲解Windows系统的使用,师范生通过学习“操作系统”课程能够更好地理解和运用Windows系统;师范生需要做学校各种设备的维护和网络维护,了解各种操作系统的特点和管理方式对他们有所帮助;同时,师范生要有较好的程序设计能力,能为学校构建小的应用或演示系统,学习“操作系统”课程能使他们更好地理解系统调用,提高编程能力。因此,“操作系统”课程仍然是重要的专业必修课。
2.2课时的调整问题
由于“操作系统”课程的内容非常丰富,涉及理论和实验,课时量较大,我系原来的课时是72学时/学期,即每周4节课。并且在下一个学期安排“操作系统课程设计”课程,使学生有时间完成几个大的操作系统试验,如进程的调度和演示、文件系统的模拟和演示等,使学生能够通过编程模拟实现部分操作系统的功能从而进一步加深对操作系统原理的认识,提高动手编程的能力。即便如此还是有很多学生反映课时太少,授课时有些地方讲解得不够详细,例子不够多,编程时有很多困难等等。
由于师范生必须学习许多学校规定的师范类专修的课程,如教师口语(普通话),教师书法,心理学基础,教育学基础,现代教育技术等,计算机专业课程的学习时间有限,必须减少课程,压缩课时。因此“操作系统”课程改成54学时/学期,即每周3节,增加了18个课时的上机试验课时,但减掉了“操作系统课程设计”课程,这样就把2门课程合在一起上了。考虑到“操作系统”课程开始就讲授理论基础,没有涉及到实验的内容,于是上机试验课时间定在第9周之后开始,每周2节。
2.3课程内容的调整问题
我系原来使用的教材是陈向群主编的《操作系统原理(第二版)》一书,这是一本经典的操作系统教材,主要特点是对操作系统的基本原理阐述清楚,并能发反映一些较新的成果和发展方向,同时非常注重操作系统的课程实践,在每一章中都加入了对Linux系统和Windows Server2003系统的分析。其中对Linux系统的分析非常详细,如存储管理一章分析Linux系统的内存管理,分析了Linux系统的内存数据结构、页表管理、页面的分配回收、地址映射等内容,配有相关的图表和代码,使学生很快从操作系统的理论进入到实际,并产生了阅读相关的Linux代码、通过修改部分代码编译自己的操作系统的兴趣,学习效果很好。由于师范生在每一届的人数不到一百人,笔者认为暂时没有必要更换教材。但这本教材的内容很多,由于课时的压缩,必须对授课内容有所删减,具体修改如下:
(1) 减掉了第2章操作系统的硬件环境。因为之前开设的计算机组成原理课程已经讲授了这些知识,不需要再作介绍。
(2) 减掉了第8章死锁。死锁是操作系统中一个很重要的概念,但一些基本概念可以放在进程管理中的进程的同步和互斥中介绍,这一章的内容比较深,学生不容易理解。
(3) 减掉了第9章操作系统设计。由于课程针对师范生,他们主要从事教学和简单的编程、应用,一般不会从事操作系统的设计,故减掉了这一章。
(4) 减掉了第10章操作系统安全。这一章实际上内容很多,在几个课时内讲授没有很好的效果,因此被删除。
有些章节的内容还有一些调整,如在第6章文件系统中去掉了文件系统的性能问题和文件系统的可靠性小节,把文件系统的使用放在实验课中等等。
3教学方法的改革
由于课时限制,必须在比原来更短的时间内教授“操作系统”课程的内容并使学生能很好地掌握,同时希望培养学生的兴趣和创造性,为他们以后的教学工作做出表率,笔者研究改革了教学方法。
3.1对课堂教学的改革
课堂教学是教学中最重要的环节,传统教学方发重演绎、推理、按部就班,教师花很长的时间讲授,但学生不一定理解,束缚了学生的独立思考能力和创造能力。笔者注重培养学生正确的学习方法和良好的自学能力,采用了以下方法。
(1) 注重案例教学方法。“操作系统”课程理论比较枯燥难懂,笔者摒弃了过去只注重书本内容的教授方式,采用分析案例的方法,促使学生从实际出发,运用理论知识分析问题。在授课中用Linux作为实例讲解效果非常好,由于Linux的源代码是公开的,并且用C语言和汇编语言实现,讲解时可以把一部分源代码拿出来进行分析。比如讲进程时,PCB的概念很重要,但又比较抽象,这时可以把PCB的源代码拿出来作为案例讲解。学生通过分析源代码,能很快理解PCB的概念,否则教师可能花费很长时间讲解学生还是似懂非懂。对处理机调度、内存管理、系统调用、中断处理等内容的讲解也都可以先找好的案例进行分析,对学生帮助很大。
(2) 在课堂中穿插提问。提问是教师与学生交流的重要手段,但在大学授课中常常因为班上学生很多、课时紧、学生反应不积极等原因,教师很少提问。其实提问是学生对授课内容的反馈,也是学生参与教学的一种方式,能很好的提高教学效果。笔者把提问成绩作为学生的平时成绩,迫使学生认真思考所提问题,跟上课程进度,同时也鼓励学生广泛阅读相关资料,深入思考,提出问题。对能提出有深度的问题的学生实行加分鼓励,学生通过课程网站、电子邮件等提出和回答的问题也一样计为平时成绩,尽量使所有学生都至少有一次回答问题的成绩,作为期末成绩的重要参考。课堂提问虽然会占用时间,但好的问题能引起学生深入思考,又能使老师了解教学效果,及时调整进度,改进教学方法。
(3) 要求学生预习和复习。由于课时有限,课程进度较快,这需要学生课前预习,从而能更好的理解课堂内容。笔者在每次课前会提出一两个小问题,答案都在课本中,以检查学生的预习情况,在每次课后会展望下次课的内容,方便学生预习。在每一章上完还会提供一些参考资料,包括一些相关网站、原来学生的报告、相关论文等,需要学生课后复习,在后一次上课时随机抽查学生介绍自己看过并感兴趣的内容,上讲台做一个小报告,这种方式培养了学生的自学能力,调动了他们的积极性,活跃了课堂气氛。
3.2对实验教学的改革
实验是“操作系统”课程教学中非常重要的环节,通过实践学习操作系统是最佳的学习途径,但由于课时原因不得不对原来的实验内容有所压缩。笔者开设的操作系统实验内容和原因如下。
(1)Linux操作系统的使用。由于师范生工作后一般会做学校的校园网、实验室等设备的维护工作,可能用于网络服务器和一些设备中的Linux系统是学生应该掌握的。实验要求学生熟练使用Linux系统的图形界面和命令语句,了解系统的文件结构、用户接口等。
(2) 分析Linux操作系统的源代码。阅读并理解操作系统的源代码是学习操作系统设计的一种重要方法,学生可通过分析某个具体的系统较快地掌握操作系统的总体结构和设计思想。笔者选择的教材的最大特点就是每一章中都在最后一节分析了Linux和Windows系统的相应管理方法,这部分内容很多,没有时间全部在课堂上讲授,因此安排在实验中,要求学生分析其中的Linux代码,总结出对应的模块功能。
(3) 模拟实现操作系统的某些功能。学生通过为对操作系统中的一些典型算法的模拟实现,能更好地掌握操作系统的实现原理,使学到的理论知识形象化、具体化。笔者要求学生完成进程调度、作业调度、存储器管理中的命中率问题和文件管理的算法的模拟演示。学生需要选择其中的一个算法编程实现并提供良好的界面演示算法的运行过程,这使学生能更好的认识操作系统主要功能的实现机理。模拟所需的算法、主要数据结构和程序流程图都由教师提供,涉及的软硬件资源和数据结构都是自建的,这样简化了实验,使学生能够在较短的实验时间内在教师的指导下完成编程实验,而不是因为太难无从下手而放弃,能够达到实验效果。
3.3对考核方式的改革
考核方式是对学生学习效果的评价方式,是学生学习的主要参照物。在“操作系统”课程中,面对单调抽象的理论知识,上机试验以提高学生的能力尤为重要。所以笔者改变了传统的卷面考核办法,将总评成绩改为卷面成绩占50%,实验成绩占50%。同时,实验课的考核要详细化、规范化。由于试验是分组进行的,每组交一份实验报告,给一个成绩,应该对小组各个成员有所区分,实验评分时要求小组提交实验报告时按各人的贡献排名,组长排在第1位有5%的加分,组员的成绩按权值递减,分别是100%,98%,95%。这样避免了原来只是由个别能力强的组员完成整个实验,有些组员没有参与的问题,使评分更加合理。对于实验的考核包括上机演示、上机时提问和实验报告3部分,各占试验成绩的40%、30%和30%。每组都有10分钟的提问时间,提出的问题包括整体的设计思想、对开发工具的了解、用到的一些函数或变量的意义、现场对某个功能的修改等等,这样能检查出学生是否是从别人或网上得到的试验程序,得出充分客观的评分。
3.4充分利用网络资源
笔者所在课程组开发了操作系统精品课程网站,网站上有所有的教学课件、实验指导书、教学视频录像等课程内容;提供其它好的操作系统课件、操作系统实验的例子、Linux分析资料等很多有用的资源下载;还包括网上答疑、在线考试和提交作业等特色功能。学生可以在网站论坛上提问,教师能实时做出解答。在线考试系统能自动抽取教师定义的试题库中的试题,组成一份试卷,并在学生答完后评分并给出正确的答案(目前试题库中只有客观题)。教师能够在线布置作业、批改作业并统计成绩。这种方式提高了学生的学习兴趣和学习效率,加强了师生之间、学生之间的交流与合作,并能及时向教师反映学生的学习状况,为课程教学提供了有力保障。
4结束语
计算机专业的师范生还是个新事物,这些学生该如何培养值得我们探讨。我们培养的学生应该能满足现在各地中小学对信息技术教师的要求,又要有一定的前瞻性,能满足学生以后考研的需要。对学生的培养大纲和各门课程的教学计划都要认真研究,使我们的学生有好的理论知识和应用技术,能尽量满足社会各方面的需要。笔者根据自己的理解和实践,谈了自己对计算机专业师范生的“操作系统”课程的内容调整和对课程的授课、实验、考核方式的调整。这门课程已经上过一轮,学生反应很好,在学时压缩的情况下学生对理论知识的掌握情况和原来一致,达到了课程要求。并且学生能积极地提出自己的想法,关注相关的新技术新发展,这说明课程促进了学生的个性发展,培养了学生的自学和创新能力。
参考文献:
[1] 贺颖. 我国部属师范大学实行师范生免费教育政策的价值分析[J]. 长春理工大学学报:高教版,2008(4):92-94.
[2] 叶俊民,胡金柱,李蓉,等. 软件工程案例教学研究[J]. 计算机教育,2007(6):19-21.
关键词: 操作系统教学改革创新人才
1.引言
操作系统是计算机系统的核心,是计算机科学与技术专业的一门理论性和实践性并重的核心主干课程,其课程教学直接关系到计算机专业学生的创新能力的培养。现有的操作系统教材偏向于理论,内容抽象、过时,在操作系统的教学中存在偏理论轻实验或局限于算法的模拟实验,教学手段单一,因此难以调动学生的积极性,激发学生的学习热情,培养学生的创新精神。针对现有教学的局限,笔者根据课程特点,从教材、教学内容、教学手段和实验等几方面进行教学改革,取得了一定的成效。
2.操作系统的发展与创新
操作系统是随着计算机硬件与软件的发展而发展的。从早期的控制程序到管理程序(初级操作系统),再从管理程序发展为操作系统;从作业到进程,再到线程;从单道独占到多道并发;从查询I/O到中断,再从中断到DMA,从DMA到通道,改革创新贯穿整个发展过程。
创新是民族进步的灵魂,创新性人才培养是人才培养的最高境界。大学作为创新人才培养的重要基地,在整个培养过程中,应始终坚持以创新为本。操作系统的发展过程就是一个创新的鲜活实例,因此,在操作系统的教学过程中教师应将创新能力的培养贯穿于整个课程的教学始终。
3.讲义编写的改革
针对当前教材过时、重理论轻实验等局限,笔者采取了课程组自编讲义,在教学过程中不断更新完善,讲义和参考教材并用的方法。
教师应在充分吸纳现有教材精华的基础上,结合教学实践,学生的知识结构,最新的理论、技术和实验环境,有重点、有选择地编写讲义,以适应教师教和学生学。讲义的编写应做到:第一,内容新颖。教师应摒弃传统操作系统教材中过时的知识,代之以现代操作系统中普遍采用的设计原理与实现技术。例如,摒弃作业和作业管理内容,强化进程、线程、进程管理和线程管理内容。学生所学的内容与实际使用的操作系统相一致,可调动学生的学习积极性和主动性,提高教学效果。第二,目标明确,重点突出。基于大学教育应努力实现知识、能力、素质三者辩证统一的目标,教师把编写的重点放在基础知识、基本技能和基本方法上,这样才能提高学生的理论素养和分析问题、解决问题的能力。与此同时,教师应注重向学生介绍最新的技术和方法,以拓展学生的知识面,激发学生的学习积极性和创新意识。第三,科学性与通俗性相结合。教师对概念、原理与技术的阐述要力求准确、精炼;对抽象的理论要力求用生动形象的实例加以说明,尽量通俗易懂、深入浅出、图文并茂,变抽象为具体,以便于学生理解。第四,精心设计习题。教师应根据教学内容,精心设计习题,既要有概念原理的理解与巩固型习题,又要有设计型实验习题,突出理论与实验的结合,以培养学生的工程实践能力和创新能力。第五,以讲义为主线,参考教材为补充。在每一章的讲义中,在突出重点的同时,教师应对相关知识点推荐相关阅读材料,重点推荐1―2本中文教材和1―2本英文教材作为讲义的必要补充。英文原版教材更新速度快,理论、技术和概念新,有些是由操作系统设计者直接撰写的,教师应鼓励学生直接阅读英文原版教材,领悟操作系统真谛,提高学习兴趣,激发创新热情。
4.教学手段的改革
传统的教学手段单一,理论与实际脱节,“灌输式”教学方式强调“授鱼”,而忽视了学生能力的培养和提高,难以调动学生的积极性,致使学生缺乏对操作系统课程的学习兴趣,难以掌握操作系统原理的精髓,因此积极探索形式多样的教学方式具有十分重要的意义。
教学手段改革的目的就是要转变“授鱼”为“授渔”,提高学生自身的综合素质,培养学生的创新能力。围绕教学大纲,教师应采用多元化的教学手段:传统的课堂教学、多媒体教学、网络教学、双语教学、网上作业、网上答疑、BBS论坛、操作系统资源网站、工程研发等。
教师可采用以下教学方式提高学生的学习兴趣,培养学生的创新能力。第一,启发式与互动式教学。教师可根据课程内容,分别采用:教师主讲、师生互动,学生报告、师生互动与教师总结;分组讨论与师生互动,分组辩论及教师评判等方式。教师应增加学生参与互动的机会,变被动参与为主动参与,调动学生的积极性,激发学生的创新热情。为了提高教学效率和教学效果,教师需要对教学内容精心挑选,有效地组织和充分地准备。第二,借助多媒体技术和网络技术提高教学效果。教师应利用形式多样的多媒体表现形式,将抽象的概念和原理以生动形象的图形、动画等形式展现出来,变抽象为具体,提高学生的学习兴趣。教师可采用网络辅助手段,利用网络课件、网络作业、网络测验、网络答疑、电子邮件和案例设计等多种手段提高交流和互动的机会。第三,重视实验教学,提高创新能力。教师应设计多层次实验,包括基础理论模拟实验、设计性实验和课程设计型综合实验。教师可将课内、课外结合,鼓励学生组成兴趣小组,激发学生的学习兴趣和合作精神。第四,拓展课外教学,直接参与科研。教师可鼓励和推荐学生参与教师的科研,或到企业参加操作系统设计和开发工作,提高学生的科研能力和创新能力。
5.改革实验教学与提高学生的创新能力
在操作系统的教学中存在重视理论教学而轻视实践教学的现象,这使很多学生误以为操作系统的学习就是记忆知识点,缺乏学习兴趣,不利于创新人才的培养。加强实验教学可增强学生对操作系统原理的理解,提高学生的动手能力和创新能力,因此教师在操作系统课程教学过程中应采用分阶段、分层次设计的实验体系,全面培养学生的创新能力。
本课程的实践教学分为三个阶段、四种类型,即课程实验、课程设计和专业设计三个阶段,体验型实验、理论验证型实验、综合设计型实验和创新型实验四种类型。笔者在教学过程中同步进行课程实验与课程教学,以体验型实验和理论验证型实验为主。体验型实验的目的是让学生熟悉目前的主流操作系统,如Unix、Linux和Windows等。笔者在体验型实验教学中设置了系统安装、配置、命令使用和系统调用等实验内容,激发了学生的学习兴趣,增强了其对理论学习的热情。理论验证型实验的目的是让学生加深对课程中理论原理和算法的理解,主要包括处理器调度、虚拟存储管理、磁盘驱动调度、文件管理、进程同步、死锁检测与解除等验证型实验。课程设计作为一门独立的实践性课程开设,笔者将其安排在操作系统课程结束后进行,以综合设计型实验为主,辅以创新型实验。综合设计型实验的目的是培养学生对实际操作系统的综合分析、方案设计和操作系统设计的能力。笔者重点分析开源Linux系统内核源代码并设计出相关系统模块,培养学生的综合设计能力,激发学生的创新能力,为系统开发奠定基础。对专业设计,笔者安排在四年级的第一学期,以创新型实验为主,目的是培养学生的创新能力。实验型实验是结合教师的科研项目,以项目的方式下达和管理,没有固定方法。笔者要求学生根据任务书的要求,利用软件工程的设计方法,自行进行需求分析、拟定项目规划设计方案并组织实施,从而体现了实验过程的设计性和工程性,培养和锻炼了学生的独立工作能力和创造性思维能力。
为了达到预期的效果,教师需要对实验内容、实验环境、实验步骤和考核内容及指标进行精心组织和准备,严格管理。对综合型和创新型实验,教师应鼓励和引导学生积极讨论,相互合作,培养学生的团队精神、创新能力。在实验中,教师应及时检查学生的实验成果,必要时引导学生寻找更好的实验方案。实验结束后,教师应要求学生撰写实验报告。教师应根据实验过程中的讨论,实验结果的检查,以及实验报告质量和编程代码质量评定学生的实验成绩。
6.结语
培养创新人才是大学的重要使命。以创新内容为核心的操作系统课程的教学理所当然地肩负着创新能力的培养。因此,教师通过教学内容、教学手段和实验的改革,能达到培养创新能力的目的。根据上述改革思路,笔者经过多年的教学改革实践取得了明显效果,激发了学生的学习热情,增强了学生的创新能力。在江苏大学的操作系统课程的教学改革中,有多名学生发表了操作系统方面的学术论文,取得了相关的发明专利,多次在信息安全等全国性竞赛中获奖。
参考文献:
[1]鞠时光.操作系统原理[M].武汉:武汉理工大学出版社,2004.8.
[2]何炎详,熊前兴.操作系统原理[M].武汉:华中科技大学出版社,2001.10.
[3]宋广华,段健平,李善平.边学边干,教研结合[J].电气电子教学学报,2006,28,(5):1-3.
[4]陆庆,蒲晓蓉.“计算机操作系统”实验教学的改革与创新[J].计算机教育,2007,(11):61-63.
关键词:Linux内核 嵌入式操作系统 教学方法
文章编号:1672-5913(2011)18-0029-04 中图分类号:G642 文献标识码:B
基金项目:北航研究生院精品课程项目(201010);软件开发环境国家重点实验室开放课题(SKLSDE-2009KF-2-0X)。
随着嵌入式系统中处理器性能和内存容量的快速提高,Linux在智能手机、网络通信以及多媒体娱乐设备等领域得到了广泛应用。国内外高校也对嵌入式相关课程进行了探索[1-2]。
针对软件学院高层次工程化创新型人才的培养目标,结合国家Linux技术培训与推广中心的建设,我们在嵌入式操作系统的教学内容中融入Linux的新概念、新技术,以就业需求为导向,系统而全面地进行了课程的教改研究和建设。
当然,作为实用操作系统,将Linux系统应用到实际教学中,也有很多问题需要讨论和探索,如庞大的代码量,繁杂的基础概念和应用工具等。针对这些困难,文献[3-4]进行分析并给出了一些尝试方案。
基于我们在相关课程中的知识和经验积累,结合国内外针对Linux教学已经取得的成果,我们设计了一套具有自己特色的课程体系和实施方案。学生通过该课程的学习,不仅可采用实例方式对嵌入式操作系统和计算机组成原理等核心专业基础课程进行深入系统地拔高,而且可强化C语言编程能力和UNIX平台的系统开发能力,学会以“系统”的观点来看待嵌入式系统的组成,理清软件和硬件之间的相互依赖关系,为将来从事嵌入式软件的研发奠定坚实的理论和实践基础。
1 课程群的发展历程
北航软件学院自2004年起为一年级研究生和高年级本科生开设“Linux内核分析与实践”课程(该课程2009年得到教育部-英特尔精品课程项目支持),最初强调对操作系统本身原理(即内核机制、进程管理、内存管理、文件系统和设备管理等部分)的理解。在经过一轮授课实践后,相当部分学生反映对课程内容学习有相当困难。认真分析后,我们结合软件学院承担的北航“国家Linux技术培训与推广中心”的建设任务,引入了Novell公司的SUSE Linux的使用和系统管理课程,并另外增加了Linux环境下应用程序设计内容,用于解决学生Linux基础知识不足的问题。我们发现根本原因是由于这些学生不具备Linux的相关基本概念和使用经验,在直接学习操作系统相关知识时,出现了知识断档。课改的实施旨在改善课程的教学效果。
嵌入式操作系统是该专业一年级研究生第二学期的专业限选课程,该课程和上述两门Linux相关的课程相互结合,强调嵌入式系统中的操作系统的实时性、可定制等特点,紧密结合实际就业需求,在课程中设置内核移植、硬件驱动和中断并发内核机制等跟硬件平台相关且实践性较强的内容,并通过μCOSII原理的对比,来加强学生对嵌入式操作系统中相关概念的掌握和理解。
综合以上课程群的内容,驱动程序与内核的学习是相互促进的,即先学习一些简单的驱动程序的知识,有利于对内核相关原理的学习。反过来,对内核知识的深入学习,也是进行高级驱动程序开发的前提。这样做的好处是,不仅强调驱动程序学习的重要性,而且重视相关的内核原理对驱动程序设计的相关性,将课程定位于培养高端的嵌入式系统实用人才,
结合以上教改内容,可以总结出自顶向下和自底向上相结合的课程学习路线图,在自顶向下部分,通过对Linux基本使用和应用编程的学习,学生可由Linux外部使用特性对内核相关机制形成一些感性认识。在自底向上部分,通过首先学习一种硬件平台,包括一些基本接口及其驱动,学生可对硬件提供的对内核的支撑机制有个初步了解。
在具备上下两方面的基础后,再逐步从应用需求和资源管理两种角度引入操作系统内核的功能需求,通过内核相关实现将上层的应用接口和下层的硬件原理衔接起来。这种知识的组织结构既符合内核设计的原则,也有利于学生将平台开发和计算机组成知识融合起来。
2 课程内容与实施
鉴于嵌入式操作系统相关知识点繁杂、涉及面广、相互之间关联性强从而造成学习时难于入门的特点,基于对实际开源操作系统具体实现方式的分析和对比,我们确定了“理论和实践相结合,强调课程‘边界’知识点,关注并及时融入新技术”的课程内容设置原则。
2.1 课堂讲授内容
课程首先介绍嵌入式操作系统的基本功能和发展历程,总结嵌入式操作系统特点。然后,讲述实时系统的相关概念,包括临界区、可重入、同步和任务切换等内容。
课程内容基于i386处理器,但在涉及硬件细节时一般会适当对比ARM平台,并考虑64位结构对内核的影响。课堂讲授的关键知识点还包括Linux的模块编程、进程管理、内核机制(如中断和下半部、时钟和定时器、多处理器和内核同步等基础机制)、内存管理、文件系统、设备管理和驱动开发等部分。各知识点相应的部分,通常都会与μCOSII的实现方式进行适当对比。由于内容和细节繁多,且相互之间关联性强,所以在课堂上只选择讲授各大部分中关键和基础性的知识点,而对于具体细节等需要深入学习的部分则通过实验进行涵盖。在具体内容组织时采用“理论与实践”的组织方式,即首先针对各相关内容设计实验(分为源代码分析和动手编码两类),然后再根据实验内容确定课堂上的讲授内容。
嵌入式操作系统处于硬件与应用程序之间,这决定了学习操作系统时存在一些“边界”知识。比如,编译链接时的地址重定位、硬件的支撑机制、内核的启动过程等。尽管这些知识不属于核心知识点,但它们是完整理解核心知识点的基础,因此需要在课程讲授时明确指出。
对于软硬件领域出现的新技术,如虚拟化、多核等与操作系统内核密切相关的一些新技术,在课程中也会适当解释。
2.2 实验内容
为适应不同基础和能力的学生,我们设计了分层次的实验内容,形式上分为源代码阅读分析和上机实验两大类。
2.2.1 源代码阅读分析
源代码阅读分析实验的主要目标是使学生深入理解Linux或μCOSII操作系统的核心工作机制,并熟悉内核代码的组织方式和编程风格。这类实验的主要内容涉及内核的启动、内存映射、进程的创建、打开文件、信号量的实现等。
要求学生选择2项以上的题目进行分析,并完成分析报告。报告的内容包括所选内容的技术背景和应用价值、所使用的算法和数据结构、具体实现时函数的调用关系,并对各函数的基本功能进行说明。报告最后还要求从操作系统原理的角度对所选择技术的优缺点及可能存在的改进方法进行分析。
2.2.2 上机实验
上机实验的主要目的是培养学生C语言和系统平台的编程能力,并对课堂和源代码阅读所学习的原理进行验证式或创造式的动手技能训练。这类实验的主要内容包括内核的编译与安装、模块编程与管理、为内核增加一种新的同步对象[5]、共享内存和内存映射文件、字符设备驱动程序以及复杂设备驱动程序等,内容的设置在涵盖主要原理的同时,兼顾实际就业时的技能需求。
2.3 教学实施
作为以动手能力培养为目标的课程,强调以学生为主体,但同时也重视教师的引导作用。本课程综合运用以下多种教学方法和手段,以达到高层次工程化创新型人才的培养目标。
1) 课堂专题讨论。针对操作系统各部分知识相关性强,不易理清的特点,在课堂上给出一些引导性的问题,让学生分组进行讨论。老师根据各组的讨论情况进行相应的引导,从而使学生在讨论的过程中将各相关的知识点进行整理、组合,达到灵活应用的目的
2) 实验指导教师引导小组讨论。实验指导老师定期组织其指导的学生小组进行讨论,依据实验报告和项目文档对其中存在的难题进行解答并展开讨论,对一些有争议的话题进行引导,鼓励学生进行发散型思考,以提高其创新能力。
3) 综合考评方式。采用源代码分析论文(25%)、实验报告(25%)和期末笔试(50%)相结合的考核方式。源代码分析论文强调学生从分析获得的个人体会,实验强调学生的动手能力和代码规范性,而笔试则全部采用简答题形式,注重对概念与具体实现方式的理解与对接。
4) 现代教学手段的运用。针对课程中的一些重要内容,制作相关的图形、动画或视频,以增强教学效果。利用网络环境展开教师与学生、学生与学生之间的及时沟通和交流,促进学生的学习主动性和自主性。
3 课程特色
1) 针对课程特点,合理组织教学内容。针对该课程相关知识点繁杂,涉及面广,相互之间关联性强从而造成学习时难于入门的特点,本课程采用两种实际的软件硬件平台的具体实现技术相对比的方式进行教学,以场景的形式对进程创建和切换、虚存映射等操作系统核心知识进行组织,有利于学生对相关知识的理解。另外,为了使学生理解操作系统和应用程序运行的来龙去脉,增加了(动态)连接、系统的引导和启动、可执行文件的格式和组成等“边界”内容。
2) 明确课程目标,注意理清同时涉及软硬件的概念之间的关系。作为软硬件密切结合的嵌入式系统,嵌入式操作系统的深入学习离不开对硬件平台的深入理解。但很多技术,比如中断处理、地址绑定等概念,操作系统中的设计都需要依赖于处理器提供的支持才能实现。因此,在讲述这类知识点时,强调哪些是硬件的技术,哪些是软件的技术。这种做法非常有利于学生理解硬件中有哪些技术是为了操作系统的存在而设计的,操作系统中有哪些技术的实现是为了在多种硬件平台上“通用”而设计的,从而达到培养创新型高级“系统”设计人才的目的。
3) 强调实用技能,采用源代码分析和编程实验相结合的实践形式。为了达到高效运行的设计目的,操作系统的源代码通常设计得非常“精美”,因此可作为编程能力培养的经典范例来使用。而上机编程实验,则需学生综合运用所学的相关原理和编程技术,设计并实现一种系统功能,因此强调实际动手技能的培养。这种代码分析与上机实验相结合,真正做到了理论与实践相结合的培养模式。
4 结语
以上教改的实施显著提高了学生的学习兴趣和学习主动性,通过学生反馈的课程评估结果及其就业表现验证了课程建设的有效性。
我们深知,课程的建设和改进没有止境,教学内容和教学方法需要根据教学效果的反馈不断地进行循环优化。希望能通过进一步借鉴国内外同行的宝贵经验,把我们的教学水平提高到一个新的层面。
参考文献:
[1] Ian McLoughlin, Anton Aendenroomer. Linux as a Teaching Aid for Embedded Systems[C]. Proceedings of the 13th International Conference on Parallel and Distributed Systems. Washington,DC,USA:IEEE Computer Society Press,2007,vol.2:1-8.
[2] Sung-Yuan Ko. On The Teaching of Embedded Linux System[C]. The First Asia-Pacific Workshop on Embedded System Education and Research (APESER),Washington,DC,USA:IEEE Computer Society Press,2007,vol.2:1-2.
[3] Oren Laadan,Jason Nieh,Nicolas Viennot. Teaching Operating Systems Using Virtual Appliances and Distributed Version Control[C]. Proceedings of the 41st ACM Technical Symposium on Computer Science Education (SIGCSE 2010), Milwaukee,WI,USA,March 10-13,2010.
[4] Rob Hess,Paul Paulson. Linux Kernel Projects for an Undergraduate Operating Systems Course[C]. In Proc. 41st ACM Technical Symposium on Computer Science Education (SIGCSE),Milwaukee,WI,USA. March 10-13,2010.
[5] 罗宇,陈燕晖,文艳军,等. Linux操作系统实验教程[M]. 北京:电子工业出版社,2009.
Application of Linux Kernel in Embedded Operating System Course Teaching
YUAN Cangzhou, LÜ Weifeng, KANG Yimei, SONG You, SHEN Xueping, WANG Huafeng, ZHAO Heng
(Software College, Beihang University, Beijing 100191, China )
关键词: 嵌入式系统 ARM μC/OS-Ⅲ
引言
嵌入式系统是一个很宽泛的概念,我们一般将以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统称为嵌入式系统。近十年来,随着当前各行各业对单片机能力的要求越来越高,如主频高、功耗低、外设多、互连方便、支持操作系统等,嵌入式处理器市场正在32位化,ARM芯片以其高性价比取代51芯片成为嵌入式系统设计的新宠,同时μC/OS-Ⅲ嵌入式操作系统因源码获取方便成为嵌入式系统学习的首选对象。
在实际教学中发现:(1)学生拘泥于嵌入式软硬件知识细节,不能从嵌入式产品的系统层面和设计过程中整体地动态地了解、理解和掌握嵌入式系统设计知识;(2)学生太过依赖学院实验室现有的嵌入式实验箱或自己购买的嵌入式开发板,不敢或很少尝试设计并制作自己的嵌入式开发板;(3)学生对嵌入式操作系统了解有限,忽视相关开发工具的使用与掌握。
本文将从嵌入式系统课程实验板DIY(Do It Yourself)开始,探索课程实验板DIY自主实验指导方法,尝试通过适当的适度的DIY实验操作指导,训练学生在规定的时间内和有限的成本下制作自己的嵌入式系统实验板,培养学生进一步自主探索学习嵌入式系统知识的兴趣。
1.研究目标与关键问题
1.1研究目标
依据《嵌入式系统》课程教学内容,研究课程实验板DIY教学方法,制定课程实验板DIY指导手册,指导学生逐步DIY自主制作自己的课程实验板,让学生在实践课程实验板DIY过程中亲身领会并掌握嵌入式系统软硬件设计方法,并最终基于ARM Cortex-M3微处理器和实时操作系统μC/OS-III搭建嵌入式系统的软硬件平台,完成课程实验并定制特色功能。
1.2关键问题
(1)如何让学生快速设计、投板、焊接并调试自己的ARM实验板,并且时间和成本可控。
(2)如何让学生在自己的ARM实验板上主动探索来完成课程实验,并且及时总结相关问题和对应的解决方案。
2.《嵌入式系统》DIY实践
借助当前便利的电路板PCB制作与生产工艺,在课程实验板DIY指导手册帮助下,指导学生逐步完成课程实验板DIY实践。
值得一提的是,当前电路板PCB打样双面板价格50元/款起,尺寸大小10cm*10cm以内,完全满足课程实验板制作要求。
2.1实践任务布置
在《嵌入式系统》授课之初,强调嵌入式系统课程实践的重要性,引导学生思索如何动手实践。然后课程设计任务,要求自己动手制作ARM最小系统板,运行μC/OS-III操作系统,满足课程各项实验要求,定制开发自己的特色功能。
说清楚两个限制:(1)必须使用ARM Cortex-M3微处理器和μC/OS-Ⅲ实时操作系统;(2)必须在一学期内完成(大约3个月)并且成本可控(100元左右)。
2.2实验板硬件制作
针对选定微处理器芯片(如ARM STM32F103),提供课程实验板原理图,仅涉及最小系统板硬件(包括ARM芯片、晶振、SWD调试、USB供电模块)和课程实验所需硬件支持(包括基于GPIO的LED和KEY,以及UART模块)。芯片管脚全部基于排线引出,便于学生后续的扩展实验。考虑到学生可能初次进行PCB制版,因此实验板PCB图提供半成品,完成最后的布线。
当然,学生完全可以部分或全部修改实验板原理图和PCB图,前提是学生必须有电路板制版经历。强烈建议初学者不要做太多的修改,而是完成剩下的PCB布线,并投板、焊板,进而编程与调试。
本阶段计划时间两周,可阶段验收成果为:(1)丝印学生姓名的PCB空板;(2)焊接完成的ARM实验板。
2.3实验板程序练习
实验板程序分为两部分,本着简单易学和循序渐进的学习原则,依据《嵌入式系统》课程教学内容,仅涉及LED、KEY和UART三个常见外设,训练内容包括ARM裸板程序和操作系统程序两部分,下表仅列举部分实验内容。
在此过程中,为了调动学生积极主动性,可以实行一定的奖励措施,如通过额外的平时分鼓励学生,将在硬件制作与软件编程实践过程中遇到的问题和对应的解决办法记录下来,并通过教师确认后集中给各位学生以参考。
本阶段时间持续整个学期,可阶段验收成果为课后作业和实验报告。
2.4特色功能实现
学生通过在ARM实验板硬件基础上扩展功能模块,基于μC/OS-III任务程序实现自己的特色功能,如红外测距、温湿度采集、小车控制等,并完成课程设计报告。
课程设计报告内容包括:(1)课程设计简述,阐述目的、内容和意义;(2)需求分析,阐述功能需求、技术指标、设计约束;(3)总体方案设计,涉及系统框图、功能框图、业务流程图等;(4)硬件设计,涉及硬件框图、器件选型、模块电路图等;(5)软件设计,涉及软件框图、关键数据结构、核心模块流程图等;(6)系统测试,包括测试目的、测试步骤、测试结果、结果分析;(7)附录,主要包括扩展的功能原理图和关键代码。
本阶段时间为学期的最后两周,可阶段验收成果为课程设计实物和报告。
结语
经过近三年的嵌入式系统课程教学实践,初步形成一套比较完整的自主实验指导方法和对应的实验板DIY指导手册,已成功指导百余名学生制作自己的ARM实验板,并实现自己设计的特色功能。
参考文献:
[1]石海贝,任秀峰.浅谈嵌入式系统的应用与开发[J].信息与电脑:理论版,2010(2).
[2]江维,桑楠.面向高等教育的嵌入式系统教学改革[J].计算机教育,2011(16).
[3]王振华,刘慧芳.嵌入式软件开发实践教学改革与探索[J].教育教学论坛,2016(34).
本文将主要谈论我们依托多媒体等教学手段和网络教学网络搭建的多元立体化教学平台,在操作系统教学中的一些探索和体会及教学效果。
一、理论课讲授:在建构主义理论指导下,引导学生成为学习的主体,化被动接受知识为主动探索未知
(一)多以实例剖析抽象概念和理论
操作系统的功能即为用户程序提供抽象和管理计算机资源,因此《操作系统》课程的抽象概念是需要重点讲解和分析的,是含混不清的一般性叙述?还是通过解析某个特定实例?我们在实践中发现后一种方式效果要好。
(二)注意理论联系实践,循循善诱
在课程讲授过程中,尽可能的用身边的客观问题做实例,让学生更好的理解相关的概念和算法。例如:在介绍页面置换算法时,以新进商品(页面)要放入到超市货架(内存)为例说明当货架满时将哪件商品换出合适。FIFO算法忽略了商品自身的重要性,因此FIFO算法并不合理。然后引导学生综合考虑进入超市的先后和重要性(即最近是否有顾客浏览或者购买该商品)的置换算法(第二次机会页面置换算法)会比较合理。接下来又抛出第二次机会算法经常要在链表中移动页面降低了效率的问题,引导学生思考更好的办法,也就是把页面保存在循环链表中,即时钟页面置换算法。如此,从生活的例子入手,一步一步引导学生思考,既可以加深对页面置换算法的理解又可以增加课堂气氛的活跃。无形中学生成为知识获取的主体,可以进一步引导其提出其它教材中未提到的页面置换算法,从而为后续的设计性和综合性实践奠定理论基础。
(三)善用比喻类比和动画
操作系统课程中有一些晦涩的理论和算法,直接讲解很容易停留在抽象层面。此时采用恰当的比喻、类比或形象的动画,学生会比较容易理解和消化。而对于一些操作系统进行资源分配和管理的算法的描述则可以借助Flash动画直观而形象,学生表示很受用。此外,吸引学生参与到相关Flash动画制作工作当中,将激发起极大学习兴趣和积极性。
(四)习题讲解同步,并引入实际操作系统平台案例分析
每讲完一个关键知识点就辅助一定习题,鼓励学生大胆思考,勇敢出错。然后针对学生出的典型错误,结合知识点剖析,让学生对抽象理论有深刻的理解并学会拿来解决实际问题。对于核心知识点,引入具体操作系统平台案例深入分析,让学生可以触及进程管理、内存分配机制等内核,使学生对研究开发嵌入式系统、交互系统等有了清晰认知。
二、实践教学改革:强调实践出真知,同时强调团队协作的力量,实现知识和能力互长
实践教学是培养学生创新能力的“切入点”。实践教学的广泛性和立体性使其在培养学生创新能力过程中具有不可替代的作用。我们在杨柳等采取“重基础、重实践、重创新的多方位教学模式”启发下,根据独立学院的实际学情,提出了以实验(包括基础性实验、设计性实验、综合性实验)和项目实战为核心的实践教学模式,确保实践内容的可操作性和连贯性、渐进性。
(一)验证性实验:以一个具体的操作系统(Linux)为例进行与课程知识点直接相关的实验,如基于Linux命令的进程创建,让学生将学到的知识马上进行实践操作,有利于知识的巩固和洞察操作系统的具体行为,进而深入理解操作系统的精髓。
(二)设计性仿真实验:与具体平台无关,如银行家算法模拟,重点在于通过实验掌握核心算法,并为后续的综合性实验和项目实战做准备。
(三)综合性实验:引入开源的Linux系统内核分析,布置对内核进行修改的综合性实验,旨在激发学生学习操作系统的兴趣和主动性,又训练学生分析问题、解决问题的综合能力。
(四)项目实战:最后在毕业设计环节,鼓励学生在开源代码基础上设计和实现一个完整的小型操作系统,从而大大提升应用实践能力。
此外,实验中设计了若干思考题,让学生观察实验结果总结相关理论,以进一步提高学生理论联系实际的能力。并针对学生基础和能力的参差不齐,提出了分层次教学,对实验的要求分为最高目标和最低要求,规定所有学生必须都完成最低要求内容,而对达到最高目标的学生有加分奖励。为实现新形式下应用创新型人才培养目标,协同合作能力培养不可或缺,在实践教学上体现在:在上机过程中,由于学生太多,在鼓励同学们优势互补的基础上分了组,从而可以优先对组长指导,然后由组长指导学生;同组同学相互探讨解决在实践设计过程中遇到的各种问题和程序错误。当问题较普遍的时候,当堂或者下一次课的讲授中集中说明讲解。课后学生上交实验报告(设置提交期限,超过期限将扣分甚至不得分)。在实践教学中依然遵从了学生为主体,老师引导和协助的建构主义理念。
三、评价方式改革:过程性评价为主的多元一体评价方式,激发学生更大的积极性和进取心,化知识获取为能力提升
改变传统以单一的试卷形式进行的总结性、知识性考核方式,探索以能力为导向的过程性评价机制,淡化期末考试。采用平时考核与期终考核相结合、知识评价与能力评价相结合的课程学习评价方式。采取任务驱动模式,引导和推动学生循序渐进地完成教师设计的课程内容,促使学生从被动的知识接受者转变为主动的知识探索者,构建各自的知识树,并使学生在学习过程中逐步训练和养成良好的纪律性、沟通合作的技能、多元思维方式等综合素质和能力。
我们采用概念阐释到位的经典外文教材及译本,讲述过程中注重采用实例分析,避免含混不清的一般性叙述;完整的实验讲义和明确的实验目标,将实践教学落到实处,真正实现了理论与实践的紧密结合;教学内容由浅及深、层进式教学内容设计更好的贴合了我们实际学情。我们课程团队通过多种教学手段相互补充,集课堂、实验、网络教学于一体,初步形成了多维立体化教学模式:“课内教师教学 + 课外学生小组学习+创新项目实践”,“常规教学 + 实验教学 + 网络教学”,“课上多媒体教学为主/板书为辅 + 启发引导为主/讲授为辅 + 现场习题和案例集中剖析”及 “课后作业练习 + 上机实践+ 毕业设计项目演练”。这些探索和改革显著改善了教学效果。
参考文献:
关键词 Seminar教学方法 嵌入式系统 实验教学
中图分类号:G424 文献标识码:A
0 引言
Seminar可以翻译为研讨课,是在欧美国家常见的一种教学模式。在Seminar教学模式中,学生针对某一要解决的课题组成小组,教师指导学生进行调查研究并且学生之间、教师和学生之间可以自由进行学术探讨,从而达到“学有所获、教学相长、日学日进”的教育目的。①Seminar教学方法的优点在于:一方面它可以调动学生学习的自觉性和主动性,培养学生团结合作的精神,提高学生分析和解决问题的能力;另一方面也有利于促进教师的教学水平、科研能力的提高和知识面的拓宽。
嵌入式系统课程涉及电子、计算机、自动控制等诸多专业知识,专业性强,包括操作系统、微机原理、编程语言程序设计、计算机网络和单片机设计等课程内容。②要想比较牢固地掌握嵌入式系统的知识和技术,学生往往需要经历基础知识的学习、现场的观摩演示以及亲自动手操作等几个过程。要想最终成为一名合格的嵌入式系统技术人才,还需要在此基础上经过进一步的实践锻炼,掌握解决实际问题的技巧,并积累丰富的经验。对于这样一门综合性很强的课程,实验教学是整个教学过程中的一个重要环节。③在传统的实验课程中,一般都有详细的实验指导书,学生只需要根据指导书中给出的实验步骤,利用教师给出的实验设备,按部就班地操作就能获得理想的实验结果,这种传统的实验模式不能充分地激发学生的主观能动性。为了能够进一步拓宽了学生的思路,提高了学生分析问题和解决问题的能力,我们在传统实验课程的基础上设计了若干综合性实验。同传统验证性实验相比,综合性实验内容相对复杂,涉及到的知识点较多,一改过去传统验证性实验墨守成规的实验方法。并且我们在综合性实验教学中引入Seminar教学方法,让学生针对某一综合性实验课题进行自由研讨,培养学生从问题需求开始, 掌握如何独立设计系统的方法,取得了良好的教学效果。
1 Seminar教学方法实施过程
1.1 Seminar题目的选择
Seminar教学方法旨在对某一课题进行研究讨论,因而选择的题目不宜太过简单,要具有一定的综合性和适当的难度,同时也要考虑到学生的基础和水平,题目的制定也要基于学生所学过的知识和已经完成了的基础实验。在进行综合实验之前,要求学生已经在理论课上学完了相关的基础理论知识,并且完成了相关的基础实验。举例来说,在嵌入式系统实验教学中我们常做的基础实验有三个:(1)LCD接口应用实验,实现在LCD上显示某种色彩、绘制简单图形的编程;(2)触摸屏应用实验,掌握ARM处理器与触摸屏的驱动控制器的接口电路和操作编程;(3)步进电机控制实验,掌握步进电机控制原理,编写步进电机相关函数,实现正反转、停车、调速。基于这三个基础实验我们设计了一个综合性实验,要求用触摸显示屏实现对步进电机的控制和工作状态显示。该综合实验需要通过学生自己的分析研究,构建一个实用的系统,即用到了以前学到的基础知识,又具有一定的综合性,非常适合采用Seminar教学方法。
1.2 Seminar题目的布置
一般在上课前一周, 对实验任务进行布置,主要包括对将要进行的实验课的题目、人员和实验进程进行简要介绍和安排,提供给学生相关的科技文献和资料,要求学生认真阅读,指导学生对实验方案的设计进行思考,每个学生都要准备至少一个可行方案,以备课堂上作为小组的备选方案进行讨论。也可以给出几个难度、类型近似的多个可选题目,供学生结合自己的实际进行选择。在此阶段教师可以安排一个统一的答疑时间对他们的疑问进行解答。
1.3 针对实验题目进行研讨
我们进行Seminar实验教学的地点为嵌入式系统实验室,总共有10套实验平台。对参加实验的学生进行分组,一般3~4人一组,每组一套实验平台, 有利于相互探讨并设计方案。该实验室既可以进行小组讨论,也可以在讨论好方案后直接进行实施验证。为了让每个学生都能参与,在课程开始前小组成员要自行进行分工,做到各司其职。课程开始后,教师在课堂上随时可以参与到学生们的研讨过程中,可以和学生一起分析、解决问题。 教师如果发现有的学生不积极发言或不愿一起参与方案的设计时,可以对他们进行提醒或者向他们提出问题。教师如果发现有的小组讨论离题,可以帮助他们回到原题。由于Seminar这种教学模式具有多向互动性,它可以全方位调动起一个小组里所有成员参与实验课程的积极性,有利于将发散性思维转换为现实,能够促进学生独创精神的形成。Seminar 教学模式和一般的课堂讨论有很大的区别, 它致力于培养学生的独立科研能力并将其落实到课堂的研讨交流中,它在强调对学生的自学能力和科研能力的培养的同时,也注重激发学生的创造力和想象力。
1.4 研讨结果的实施
Seminar讨论好的实施方案正确与否,需要进行验证,这也就是实验操作过程。这一过程主要包括学生编写、调试和运行程序并记录实验过程。教师对学生的实验过程进行指导并掌握全班同学实验操作的总体情况。在这个过程中,小组成员之间也在进行研讨式学习:在小组内部如果发现同组同学出现错误操作,就会在小组内部讨论并改正,遇到操作上的问题也可向同组的同学请教。实验的最终顺利完成需要每个小组成员相互配合和共同努力。在整个实验的实施过程中,每个小组成员根据预先的分工,保证完成自己的实验操作。由于小组成员在整个实验操作过程中一直在交流和探讨,所以研讨结果的实施过程实际上是Seminar研讨过程的继续。
1.5 实验结果汇报
实验操作结束后,每组学生中要选出一名学生,代表本组向全班同学汇报本次的实验情况。报告内容主要包括实验方案的设计、程序的编写、调试和运行以及实验结果分析。无论报告任何主题,报告人首先要对所做的实验内容进行简单介绍,然后着重介绍自己小组的实验设计思路、设计方案,最后对实验结果进行分析总结。然后指导教师可以根据学生的发言,在课堂上引导全班同学针对某个或某几个相关问题进行讨论性的发言。教师的作用就是引导讨论的进程,掌握和调控课堂有限的时间。在实验结果汇报结束后学生需要上交一份有关本次实验的报告。同传统的实验报告不同,该报告要求以小论文的形式进行撰写。这种以小论文为形式的实验报告主要包括以下内容: 论文的题目、前言部分、设计方案及方法、实验结果与分析、结论。论文题目一般情况下就是实验的题目。 前言部分一般介绍对题目的认识以及对题目的探讨过程,类似于综述。设计方案及方法一般是指学生们在实验研讨过程中所确定的实验实施方案和具体方法。实验结果与分析主要包括实验数据、实验现象的记录以及实验结果的分析说明。结论部分是学生们对整个实验及研讨过程所做的总结,主要归纳总结自己在实验中的收获和经验。
1.6 Seminar成绩的评定
一般情况下, “Seminar”模式实验课的总成绩可以通过以下4个分项成绩加权求和获得:(1)Seminar实验前期准备得分。主要包括是否对实验内容提前预习,对题目的理解是否正确,是否查阅了相关文献等。(2)Seminar实验研讨得分。主要包括是否积极参与实验方案的研讨,对教师或同学的提问是否能够准确回答,是否提出了关键性的问题以及是否提出了准确合理的解决方案。(3)Seminar实验实施得分。主要包括实验步骤是否准确无误,实验结果是否正确有效。(4)Seminar实验报告得分。这部分分值取决于学生最终所提交的以小论文为形式的实验报告的质量,具体可以根据实验报告中方案是否合理,结果是否正确,分析是否透彻,以及是否有自己独到的见解进行评分。
2 教学效果分析
与传统验证性实验相比,综合性实验内容更复杂,涉及到更多知识点,对学生分析问题和解决问题的能力提出了更高的要求。Seminar 教学方法的引入,改变了嵌入式系统实验教学由教师作为主导的传统,将传统教学上的“单向传导模式”改变为“双向互动模式”。 Seminar这种多向互动的交流方式,可以全方位调动所有参与者的学习热情,有利于学生形成独创性见解,提高学生学习的自主性和主动性。在Seminar实验课程的教学中还要注重培养学生以口头和书面形式对知识进行传递的能力,注重提高学生对知识进行归纳整理的能力以及展示成果和表述观点的能力。另外,Seminar这种教学形式还为学生提供了合作交流的机会,通过在课堂引入合作精神,有利于提高学生的团队合作能力。从最终实验效果来看,将Seminar教学模式引入嵌入式系统的实验课程既能够优化学生的知识结构,又有助于提高学生分析和解决问题的能力以及协同学习的能力。同传统的按部就班式的实验教学相比,学生能够获得更大的收获。
注释
① 林培锦.Seminar在大学本科教学中的价值及应用[J].宁波大学学报,2010.32(1):32-36.
关键词:操作系统;验证性实验;设计性实验
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)02-0368-02
Teaching Reform of Operating System Principles Course Combining with Experiment
ZHANG Jun
(Hulunbeir College, Hulunbeir 021008, China)
Abstract: To applied undergraduate college and academy, operating system principles course is a professional core course in computer sci? ence and technology major, which emphasizes that theory and practice should combine closely with each other. In this paper, replication experiment of operating system course is firstly discussed in order to improve students’ profound understanding of operating system knowl? edge. Then comprehensive design experiment teaching is carried out and implemented gradually. At last several typical examples of design experiment have been listed.
Key words: operating system; replication experiment; design experiment
操作系统是计算机系统中的一个系统软件,位于裸机和其它系统软件之间,它是这样一些程序模块的集合-----它们管理和控制着计算机系统中的软硬件资源,合理地组织计算机系统的工作流程,以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展的工作环境,在用户和计算机之间起到接口的作用。操作系统是目前最复杂、技术含量最高的软件,在计算机专业软、硬件课程的设置上起着承上启下的作用,其中的许多设计思想、技术和算法都可以推广和应用到大型的、复杂的系统设计,以及其它领域。因此,其教学目标应重在培养学生理解和掌握计算机操作系统的基本工作原理、设计技术及设计方法,培养学生开发系统软件和大型应用软件的意识和能力,同时还要让学生了解现代操作系统的新思想、新技术和发展研究动向。操作系统实验部分的教学比较重要,对理解操作系统的理论知识和具体实现技术,体验该课程的抽象思维方法,培养规范的系统程序设计能力,都具有十分重要的意义。本文就呼院操作系统实验课程分析了从验证性实验到综合设计性实验的过度,并提出了解决操作系统课程实验困难的一些设想。
1呼院操作系统实验课程改革的必要性
1.1操作系统课程教学的特点
1)操作系统原理教学以课堂讲授为主,形成了一种“灌输式”的教学方法,对启发式、讨论式和研究式的教学方法采用的比较少,进而导致学生创新能力不强。
2)操作系统原理教学内容理论性过强,实践性较弱,这样的教学形式不利于对学生创新能力的培养。学生缺少自己动手分析具体操作系统实例的能力,课程设计和实现环节几乎没有,学生参与研究性学习的机会少,不能激发学生学习操作系统的兴趣。
3)操作系统原理教学手段过于单一,仅局限于课程教学、多媒体教学、案例教学等少数教学手段,没能充分利用实验室环境的优势,进而影响了学生的学习兴趣。
1.2我校现状
近几年呼院计算机系都招收高职类的本科生,由于学生的类别是高职,所以操作系统课程的实验只是开设一些验证性的实验和阅读大量的现成源代码。例如:了解Windows XP的系统信息与注册表;winXP任务管理器的使用;FAT32与NTFS文件的区别等。随着学生学习积极性的不断提高和学生对专业知识需求的增加,只是开设这些简单的验证性实验并不能满足学生学习操作系统课程的需要,再加上操作系统课程理论教学本身的束缚,使得我们必须开设一些综合设计性的实验,利用学过的程序设计语言自己编一些程序,来配合完成操作系统理论课程和实验课程的进一步强化。
2操作系统实验课程改革与初步分析
2.1从课堂讲授的“灌输式”向实验室的“互动式”转变
“互动式”教学就是在教学过程中让学生充分利用实验室中的实验环境而完成教学的方式。它培养了学生的参与意识、动手能力和思维能力,并能激发学生的学习兴趣,也能对以前学过的语言进行巩固和复习,是一种良好的教学方式。它符合素质教育所提倡的“教为主导,学为主体”的教学思想,使学生由被动变主动。
结合本校大学生自身的特点,采用“打比方-案例式-讨论式”的模式,充分发挥其“学为主体”的作用。例如,在讲授某个重点内容时,可让同学先预习,再由老师通过案例提出一些问题,学生带着这些问题去讨论研究,然后在实验室解决,从而将遗忘部分补足。而后,由老师就该内容做总结,提出重点部分和难点部分要求学生掌握,并请学生总结学习心得,写出实验报告,使其进一步透彻掌握该内容。最后,提出思考题和作业题给学生练习。经过这样一套程序下来,尽管教师没有逐条讲授,但学生掌握的程度却比平常高。同时还可以鼓励学生参与课题研究。通过把与课程内容有关的科研课题进行分解,在授课过程中提出,让学生自愿结成小组进行资料搜集和研究,充分发挥协作精神,促进教学相长。
2.2从以“理论”为中心向以“实践”为中心的教学模式转变
操作系统原理是一门理论性和实践性都很强的课程,它来自于客观需要,现正运行在各种不同类型的机器上。操作系统中的概念在实际操作系统中体现,操作系统的实现技术在实际操作系统中实施。因此,要加强该门课程的实践教学环节。根据该门课程的特点,通过开拓思维、研究实例和实际实践,培养学生从理论中来,到理论中去,再进一步升华为理论的创新能力。
1)建立“案例-原理-实践”的教学模式。根据操作系统的特点,摒弃过去只注重书本内容的教学方法,引进实际工作的案例。通过案例分析,促使学生从实际出发,从现实的角度看待问题、分析问题、解决问题,不再局限于书本上的条条框框。而穿插于案例分析之中的原理介绍,使学生潜移默化地学会运用原理。对操作系统设计的亲身实践,使得学生把所学转化为所用,并在所用中不断加深与把握对操作系统的理解,避免高分低能的现象。
2)建立“与生活联系起来”的深入浅出讲解模式。由于操作系统的许多原理本来就来源于生活。如进程同步与生活中约会、乘车的类似性;缓冲区与超市、图书馆的类似性;层次结构与人类上层建筑、人际关系的类似性等。通过把这些人类生活中常见的机制引入到教学中进行类比分析,使枯燥的操作系统原理变得生动有趣,再结合着一些编程语言来实现,从而提高学生的学习兴趣。
3)采用“模拟”教学法,为学生提供一个在仿真模拟环境中创新的机会。在实践性教学环节上,可以通过和一些企业合作,使用最新的软件工具,搭建项目实践的先进实验平台。鼓励学生在实践环节上进行创新,提出自己的见解和设计,并在实验室加以验证,从根本上和底层次上深化对操作系统的理解和掌握。
4)以“趣味性”激起学习的兴趣。通过第一线精英的现身说法,讲解在设计过程中遇到的具体问题和采用的具体解决方法,将操作系统的原理在实践中进行分析,促使学生从现实的角度分析和解决问题。穿插于案例分析之中的原理介绍,使学生潜移默化地学会运用原理、把握精髓、深入浅出,使学生真正清楚操作系统的奥妙,从而提高学生对操作系统的兴趣。
2.3建立“验证性”实验到“综合设计性”实验的过度
作为普通本科院校,操作系统实验课程按深度分为五个层次,即:使用级(指如何使用操作系统,包括对命令、系统调用和系统文件的使用)、观察级(指通过使用级的接口,从外部观察操作系统的内部工作过程和结构)、系统管理级(指系统或设备的安装、配置和性能调整)、源码阅读级(指少量源代码阅读)和实现级(指实现一个操作系统某些模块的子功能)。而我校由于知识体系的局限性只开设了前四个层次的实验,对于实现级还没真正落实和研究,而综合设计性实验必不可少,所以在此基础上开设设计与实现的实验迫在眉睫。开设综合设计性的实验要求学生具有很好的程序设计语言功底和逻辑思维能力,培养学生这方面的能力也是教师现在最主要的职责。
3科学地组织设计性实验的教学内容
操作系统的功能分为处理机管理、存储器管理、设备管理、文件管理和用户接口五个模块,由此设计的实验教学内容如下:
3.1处理机管理模块
该模块包括进程调度、进程互斥、进程同步、进程通信、进程死锁子模块。其中比较典型的同步算法有生产者与消费者问题、读者与写者问题、哲学家进餐问题、司机与售票员问题、图书馆管理问题、父亲分水果问题等等。还有进程的创建(fork)、进程撤销、进程挂起、进程激活、进程阻塞、进程唤醒等原语的实现都可以作为设计和实现的实验题目。
3.2存储器管理模块
该模块包括分区、分页、分段、段页式存储管理方式,而现代操作系统主要以动态存储分配方式来实现虚拟存储,让学生模拟一些替换存储空间的算法,对该算法编程来实现相关操作。其中经常使用的算法有FIFO,LRU等。
3.3设备管理模块
该模块包括缓冲区队列的管理,磁盘设备的管理等。因为I/O设备的低速与CPU设备的高速之间的速度不匹配,使得CPU的大量时间处于等待状态,降低了CPU的利用率,所以设置缓冲区可以很好的解决这个矛盾。在此知识结构中可以实现编写一个简单的键盘驱动程序模块等。
3.4文件管理和用户管理模块
该模块包括文件存储空间的管理,文件的相关操作命令。用户管理模块包括命令接口和系统调用。这两个模块知识简单,属于操作类,所以在这就不用设置综合设计性的实验。
4结束语
随着计算机应用向纵深方向进一步拓展,计算机操作系统课程的重要性日益凸显,然而传统的操作系统原理教学模式重视理论知识的教授、忽略实践的重要性、教学手段单一等缺陷,致使学生无法深入掌握操作系统原理的精髓,因此积极探索操作系统原理教学模式的实验改革具有十分重要而深远的意义。本文从三个角度提出了相应的改革措施,即从“灌输式”教学模式向“互动式”实验模式转变,增强学生的自学能力和编程能力;从以“理论”为中心向“理论与实践并重”的教学模式转变,增强学生的动手能力和创新能力;从“验证性”实验到“综合设计性”实验教学模式的转变,以期对操作系统原理教学和实验模式改革有所启发,使学生充分利用所学知识和技能,认识到操作系统课程在计算机科学领域中的重要地位和作用。
参考文献:
[1]范辉.操作系统原理与实训教程[M].北京:高等教育出版社,2003.
[2]王振邦.高职操作系统原理课程教学改革初探[J].计算机教育,2007(18).
关键词:操作系统;实验项目;实验平台
中图分类号:G642.4 文献标识码:B
文章编号:1672-5913 (2007) 22-0021-04
1引言
操作系统课程是一门内容丰富,包含许多概念、方法、算法的课程,解决好理论与实践相结合的问题是提高操作系统教学质量的关键。例如,如果在讲解同步机制前先指导学生设计并发运行的多线程程序,当他们直接观察到由于缺乏同步机制导致程序结果出错的情景,就会激发出对解决方案的学习热情。国内外许多大学针对操作系统课的实践环节提出了丰富的多层次的实验方案,下面分别从实验内容、实验环境、考核方法与标准等方面进行分析介绍。
2实验内容
对于操作系统课程实验,实验平台在很大程度上决定了实验的内容和难度以及效果,所以我们下面主要按照实验平台或实现层次划分项目的类型。
1.1教学用操作系统
这类实验又可以分为基于模拟器的和直接运行于裸机上的实际OS源代码。基于模拟器的有伯克利的OPS、Toy、Nachos、MPX、OPS、上海交大开发的MOS操作系统等。直接运行于裸机上有MINIX、XINU等。基于模拟器的系统是面向实验设计的,会设置一些便于的调试与项目管理的特征。例如,OPS系统允许学生周期地查看系统的状态信息,包括设备表、PCB池、事件队列等。学生也有机会修改模拟参数[1]。OPS的项目产生器能自动生成模板文件,包含过程头和所需的数据结构声明,只由学生完成过程体。
作为一个教学用操作系统,Nachos的目标不是展示一个成功的操作系统,而是提供一个便于扩展的框架。例如它的文件系统实现了所有必要的数据结构,只是在很多方面做了一定的限制,可将实验项目内容设置为消除某些限制。
MINIX是一个虽小但完整的教学用操作系统,可运行于实际的机器硬件上。与基于模拟器上的系统比,它可以给学生更切实的感受。包含有3000行注释的12000行源代码使整个系统较为容易阅读和理解,MINIX“小”到学生可以理解它的主体部分,“大”到足够让学生体会到一处小小的修改会影响到表面上看起来不相关的函数里。学生项目可以是修改调度器或增加新的文件系统等。但是从教学的角度看,上万行的代码仍过于庞大,并且MINIX的“完整”也限制它的扩展余地。所以近年来出现了面向“简单、真实、容易理解的”的雏型操作系统,例如瑞士ETHZ大学的Topsy、美国马里兰大学的GeekOS,以及北京大学的PTOS等。
除了用于操作系统课的教学,近年来随着嵌入式系统的兴起,教学类操作系统正由于规模小而受到越来越多的关注。
1.2通用操作系统内核
由于Linux操作系统是开放源码的,所以这类实验通常以Linux作为目标平台。此类实验较早的提倡者是Gary Nutt[2],他提出的一些实验项目内容被许多学校沿用、发展,在美国有10多所大学采用修改Linux内核的实验[3]。分析Linux源代码能锻炼学生分析大型软件代码的能力,对高质量代码分析、理解的过程也同时是一个学习好的编程风格和设计思想的过程。所以虽然它们是操作系统类的实验,但从某种程度上也是软件工程类的实验。
基于Linux的修改内核实验通常包含如下几类内容:
Linux内核编译与配置方法
在分析阅读源代码基础上修改调度算法
实现新的同步原语
增加系统调用
增加可动态加载模块
驱动程序设计
1.3仿真实验
这类项目通常采取仿真实现操作系统中的一些典型技术,如进程调度算法,但实现中涉及的资源和数据结构都是虚拟的,实现程序并不需要对实际资源进行真正的访问。国内大多数高校都设置这类的实验[2]。这类实验不需特定的支撑平台,教师避免了安装和配置支撑平台软件的工作,学生避免了花在熟悉实验平台方面的时间,通常调试也更容易一些。而且教师可选择更广范围的OS概念来分配项目。学生可以在任意计算机上使用任意程序设计语言来编程实现。
这类实验最大的缺点是通常只要求实现一个孤立的模块,无法体现操作系统系统各模块之间复杂的联系,只关注于某一个功能的实现,实际上相当于简化了问题。设想一个实现进程调度算法的模块,如果只是实现一个单独的调度策略,而不是像一个实际的系统中那样会综合运用多个策略;如果简化系统的状态为只是运行与就绪;如果不考虑响应信号会影响状态转换;如果系统调度的时机只是运行完与时钟中断;如果不考虑实现定时唤醒机制;如果不考虑核心数据的保护等等;这样的一个实现与实际系统中的复杂性不可同日而语,对辅助学习操作系统理论的效果很有限。
所以,为了能够真切体会操作系统作为一个大型系统软件的复杂性,仿真实验项目内容的选择与设计很重要。我们认为操作系统内核中的底层功能模块不适合做这类实验的题目,因为考虑到实现的效率,通常很难将它们孤立地设计。反之,高层功能模块因为本来就设计为系统可灵活配置与扩展的部分,与其他部分处于较松散的连接方式。这样既能体会操作系统针对某一功能的设计思想,又避免纠缠于硬件相关的细节。例如,用户空间的文件管理器就是这样的项目[4],实验内容的实现通过系统调用使用内核中文件物理组织和设备管理模块,项目的内容聚焦在文件和目录的管理方面。
1.4系统程序设计
系统程序设计是指编写与操作系统紧密相关的程序,这些称为系统软件的模块可看成是操作系统的部分。为了编制这些系统程序,需要详细考察操作系统内核提供的相关资源和服务,所以此类编程实践能促使学生对系统调用和相关数据结构的深入理解。为强调系统程序设计与操作系统教学的紧密联系,美国斯坦福和加州伯克利大学没有设置单独的操作系统课,而是操作系统和系统程序设计课。UNIX类操作系统的命令解释器的实现就是这类项目。在理论课程中只介绍命令解释器所处的层次与功能,正好可以在实验中讲解它的实现方法,使学生进一步领会fork、exec、wait等系统调用设计上的精妙之处。
用户空间的线程库的实现也是这种实验项目。在理论课程中通常只介绍用户级线程与内核级线程的不同,而对用户级线程怎样在内核不察觉的情形下进行切换,学生往往感到困惑。通过这个实验既可以帮助学生进一步理解线程的概念,内容本身也可以归类为对内核调度机制的仿真。怎样既不失去仿真的“真”,又能够控制实现的难度,通过提供支持库实现对CPU寄存器的处理是一个比较好的方案[6]。这样学生在实现线程库时就可以不用汇编语言,在没有简化问题的前提下,只采用高级语言就能完成项目。
1.5系统体验
这类实验是在指定的操作系统下进行,侧重于系统的管理及应用程序设计。与仿真实验一样,项目内容局限在用户空间,侧重点在于操作系统的使用。这类项目的内容通常有shell命令、shell程序、进程通信、线程与同步等内容。这类项目的设计目标主要是开发特定操作系统之上的高级应用程序,这些应用程序会充分利用操作系统的各种支持,是运行效率高的应用程序。生产者消费者问题、读者写者问题等就是这类的项目。在教学中,指明这类典型问题与实际应用问题直接的联系,才能使学生明了这些实验的现实意义,是提高学生兴趣的关键。
3课程设置以及辅助教学环境建设
近年来,许多大学加大了操作系统相关课程的教学力度,例如北京大学14周的“操作系统实习”课在2005年以前为选修课,2005年开始为本科生必修课。2007年起美国加州圣地亚哥大学新设置了“操作系统结构与实现”课,与“操作系统原理”和“操作系统实习”一起构成了系列课程。
现在,开放源码的操作系统不仅仅是争得了一席之地,而且成了商业产品的有力竞争者。所以操作系统的实验对象也更多地转向了此类能提供高质量产品级源码的系统。此类系统由于功能的完整,导致系统庞大不适合在虚拟机上运行,所以许多大学都设置了专用的操作系统实验室。但是由于修改操作系统内核的实验有可能导致系统崩溃,为了避免系统崩溃,指导教师会专门指导编译内核时相关设置的方法,但是这种预防的方法是无法保证一定不会发生系统崩溃,而且由于修改内核需要超级用户的权限,这可能引起其他安全问题。例如机器上的所有文件的所有权和完整性都可能受到威胁。这意味着相应的实验用计算机由于不稳定与公开性无法共享使用。当系统无意中受到破坏时,应当有快速修复的方法。一个超级用户可能有意无意地以大量发送数据包的方式影响网络通信,造成拒绝服务攻击。所以有必要研究相应的管理方法。
一个比较全面的解决方案是这样的[7]:
设置专人管理专用的操作系统实验室,他同时是操作系统课的助教。
实验用机通过一个服务器才能访问网络,服务器上设防火墙。服务器在WPI网上,实验用机在内网里。
实验用机的快速恢复系统脚本程序制成可启动CD。恢复方式应有多种选项。
每一个实验组指定一台计算机,他们有root 权限。每个机器设三类账户:教师账户,本组账户和客人账户。
为防止有人用软盘启动其他组的计算机,设置BIOS使机器的启动顺序为硬盘、CD-ROM,并用密码保护BIOS设置。
每个学生在服务器上设置一个账户,用于备份项目代码以及在实验室以外访问实验机。
为避免通过网络窃取密码,只允许安全的方式(SSH、slogin、scp)连接服务器。
每个学生都能在其他实验用机上启动所属机器的X会话。这样组中多人可同时工作。
因为相当部分的操作系统实验项目难度大,所以师生之间、学生之间的讨论、交流信息非常重要。许多课程建设了网络互动教学环境以适应这种需要,通常以学习交流论坛(BBS论坛)和新闻组的方式。
4评分方法与标准
学生独自完成较大的项目有困难,应当组织3~4人团队共同完成。这样既可以布置工作量大、难度大的项目,又可以锻炼学生的团队协作能力。团队中,理论强与动手能力强的同学可以相互间学习交流,互取所长。这种“团队协作”方式最主要的缺点是不容易保证评价的公正性,如果教师想鉴别出“搭车”的学生,只能通过平时的交流和设置答辩环节。有的学校采用类似民主评议的方式,让学生相互评估对项目完成的贡献大小。
这种当面评价的方式也许不适合国人爱照顾面子的习惯,所以有的大学不把自评的内容放在报告中,而是直接以邮件的形式发给教师。为实现评价的公正性和便于助教操作,应给出具体的评分标准。例如,可参考表1制作实验评估表。
5结论
实验对理解操作系统课的内容很重要,有丰富的各种层次的实验项目与环境供教师依据学生的水平进行选择。如果选择做有可能使系统崩溃的实验,应当有专门的实验室并且采取可靠的管理措施。加强实验过程中与学生的交流和对实验报告的量化评价能够督促学生重视实验,获得好的实验效果。
参考文献
[1] William Stallings. 操作系统―精髓与设计原理(第五版)[M]. 北京:电子工业出版社,2006.
[2] G. Nutt. Kernel Projects for Linux. Addison-Wesley, 2001.
[3] Charles L. Anderson,Minh Nguyen.A SURVEY OF CONTEMP-
ORARY INSTRUCTIONAL OPERATING SYSTEMS FOR USE IN UNDERGRADUATE COURSES.Journal of Computing Sciences in Colleges, Volume 21, Issue 1, Pages: 183 C 190,October 2005.
[4] Gary Nutt. 操作系统现代观点(原书第2版・实验更新版)[M]. 北京:机械工业出版社,2004.
[5] David Hovemeyer. GeekOS: An Instructional Operating System for Real Hardware[EB]. /docs/.
[6] Tom Bennet. A thread implementation project supporting an operating systems course,Journal of Computing Sciences in Colleges Volume 22 ,Issue 5May 2007.
[7] Mark Claypool, David Finkel, Craig Wills. An open source laboratory for operating systems projects. ACM SIGCSE Bulletin archive Volume 33 , Issue 3, September 2001.
作者简介
刘晓燕(1963-),女,博士,副研究员,主要研究方向: Linux 操作系统的研究和分析,知识工程,
张岩(1965-),男,在职博士生,副教授。主要研究方向:生物信息学、信息集成。
通信地址:哈尔滨市南岗区西大直街92号哈尔滨工业大学318信箱150001