“操作系统”课程教学方法研究

2016-03-21 13:04代仕芳李燕
计算机时代 2016年3期
关键词:操作系统理论与实践教学方法

代仕芳 李燕

摘 要: 操作系统是一门综合性课程,具有概念多且抽象、理论性强、知识点多等特点。针对理论教学和实验教学中出现的一些常见问题,如局部思维方式、知识储备不足以致代码实现能力差等,提出三点改进:理论与实践相结合、整体与局部相结合和层次式教学,以提高操作系统教学的效果,提高学生综合能力。

关键词: 操作系统; 教学方法; 层次式教学; 理论与实践

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2016)03-64-03

Research on teaching method of operating system course

Dai Shifang, Li Yan

(College of Information and Engineering, Nanjing University of Finance and Economics, Nanjing, Jiangsu 210003, China)

Abstract: Operating system is a comprehensive course with the characteristics of more concepts and abstract, strong theoretical, more knowledge points and so on. This paper aiming at the common problems in theory teaching and experiment teaching, such as the local way of thinking, the shortage of knowledge reserve that result in the poor code realization ability, puts forward three improvements: combination of theory and practice, combination of global and local, and the hierarchical teaching, in order to improve the teaching effect of the operating system course, and improve students' comprehensive ability.

Key words: operating system; teaching method; hierarchical teaching; theory and practice

0 引言

操作系统是对计算机的各类软、硬件资源进行管理以充分利用计算机系统中的各类资源,并向用户提供良好的工作环境和运行界面的系统软件。操作系统作为在计算机硬件上铺设的第一层软件,提供了用户使用计算机的接口。因此,操作系统开发人员既具有软件开发方面的知识,也要了解硬件的相关知识。操作系统是一门综合性课程,它由许多概念、设计思想及算法等构成,因此,具有概念抽象、理论性强、知识点多等特点。操作系统是计算机专业一门重要的专业主干课,其教学目标是帮助学生了解计算机硬件和软件的关系、掌握操作系统各种功能的实现算法,注重通过对操作系统抽象的理论知识及系统结构的学习,培养学生开发和设计大型软件的思维和方法,提高学生软件开发能力。因此,操作系统这门课程配有相应的实验课程。

然而在实际教学中发现,该课程并未能有效的提高学生独立开发软件的能力,仅仅实现了让学生了解操作系统的构成及功能实现这一基本教学目标。这个问题的出现与我们课程特点密不可分。首先,课程设置偏向理论,课程内容偏向软件设计和算法实现,虽配套有实验课程,但比例较低,不利于提高学生的实践能力。其次,操作系统涉及到各类软硬件资源,因此,需要专门的实验平台,否则,直接采用传统的编码和调试方法及有可能导致系统崩溃。最后,对于操作系统这种大型软件的开发,需要学生具有较强的编程开发能力,实际上,很多学生并不能快速有效地将算法转化为可执行程序,少数学生虽能快速实现局部功能但对软件的整体思维和开发能力欠缺,目前大部分的实验工作主要集中与操作系统部分子系统功能的实现。本文对操作系统理论教学及实验教学中学生遇到的各种问题进行归纳总结,进而探讨培养学生的软件整体开发思维和方法,提高学生的独立软件开发能力。

1 问题归纳

1.1 局部思维方式

所谓局部思维方式是指学生在学习操作系统知识时,只关注当前学习或实践的内容与知识点,很少能将当前知识与前面的知识联系起来,这导致学习完一个知识点后,学生很可能不知道该知识点是为了解决什么样的问题。这样的局部思维方式是学生长期的学习过程中养成的不良习惯,不仅在学习操作系统这门课程中出现,在其他课程的学习中也同样存在。

操作系统是一个整体性软件,各章节的知识都是相互关联的,因此,在这门课程的学习过程中,这种局部思维方式带来的问题就更加明显。下面总结了几种由局部性思维带来的普遍性问题。

关注知识细节,忽视知识的宏观应用。实际教学中发现,很多学生在学习的过程中常常发生一叶障目的现象,通常的表现是学习了当前的知识点后,不知道学习该内容的目的,或者不知道该知识是用于实现操作系统的哪部分的功能的,因此,常常在学期结束后询问学生什么是操作系统,它有哪些构成和基本功能,很多学生还是一头雾水。这些主要是由于学生缺少以宏观的视角来看待和解决问题的能力,不能正确认识每个细小知识点在整个宏观问题中所处的位置。这就好比学生们仔细认真的观察了一砖一瓦(各个细小知识点)却不知道砖瓦是用来盖房子(开发大型的系统软件操作系统)的,或者即使知道使用砖瓦来盖房子,也不知道在什么地方什么时候使用什么材料来盖房子,概其主要原因就是学生过于关注一砖一瓦的实现细节而忘记关注砖瓦的使用过程,即只关注微观的知识细节,而忘记学习宏观的知识应用方式,这也是现在学生学习中的普遍性问题。

关注知识点个体,忽视整体联系。操作系统课程中,每个章节内容对应部分子功能的实现,每个子功能相互协作才能构成一个完整的操作系统软件。学生在学习过程中较多关注每个子功能的实现,而忽视了它们之间的联系,因此,无法有效的将各个子功能拼接成一个完整的系统软件。例如,学生不清楚I/O系统与用户之间的接口在哪,如何让处理机管理系统、存储管理系统、I/O系统等协同工作,等等。

1.2 知识储备不足

实际教学中,除了上述局部性思维方式外,学生知识储备不足也是影响课程学习的另一主要原因。我们知道操作系统是一门综合性课程,想要学好操作系统,既要了解软件开发的相关知识,也要有硬件的基础,因此,知识储备不足会直接影响操作系统的学习。其表现归纳如下。

⑴ 常见的概念模糊。例如,逻辑地址空间与物理地址空间、程序的链接、数据结构、虚拟化等等常见概念的理解模糊。还有很多同学不了解内存单元的地址,更不知道内存地址的作用是什么,因此,在介绍地址映射、数据装入内存的过程需要花费大量的时间去补充基础知识。

⑵ 硬件基础薄弱。计算机系统硬件组成知识薄弱,不了解计算机系统的工作流程,不了解计算机常见硬件的基本功能和基本特性。

⑶ 代码实现能力差。操作系统实验课程的教学中看到学生的编程能力普遍较差,且没有软件开发基础和思维方式,很多学生只注重功能的实现,不关注各个部分的接口,导致各子系统可以正常运行,但是,无法拼接成完整系统。主要表现为编码随意,乱用GOTO语句,数据结构定义不规范,指针使用随意。例如,通过printf(“%d\n”,i),学生编写输入语句scanf(“%d\n”,&i),而实际规范的语句应为scanf("%d",&i)。

2 操作系统课程教学的几点思考

基于上述问题,本文针对操作系统教学提出几点改进意见。

2.1 理论与实践相结合

注重理论教学的同时,也要加强学生的实际应用能力的提高。现在的学生更加看重知识的实用性,将自己所学知识转化为实际应用和实践是学生自主学习的主要内在推动力。单纯的进行理论教学,会让学生感觉操作系统是一门生涩枯燥毫无用处的一门课程。

在教学中,我们将理论和实践相互结合,详细阐述理论知识,让学生充分理解相关工作原理及实现算法,再通过配套实验课程指导学生将理论知识转化为实际应用,通过这一转化过程,提高学生对操作系统实用性的认识,激发学生自我学习的内在动力。理论转化为实践的过程中,学生会逐渐发现只有扎实的理论基础积累才能快速的转化成实践,提高了学生对理论知识学习的重视程度,从而形成理论指导实践,再由实践去反思理论的良性循环。

在理论转化成实践的过程中,学生能够将空泛的概念落到具体实处加深印象和理解,例如,内存的物理地址空间,可以通过编码的调试过程查看每个内存单元的存储内容,充分理解内存的数据存储及变化。除此之外,通过理论转化代码实现的过程能够快速有效的提高学生的编程能力,发现自己在编码方面的不足和问题,以及提高自身的软件设计能力。

2.2 整体与局部相结合

建立学生对于操作系统的整体概念,关于处理机管理、存储器管理、I/O设备管理、文件管理及用户接口等模块都是操作系统的子系统,这些子系统相互关联、相互协作才能实现操作系统对各种软硬件资源进行管理并为用户提供良好工作环境的功能。

教学中充分强调操作系统的整体结构和设计方法,在对整体结构和功能充分了解以后,再介绍操作系统的模块划分。透彻讲解每模块的设计思想和功能实现,让学生在潜移默化中学习软件开发的思维方式和解决方案,逐渐提高学生运用已学的设计思想解决问题的能力。只有对每个子模块具体功能原理和实现方法充分掌握后才能快捷迅速的将它们从理论知识转化成代码,也只有在每个子功能的代码都能充分实现的情况下,才有可能将它们连接成一个完整的大型的操作系统软件。

整体是由局部组成,只有每一子模块都实现了才有可能连接成整体,而整体不是对每个子模块的简单拼凑,各个模块之间如何相互协调共同完成用户任务是需要在一开始的软件整体设计中考虑的问题,此外,软件设计之初我们还需考虑各子模块之间的接口。因此,在整个教学过程中,我们遵循“整体-局部-整体”的一个教学过程。通过这个过程,让学生充分了解整体与部分之间的相互关系,加深理解。

2.3 层次式教学

操作系统课程是按年级统一开课的,但是同一个年级,不同学生的差别也很大,比如,他们各自的知识储备、自身的理解力和领悟力、兴趣爱好,比如有的善于思考而有的喜欢动手编程等等。因此,对不同学生采用统一标准显然是不合适的,对于能力强、精力充沛的学生,这个统一的标准不能激发他们的潜能,而对于知识储备相对较弱、能力稍差的学生,这样的统一标准又会打击自信心。因此,对于操作系统无论是理论教学还是实验教学,都建议采用层次式教学,对于不同水平的学生提出不同要求。

在理论教学中,我们将掌握操作系统的基本概念、设计思想和算法作为基本教学目标,对于能力较强的学生在教学中提示一些课本中没有的知识点去拓展知识空间和思维方法,比如:在学习了用户空间和内核空间的基本概念后,让有能力的学生了解用户空间的数据如何与内核空间的数据进行交互,实现两者之间数据交互的方法有哪些。而对于那些动手能力较强的学生可以引导他们用1~2种方式去实现将用户空间的数据传递到内核空间内。

在实验教学中,基本的教学目标是独立实现操作系统中的基本算法,如进程同步、进程调度算法、银行家算法及内存的分配回收算法等等。对于能力较强的学生可以引导他们去读一些开源linux操作系统的源代码,有选择的对部分功能模块进行优化改进,然后再编译链接,最终将该改进植入操作系统中,以此激发学生的学习兴趣。

3 结束语

操作系统课程的教学不仅需要教师不断更新教学内容和教学工具,还要求教师能够根据学生的特点因材施教。本文总结了归纳操作系统在理论教学和实验教学中出现的一些常见问题,如局部思维方式问题和知识储备不足代码实现能力差的问题,并针对这些问题提出三点改进建议:强调整体与局部之间的相互关系,形成整体-局部-整体的教学模式;要求理论联系实际,将理论知识应用到具体实践中去,从理论到代码实践,再通过代码实践过程反思理论方法的有效的教学方法;针对不同学生采用层次式教学手段,设定基本教学目标,对于完成基本教学目标的同学引导其完成更高层教学目标,提高学生学习兴趣和能力。

参考文献(References):

[1] 汤小丹,梁红兵等.计算机操作系统(第4版)[M].西安电子科

技大学出版社,2014.

[2] 张尧学.计算机操作系统(第4版)习题解答与实验指导[M].清

华大学出版社,2013.

[3] 屠立德,操作系统基础[M].清华大学出版社,2014.

[4] 付沙,杨波,计算机操作系统课程教学改革的研究与探讨[J].

计算机时代,2010.3:52-56

[5] 朱敬华,金英等,操作系统课程教学改革与创新人才培养浅

析[J].中小型企业管理与科技,2015.8:192-192

猜你喜欢
操作系统理论与实践教学方法
初中英语写作教学方法初探
教学方法与知识类型的适宜
智能手机操作系统的分析与比较
国产桌面操作系统中虚拟化技术应用研究
文化差异对大学英语教学的影响
浅谈高职院校服装设计专业一体化教学
唱法与教法·理论与实践
我的教学方法