“操作系统”教学的定量方法探讨

时间:2022-06-07 05:05:56

“操作系统”教学的定量方法探讨

摘要:本文针对“操作系统”教学中对真实操作系统进行定量处理方面的不足,在反思的基础上,提出在课堂教学、课程实验等各个教学环节加强定量方法的应用,并辅以具体的实例说明定量方法的优势之处,最后给出了实施定量教学的若干建议。

关键词:操作系统;定量方法;性能评估

中图分类号:G642 文献标志码:B

1引言

定量方法在教学中有着广泛的应用。确切的数据往往更具有说服力,能让学生对抽象的理论有更好的认识。在指导学生对某个问题进行研究,采集、分析数据乃至得到结论方面,更彰显了定量方法的重要性。

“操作系统”是计算机学科的一门核心课程,其教学内容多处采用了定量方法,如对进程调度算法和磁盘调度算法的分析就是典型的例子。但是,通过分析当前一些操作系统教学的相关材料及文献后,我们发现操作系统教学在定量方法的使用方面依然有不足之处。

首先,在系统性能评估方面内容偏少。性能是操作系统设计时的一个重要考虑因素,计算机普通用户可能关心响应时间,而系统管理员可能关心吞吐量。如何对系统进行具体的性能评价在国内外操作系统教材中均着墨很少,甚至根本不涉及。在一些操作系统教学网站公开的课件和课程实验内容中,我们也很少看到这方面的内容,尽管文献[1]明确指出操作系统的核心学时中应有一学时用于系统性能评价。

其次,操作系统教材往往不能利用当前真实系统的实际数据,许多教材定性分析内容多,但定量部分则有所不足。这当然与印刷物自身的局限性有关,但另一方面还可能源于教材作者自身的考虑,如果过分依赖于特定的平台,在硬件和软件飞速变化的时代,相关内容很容易过时。

教师作为教学活动的主导者,应该不为相关教材所局限,如果有意识地在多个教学环节应用定量手段,则可以弥补上述不足,取得更好的教学效果。

2各教学环节中定量方法的增强实施

对于操作系统教材中已经广泛采用的量化手段,我们不再讨论,本节着重讨论可以进一步强化实施量化方法的教学环节和具体做法。由于各教学环节的特点不同,量化方法实施的着眼点和程度也就有所不同。

2.1课堂教学中征引相关技术数据弥补教材不足,反映操作系统当前动态

本环节的可增强余地不大,但是教师可以关注业界动态,了解本领域的最新进展,收集丰富的数据材料并用之于教学。例如讲到分时系统与时间片,可以列举代表性的分时系统CTSS、Unix V6、4.4BSD及最新的Linux 2.6在运行平台上的时钟中断频率、时间片和平台计算能力等数据,通过这些具体的数据,学生不仅对真实系统有直观的认识,还可以看到历史轨迹下硬件技术的发展对软件参数值产生的影响。此外,这些数据还可以用于估算进程切换的纯开销。

再例如设备管理和文件管理很多知识点基于的前提就是磁盘访问速度远远慢于内存访问速度。但目前固态硬盘的市场日趋增大,其特点完全不同于传统机械硬盘,教师可以在适当时候列出两类硬盘的性能参数对比,然后针对固态硬盘技术提出如下问题:

(1) 调度算法有必要吗?

(2) 缓冲技术还要必要吗?

(3) 磁盘碎片整理有必要吗?

教师顺便介绍当今操作系统如Linux、Windows对固态硬盘技术的支持时给出以上问题的结论,学生不仅可以了解当今操作系统发展动态而且可以深深体会硬件技术对操作系统实现技术所产生的影响。

2.2围绕真实系统,开发定量结果的习题

在学习过程中,要求定量结果的习题一般比概念性、定性化的题目更能吸引学生的注意力,激发学生的兴趣。

纵览操作系统教材的配套习题和专门的操作系统习题书,我们依然可以发现不足之处,就是针对当前真实系统的习题偏少,即便是一些要求定量结果的习题,因取材自抽象后的简化模型,给出的相关计算参数也不能反映真实场景。这种处理方式的弊端就是理论和实际有一定的脱节,学生对真实的系统可能会有隔膜。教师可以改善这种状况,下面是我们在教学过程中用过的两个题目:

(1)C程序“hello,world”从开始编辑到最终运行在系统中会产生多少进程/线程?

(2)C程序“hello,world”在当前系统中运行一次,其产生的最少、常规、最多(理论上)缺页次数是多少?

这两个题目将迫使学生针对具体的操作系统进行分析解答,由此获得的对Linux/Windows进程/线程模型和虚拟存储子系统的认识绝对不是普通习题可以达到的。

再例如页表的格式及地址转换,相关的习题都是基于一级页表,而真实系统中常见的多级页表却不见踪影,原因很简单,即使小进程的页表也需要若干KB的数据量,对于纸质书籍这往往是不可以接受的。在Web技术广泛应用的今天,我们完全可以抓取一个真实进程某个时刻的页表快照,然后设计相应的题目,通过课程网站以电子作业的形式提供给学生。

2.3在课程实验与课程设计中引入性能测试和评估

相比起课堂教学内容,操作系统实践部分的弹性更大,教师的自由度更多,教师可根据具体情况引入性能测试相关内容。性能测试与评估必须针对具体的平台,我们在课程设计中选用的是Linux操作系统,其源代码开放,有大量的软件可供使用,可以进行各种层次的性能测试与评估。

具体的引入方式有两种。一种方式是将性能测试分析作为单独的实验,可利用现成的基准测试程序和性能分析工具。因为操作系统是网络的先修课程,所以用于测试网络、服务器性能的基准测试程序不太适合作为实验内容,比较适合的是开源微观基准测试套件Lmbench和文件系统基准测试程序bonnie、iozone、dbench等。Lmbench用于测量处理器和内存、网络、文件系统、磁盘之间的系统延迟和数据移动带宽,其测试结果包含了系统调用、上下文切换、进程创建、文件系统的创建和删除等性能指标,可以发现系统的瓶颈,比较贴合本科教学内容。Linux平台下的性能分析工具也非常多,比如proc文件系统、top、vmstat、iostat和sar等,如果想分析测试Linux内核本身的性能,则可以使用Linux Trace Toolkit或Oprofile。总而言之,Linux这方面的工具非常丰富,可以满足不同层次的需求。

另一种方式是将性能测试评估作为实验项目的一个步骤。我们所见的课程设计项目一般都需要分析、设计、实现、测试功能正确性及撰写报告这几个步骤,但是将性能测评纳入考虑范围的很少。下面是我们用过的一个实验。

逆序一个大小为64MB的文本文件,请使用下面三种方法:

(1) 标准C的I/O函数;

(2)Unix的I/O函数;

(3)open和mmap。

要求尽量考虑效率,比较三种方法的性能。前两种方法,要求测试I/O每次读写单位分别为1B和4KB的情况。

学生从本实验获得的知识与技能有:

(1) 理解缓冲对性能的影响。

(2) 了解系统调用开销和使用strace追踪系统调用情况。

(3) 使用time测试程序运行时间,了解程序运行的实际时间、用户CPU时间和系统CPU时间。

(4) 了解操作系统本身实现对程序性能的影响。

影响程序性能的因素非常多,学生一般都知道语言、算法和数据结构等因素。但采用不同系统调用实现相同功能,性能差距却很大让学生对mmap充满了好奇。另外值得一提的是,我们发现有些学生采用了较差的实现方案,导致每次读写单位为一字节时利用标准I/O函数的程序竟然比利用Unix I/O函数的程序慢,经过指点后学生使用strace发现了症结所在,重新调整实现方案取得了预想的结果,这种性能调节的过程对学生起到的锻炼效果是令人满意的。

2.4在课外教学指导中深化定量教学

课外学习指导是课堂教学的延续,教师可以适当指导学生自发组织的操作系统兴趣小组,但应注意充分发挥学生的积极性、主动性。在加强学生操作系统量化处理能力方面,一种方式是跟踪当前Linux内核的进展,学会定量评估某个内核组件或功能模块的性能,甚至在此基础上尝试改进。另一种方式是指定阅读若干操作系统方向的论文,这些论文包含研究技巧和相应的性能测试分析,如有可能,让学生重复论文的实验结果,一个很好的示例见文献[3],这种方式能培养学生基本的科研素养。

3操作系统定量教学实施的建议

在定量教学实施过程中,建议注意如下几点:

(1) 要有系统的观点。所谓系统的观点体现多个方面,一是定量方法本身是为教学服务的,二是操作系统本身是计算机系统中的一个组件,三是操作系统的各子系统如何配合运作整个系统的,四是子系统的各功能模块如何配合运转本子系统的。以这种观点来组织教学,必须依托于真实系统,把各个知识点贯穿起来,前面各节提到的实例都反映了我们这方面自觉的尝试。

(2) 注意各教学环节互相配合衔接,定性与定量结合。以线程的讲授为例,引入线程的一个主要目的是利用机器并行处理能力,若干年前可能因为硬件条件不足,学生无法亲身体会,但是在多核和超线程技术大行其道的今天,完全可以设计相应的项目让学生在真实的机器上进行性能测试,体验并行带来的好处。

(3) 注意实例积累与学生反馈。在实施量化教学时,符合理念的现成习题和项目确实不多。一个途径是改进一些已有的习题和项目使之满足定量教学要求,另一个途径是自行设计全新的习题及项目。在新习题和项目开始使用的前几年,要注意和学生沟通,收集学生的反馈意见。根据我们的经验,新题目或新项目必须经过学生的打磨后才会变得更加完善。

4结束语

当今操作系统教学在定量方法的运用方面或有不足之处,特别是在目前课堂教学内容相对于统一的情况下,实验环节的具体内容更显多样性,其具体的实施和考核由各个高校的教师自行掌握,使得系统性能测试与评估一直被有意无意地忽视。我们根据教学体会系统地讨论了在各个教学环节中如何有效实施量化教学并佐以具体实例说明,希望引起同行的关注并予以批评指正。

参考文献:

[1] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006.

[2] 罗宇,张颖蓓,叶常春. 本科操作系统课程设置及教学体会[J].计算机教育,2006(1):39-40.

[3]Bryan Clark, Todd Deshane. Xen and the Art of Repeated Research[C]. In USENIX Annual Technical Conference, FREENIXTrack, 2004:135-144.

[4] John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach [M].4版.北京:机械工业出版社,2007.

上一篇:从“操作系统”的教学浅谈学生能力的培养 下一篇:“计算机导论”实验教学改革探讨