APP下载

面向内涵式发展的操作系统课程建设

2020-02-26谭舜泉梁正平朱泽轩

计算机教育 2020年1期
关键词:内涵式源代码编程

谭舜泉,梁正平,朱泽轩

(深圳大学 计算机与软件学院,广东 深圳 518060)

0 引 言

操作系统是计算机软件系统体系中的最重要部分,是连接底层硬件和上层应用软件的核心模块。操作系统课程是计算机科学与技术、软件工程以及相关联的信息技术专业的核心课程。国内操作系统课程起步较晚,但近年来随着中国在全球软件产业链的地位提升,作为计算机软件系统体系基石的操作系统相关的理论和实践,越来越受到国家的重视和关注,其教学内容和教学方式的改革是目前计算机高等教育研究的一个热点领域[1-3]。

实现高等教育内涵式发展,是党和国家关于高等教育发展的基本要求。目的是为了解决当前高等教育中教师教学和学生培养的一些深层次问题。就核心课程教学而言,当前高等教育中存在的典型深层次问题是教学过程的浅表化[4-5]:①教师课堂教学趋于公式化、流程化,呈现填鸭式的单向输出;②学生课堂学习趋于简单化、功利化,呈现被动式的单向接手;③师生关系疏远冷漠,教学内容不深、范围狭窄,考查过浅。

1 操作系统课程的内涵与外延

传统的操作系统课程教学以冯·诺依曼体系结构为依托,分章节介绍操作系统如何管理进程、实现处理机调度、管理实存、管理虚拟存储、实现输入/输出管理、实现外部文件系统、实现系统对外接口、保证系统安全等基础理论及经典算法。但由于操作系统位于整个软件开发层级中,最接近硬件的底层,因此开发、理解难度较大,容易导致教学过程的浅表化。操作系统课程的内涵包括:①培养学生掌握使用底层开发语言,如C 语言及x86 汇编语言,直接对微机硬件进行编程驱动的能力;培养学生在源代码级实现操作系统基本理论及算法,如信号量机制、离散内存存储等。②培养学生掌握系统核心编程中自顶向下、逐层细分等结构化编程能力;培养学生不仅能使用系统提供的编程库,更能在有限的编程接口支持下,实现及扩展系统编程库。③培养学生掌握裸机级别的底层调试排错能力;培养学生在现代虚拟机技术的支持下,进行CPU 指令及寄存器级别的断点、跟踪、调试以及排错能力。

操作系统课程的外延包括:①培养学生在底层开发时,在非面向对象编程环境下的项目合作及分工能力;培养学生在开发大型复杂项目时,面向代码修改冲突高发场景下的多分支分布式源代码管理能力。②培养学生在面对像操作系统这样的高度复杂、多种编程语言混合编程的大工程项目时,进行系统内部架构设计、模块划分、对上下层接口设计的综合能力。③培养学生在遇到复杂的技术细节问题时,查阅文档,尤其是英文技术文档的能力。比如在进行x86 汇编语言编程时,能熟练查阅x86 汇编语言参考手册,确定某一指令在不同型号CPU 中的不同参数。

2 操作系统课程建设方案

2.1 面向内涵式发展的建设思路

在制订操作系统课程的建设思路时,强调改变简单地以传授操作系统基础理论及经典算法为目的的教学范式,力图建立以操作系统课程教授为契机,促进学生项目开发能力,特别是底层编程能力及大型跨语言跨平台项目开发的驾驭能力,促进学生的全面发展。在课堂及实验教学中将教师讲授、学生实验开发、讨论分析、调查研究、成果汇报答疑等多种教学方式有机结合起来。希望能从传统操作系统教学中的教师主导转换成学生主导,教师和学生均能深度投入其中,亲身参与操作系统开发整个流程,真正体现操作系统课程的内涵,实现以学生为依归,全程紧张的深层次自主学习。

另一方面,要丰富操作系统课程教育教学的内涵,需要多渠道开发利用现有的操作系统相关教育教学资源。国外在操作系统课程建设上发展较早较快,并且在课程资源的开发共享上,较为开放。在网上开源了大量的操作系统开发源码及教育教学文档。比如美国麻省理工大学(MIT)的xv6 教学操作系统,专为操作系统教学而设计,并采用开源共享发放模式,目前已经发展到了第11 版。国外和国内的多家著名高校,如普渡大学、清华大学等,都引入了xv6 作为课程的示例操作系统。因此在本课程建设中,引入xv6操作系统开发源码及相关的教育教学系统,能丰富课程的教育教学资源,实现操作系统教学与国际名校之间的资源共享互通,扩大如xv6 教学操作系统这样的优秀教育教学资源的影响面,使学生能够共享全球公认的优质操作系统教学资源,丰富课程教学内涵,提高人才培养的质量。

2.2 基于操作系统源代码分析及二次开发的教学内容

要实现操作系统课程的内涵式发展,在教学内容的设计上,就要改变传统操作系统课程中模块化教条式的教学内容组织方式。在保证学生对操作系统基础理论和基本算法的掌握的前提下,强调对操作系统内核自顶向下的整体把握。通过对目标操作系统的源代码分析以及二次开发,使得学生能获得设计及编写操作系统的第一手经验,提升学生的动手实践能力。

为了实现以上要求,将传统的以冯·诺依曼体系结构为依托的模块化教学方式作为一条主线,将以xv6 教学操作系统的自顶向下逐步细化的分析理解,并在此基础上的二次开发作为另一条主线。两条主线均包含理论教授和实验讲解分析,共同推进,相互支撑。基于这两条主线的教学内容设计见表1。

2.3 基于操作系统实验开发沙盘系统的实验启发型教学方式

为实现操作系统课程的内涵式发展,在教学方式上,也需要进行相应的改革。从传统的顺序式以教师讲授为主的单向传输式的教学方式,转换为基于操作系统实验开发沙盘系统的实验启发型教学方式。

深圳大学的操作系统课程的周学时为4 学时,其中2 学时为教师讲授,2 学时为学生实验,从教学时间分配上保证了实验启发型教学方式的开展。采用实验先行,理论传授随后的新型启发式教学方式,核心是基于Linux+Docker 开发的一套操作系统实验开发沙盘,里面包含每一个阶段性实验对应的xv6 操作系统辅助源码、编译调试环境、支撑虚拟机以及功能验证脚本。学生可直接在沙盘中进行操作系统实验所要求的功能改进编码及编译、调试、测试。操作系统开发涉及大量底层代码修改,如果学生在开发过程中不慎导致系统崩溃,只需重置虚拟机,复原实验开发沙盘环境即可。通过这种方式,实验遵循自顶向下、逐步细化的原则,在涉及相关知识点的理论传授之前,先让学生从对应的操作系统实验着手进行开发。通过一系列的预备性实验,学生阅读代码及自学对理论有初步的理解;然后再通过课堂讲授加深对相关操作系统理论及算法的理解;最后通过一系列的验证性实验及设计性实验将理论与实践结合起来,巩固学生对相关理论的理解。基于操作系统实验开发沙盘系统的系列实验见表2。

表2 基于操作系统实验开发沙盘系统的系列实验

2.4 以“全程紧张”为指导思想的教学实践

为实现操作系统课程的内涵式发展,在教学实践上,以“全程紧张”为指导思想。课程考核不再局限于期末闭卷考试的形式,而是平均分布于整个学期的多个考查点,让学生不再把主要的精力放在临考前的突击复习,而是把精力放在达到每个考查点的考查要求上。以主线2 为依托,和操作系统实验体系相结合,对于主线2 中每个章节均设置了理解考查点,通过与之相关联的实验设置了实践考查点。最后还通过一个贯穿整个课程的课程设计考查学生对于操作系统的综合理解能力及对于开发复杂系统的驾驭能力。学生每周在操作系统课堂授课的课后都要花8~10 小时在相关的编程及代码理解分析任务上,通过这一方法,实现了“全程紧张”。

以内存管理中的“页表”知识点为例,让学生在预备性实验中阅读xv6 源代码中关于二级页表的实现。xv6 对于进程页表有特殊的处理方式:每个进程的页表同时包括用户内存和内核内存的映射,这样当用户通过中断或者系统调用转入内核时就不需要进行页表的转换了,而操作系统内核没有自己的页表,一直都在借用用户的页表。要求学生通过源码分析,理解xv6 是如何实现用户内存和内核内存映射在同一个进程页表上的,同时要求学生通过代码理解,算出每个进程页表所支持的最大虚拟地址空间,以及为了载入操作系统内核,总共分配了多少个物理块用于保存对应的页表。

在“页表”知识点的理论传授中,教师会详细介绍在理论上,离散的段页式存储机制是如何实现的,如何把一个虚拟地址映射为对应的物理地址。学生经过了预备性实验的预习,能比较好地接受课堂上的理论传授,在课堂结束后,布置对应的验证性实验,要求学生深入xv6 源代码内部,通过在xv6 内存物理块分配源码中加入所分配的物理块统计信息,以及在合适的位置加入内核信息输出语句,把创建调度器进程所需要的内存空间对应的物理块数量输出到终端。

学生在“页表”这一知识点考查得分,将由预备性实验中的问题理解得分(占40%)和验证性实验中的编程得分(占60%)组成。通过这一方法,有效提升了学生的参与度和积极性,学生的反映良好。在教学测评中,学生普遍认为操作系统课程的收益很大,很好地锻炼了自己的编程能力,提升了自己的理论水平。

3 结 语

在深圳大学操作系统课程中,为了解决当前高等教育中存在的浅表化问题,对课程的教学内容及教学方法进行了针对性的优化设计,引入面向内涵式发展的建设思路。在此基础上,对操作系统课程的内涵与外延给出了自己的理解,并依托美国麻省理工大学(MIT)的xv6 教学操作系统,以其为实验开发沙盘系统,通过实验启发型的教学方式,制定了基于xv6 源代码分析及二次开发的教学内容,结合以“全程紧张”为指导思想的教学实践,取得了较好的效果,获得了选课学生的普遍好评,在深圳大学教学测评中,“操作系统”最高得分排名7.69%(排名前30%以上为优秀)。

猜你喜欢

内涵式源代码编程
抢抓机遇 乘势而上 推动新时代乐山市县党校内涵式发展
基于TXL的源代码插桩技术研究
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
浅析我国高等教育的发展阶段:“外延式”与“内涵式”
浅析综合类高校音乐艺术管理的“内涵式”发展
保护好自己的“源代码”
解密别克安全“源代码”