操作系统课程实例与实践教学方法的研究与实践

时间:2022-07-13 11:12:29

操作系统课程实例与实践教学方法的研究与实践

摘要:本文介绍了作者多年来对操作系统实例与实践教学的研究与探索的经验,提出了在教学过程中采用工具软件诠释实例的方法。

关键词:操作系统;工具软件;链接;模块;虚实地址空间;地址转换

中图分类号:G642 文献标识码:B 文章编号:1672-5913(2009)04-0030-02

操作系统是用来管理计算机系统中所有软、硬件资源的系统软件,所有的计算机用户都在使用操作系统,只不过不同层次的用户在不同层次使用操作系统提供的功能。计算机相关专业一直以来将操作系统作为最重要的专业核心课程,一方面,使学生通过操作系统的学习,深入理解计算机的软硬件协同工作原理;另一方面,有助于加强和培养同学们的解决实际问题的综合能力,加深专业素养,而这也正是计算机专业与非计算机专业对学生计算机知识培养的区别所在。

1 课题背景

面对这样的定位,教师如何教、学生如何学成为各高校相关教师不断研究的方向。教师所讲授的内容从基本理论知识和典型算法到理论与实际操作系统相结合,与此相对应,各高校也编写出版了一些新的将操作系统理论与实际操作系统结合在一起的教材。新的教学内容对教师提出了更高的要求,也促使我们探索更有效的教学方式。以“传授知识、培养能力”为目标,我们将操作系统教学内容分为三部分处理:

(1)对于传统操作系统理论和典型算法,既要让同学们学习系统的操作系统理论,又要为同学们参加研究入学考试奠定基础。在覆盖大纲的前提下,讲授时务求透彻。保证同学们能够理解原理。

(2)对于操作系统实例,讲授操作系统功能在具体操作系统中是如何实现的,从实际教学情况来看,不太易于解释明白。究其原因,主要有:

①操作系统作为大型系统软件,规模庞大,比如较流行的作为实例的Unix、Linux或Windows系统,规模都很大;

②操作系统功能都是软件和硬件配合工作实现的,其中任一部分功能的实现,都涉及太多的细节问题,比如存储器管理中进程逻辑地址到物理地址的映射,就涉及到了CPU中专用寄存器、内存中的数据结构和硬件的地址转换结构等知识。

这一部分所涉及知识全部讲述,课时必然不够用:囫囵吞枣地讲,同学们课堂上听不懂,下去自学必定遇到障碍(复杂的结构,琐碎的细节),最终极有可能使此一部分内容以记住几个概念、了解几个数据结构收场,从而失去学习实例的本意。

(3)对于操作系统的实践环节,要使学生主动运用所学理论解决问题,以提高能力为目标。

操作系统实例和操作系统的实践部分是加强和培养学生的解决实际问题的综合能力的关键环节,对加深学生的专业素养很有意义,其如何实施是教学研究的重点。

2 操作系统实例教学的研究

我院在教学过程中,注重实践能力和创新能力的培养,强调学以致用,激发同学们的学习兴趣。

具体在操作系统实例教学中,我们的目标是:

(1)力求从整体上展现操作系统功能的实现方法,避免陷入细节。

(2)操作系统作为大型软件,结构复杂,功能完善,操作系统实例教学不求面面俱到,而是以其中的几个方面作为突破口,诠释具体操作系统的实现方法,从而举一反三,理解全部。

讲授实例的目的是介绍在具体操作系统中,理论是如何实现的。新教材有的是以分析开源操作系统的源代码及操作系统的结构来进行解释的,这是非常好的资料,但往往篇幅较大,作为课堂教学内容有散乱、不易于组织的缺点。鉴于此,如果能将理论知识的实现方法通过直观的方法进行剖析,从另外一个角度展现实现的细节,对学生的学习、理解是大有帮助的。我们采用一系列工具软件由外向内一步步地展现操作系统的功能实现。

3 操作系统实例教学的实践

下面主要以Windows系统下存储器管理为例,介绍采用工具软件进行教学的过程。讲授操作系统其他管理功能的思想与此相同,只是所使用工具软件有所不同。

在介绍存储器管理部分时,要介绍程序的链接方式。我们用一段源程序作为实例,分别采用不同的IDE环境,得到功能完全相同的两种不同格式(静态链接和动态链接)的可执行文件。首先比较两种格式文件的大小,一般而言,静态链接可执行文件远大于动态链接可执行文件,相比而言多了些什么内容呢?静态链接可执行文件中包含了该程序运行需要的所有内容,其中有程序中所调用的库函数实现代码,那么动态链接可执行文件是如何组织的呢?分析动态链接所得到可执行文件,在Windows下,使用dependences工具,分析PE文件头部得出了所要动态链接的库以及库中的具体函数;在Linux下,使用idd工具分析ELF文件头部得出了所要动态链接的库。

接下来,分析动态链接库是如何加载的。对于Windows的虚拟存储器,在进程逻辑地址空间,分段概念如何体现呢?首先运行链接得到的可执行文件,创建进程之后使用工具软件分析进程快照(snapshot),可得该进程当前加载的模块的情况,包括每个模块的名称、大小、基地址和共享计数等,这就可以看到动态链接库确实被加载到进程逻辑地址空间,而且这些模块是被整体加载的,它们占用不连续的逻辑地址,由此可见,动态链接库就是操作系统理论中分段管理的实际对应物,从而段是一个面向用户的逻辑单位,段内连续、段间离散,分段引入的是二维地址空间等理论得到了生动的诠释。

再进一步,在程序中增加动态加载模块的语句,并安排到某分支中,重新编译、链接得到可执行文件。运行并分析其所加载的模块,执行相应的包含动态加载模块的语句分支后,再分析其所加载的模块,对比分析两次结果的不同,阐述动态加载的相应内容。在程序中加载两个占用同一推荐地址的动态链接库模块,运行其并分析其所加载的模块,可见当发生地址冲突时系统是如何处理的,借以解释地址重定位。在两个程序中使用同一个动态链接库,分别编译、链接得到动态链接格式的可执行文件,先后分别运行两个程序,并观察随着进程创建、结束该模块引用计数的变化情况,阐述以段作为管理单位实现共享的实现方法。

进程逻辑地址空间涉及内容讲授完毕之后,虚拟存储器的另一个重要问题――虚实地址空间的地址转换问题,是这样来解释的:首先选中程序中某个变量,运行程序并得到具体某时刻变量值、变量逻辑地址。其次通过工具软件得到该进程对应的物理地址空间。再次用工具软件计算得该变量对应的物理地址,利用工具从该物理地址读出当前值,从变量的数据类型、所占用字节数和当前值等方面分析物理内存内容与之是否吻合。再次,剖析刚才地址转换所涉及的页目录索引、页表索引和责表内容等具体内容,由此阐述具体操作系统实现从逻辑地址到物理地址映射的映射过程及各种数据结构的组织及所起的作用。

总体上讲,将软件工具引入到教学中,是一种“摆事实,讲道理”的教学方法,对于每个知识点,首先结合实例通过软件工具尽可能地将操作系统所做的工作展现出来,在这一过程中结合操作系统理论和适当的数据结构、硬件知识,剖析这部分功能是如何实现的,从而达到使同学们在较短时间内理解的目的。

4 操作系统实践教学的研究

操作系统实践教学环节,让同学们亲自动手,检验和应用前面学习的知识,完成相应题目来提高能力。从面向应用的角度,制定恰当的题目与合理的组织形式是实施的关键。为此,我们进行了如下改革:

(1)实践教学内容

在课堂授课的基础上,遵循“传授知识、培养能力”这一思路,我们将以往模拟实现操作系统功能的实践环节,改为面向应用指定题目,大体分为两个方向:

①课时较少的情况下利用系统功能调用编程,在应用层开发出有特色的功能;

②课时较多的情况下首先编写工作于核心层下的驱动程序,获得访问核心数据结构的权限后再将相关数据传给工作于应用层的普通程序,两者结合完成有特色的功能。前述实现分析虚实地址转换过程的工具软件就是这样设计的。

(2)实践教学组织形式

如何激发同学们的学习热情,是我们一直在探索的内容。具体到实践教学组织上,积极鼓励优秀的同学提出自己的创意及想法。这些创意及想法经教师审阅后可作为实践题目。在此基础上,较大题目组织为项目组,目标是在有限的时间内完成较完整的项目,之后项目组成员共同总结,完成实践报告;较小题目个人完成并提交实践报告。

(3)实践教学平台

我们在虚拟机上配置操作系统,再配置开发环境来搭建实践教学平台,这样从高级语言编程到系统功能调用,以及直接的硬件编程全部可以实施,而且可以根据同学们的熟悉情况选择相应的系统及编程环境,自由度较大。

经过几年的摸索与积累,我们已收集和自己开发了一部分用于操作系统教学的工具软件,其中有的是教师开发的,也有的是师生共同努力开发的,之中的许多工作得到了学校、学院的立项支持;同时教师申请的科研项目积极吸收感兴趣的同学参加,搭建起一个开放的平台推动教学水平和科研能力的发展。我们也积极借鉴国内外同行的有益经验,为提升操作系统的教学水平不断努力。

上一篇:新升本科院校计算机公共课面临的问题及对策 下一篇:高职高专操作系统课程教学改革研究