多课程协作的操作系统教学改革实践

2014-09-11 03:46冯红伟赵一鸣
教育教学论坛 2014年13期
关键词:计算机系统内存方向

冯红伟,赵一鸣

(复旦大学 a.软件学院;b.软件学院,上海 200433)

多课程协作的操作系统教学改革实践

冯红伟a,赵一鸣b

(复旦大学 a.软件学院;b.软件学院,上海 200433)

针对软件工程专业不同方向学生对操作系统知识的需求,分析了操作系统教学和实践环节中存在的问题,阐述了多课程协作的操作系统教学改革和课程实践设计,教学实践表明取得了良好的教学效果。

操作系统;课程体系;实验设计

在传统的教学体系下,操作系统教学存在以下几个问题:一是缺乏高质量的实践环节支持,学生不能透彻理解操作系统的具体的实现机制;二是缺乏针对不同培养方向教学方案,系统方向需要的是和操作系统有关的所有底层硬件及内核实现的深入理解,而非系统方向需要知道如何利用操作系统机制来支持上层应用的开发;三是操作系统课程知识点过于集中在一门课当中,没有强调不同课程中有关知识点之间的联系和呼应。复旦大学软件学院一直尝试进行改革和探索,引进国外先进的教学理念和课程设计,在课程设置上不仅涵盖了计算机专业重要的知识点,更重要的是这些课程在内容上互相呼应、前后关联,帮助学生从低年级开始先树立整体的计算机系统概念,然后在后续的课程中不断深化某一方面知识的学习[1]。论文以操作系统的教学设计为例,来说明操作系统的知识点如何分布在多门课程中,并针对不同方向的学生有针对性地完成课程内容和课程实验设计,让系统方向和非系统方向的学生都获得相应操作系统知识,满足今后工作或深造的知识需求。

一、知识点的分布

软件学院引进了CMU和MIT知名高校的计算机课程,并且对这些课程进行了合理的改造。在操作系统课程方面,考虑到操作系统的教学和实验环节的难度,将操作系统的知识点合理分布到了不同课程中,组成有机的知识系列,前期的知识储备为学生完成操作系统实验打下了很好的基础。在课程体系设计中,和操作系统有关的课程包括从CMU引进的《计算机系统基础》,从MIT引进的《计算机系统工程》,从MIT引进的《操作系统》,以及参考CMU的《系统程序设计》。《计算机系统基础》的主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、异常控制流、网络编程、并发编程等。课程从程序运行的角度介绍了程序的内存布局、虚拟内存的管理,以及系统级IO编程方法等和操作系统有关的重要概念,通过该课程学生已经完全能够从概念上理解基于页面机制的虚拟内存的转换方法,以及程序的内存布局等知识。《计算机系统工程》深入而广泛地介绍了构造计算机系统的主要原理和概念,包括系统和复杂性,命名机制以及系统模块之间的引用和访问;从虚拟化的角度来讲解线程、内存以及进程间的通信;在性能设计方面讨论了CPU的调度、内存的替换策略、磁盘调度;讨论了系统容错的原理和方法,对实现原子性进行了讨论,说明了如何实现线程之间的一致性数据保护。通过该课程,学生建立了计算机系统的整体概念,同时也掌握了操作系统必要的调度、内存、文件系统等概念。系统方向的《操作系统》是完成操作系统教学的核心课程,该课程从理论上涵盖了所有操作系统的概念和实现机制。由于在前期的课程中虚拟内存、IO和进程的概念已经涉及过,在温习这些知识的基础上,主要讲解如何实现操作系统的细节,比如在x86架构下的段页内存管理机制,Linux的内存管理方式,虚拟内存管理,为学生的实践项目(project)中的进程控制开发提供支持。正是因为有了之前《计算机系统基础》和《计算机系统工程》的知识准备,学生才能在操作系统课程中完成高质量的实践项目[2]。非系统方向的操作系统课程是《系统程序设计》,将系统方向和非系统方向的学习内容有所区分,一方面保证系统方向的内容和MIT的实践项目保持一致,另一方面满足非系统方向学生的对操作系统的知识需求。《系统程序设计》课程是针对非系统方向学生开设的课程,该课程通过对UNIX系统的底层编程细节讨论来认识操作系统概念在UNIX系统中的具体实现。主要内容包括文件系统和IO的性能,缓冲区对IO性能的提升,进程的控制方法,过fork以及内存页面的优化策略,信号机制,多线程编程方法,高级IO的一些方法和终端设备IO进行了讨论。通过这些知识及补充材料,非系统专业学生可以掌握在开发上层应用时,如何利用操作系统提供的机制,通过实验设计了解UNIX操作系统的设计机理,提高应用程序性能。

二、实验设计

在《计算机系统基础》和《计算机系统工程》中关于虚拟内存、IO和CPU调度虽然没有编程的实验,但是通过手工计算、画结构图等帮助学生建立了知识的框架,为后续的课程打下了理论基础。引进国外大学的操作系统课程后,特别是实践部分和MIT同步之后,学生有机会通过完成操作系统中的主要模块来深入理解如何通过硬件的支持完成操作系统的功能。《操作系统》的实践项目将要完成一个基本的操作系统内核,整个项目被分成几个相对独立的部分,首先完成进程的创建,主要完成内核和用户进程空间的内存分配,进而在此基础上实现fork和exec系统调用,实现进程切换以及CPU调度,完成基本的文件系统。通过完成这个实践项目能够帮助学生彻底理解实现操作系统核心功能的软硬件机制[2]。《系统程序设计》课程的实验设计包括:(1)IO性能对比,了解不同的IO的方式在读写性能,了解操作系统中IO和文件系统上的实现策略对性能的影响。(2)信号机制:通过信号机制来控制进程。(3)并行程序设计,通过多线程和openMP实现并行程序设计;(4)实现一个能够支持流媒体服务器。(5)实现简单的Linux驱动。通过这些实验项目,非系统方向的学生能够掌握系统内核的实现方法,掌握操作系统对上层应用性能的影响和系统优化方法。

三、教学方法改革

除了课程体系的改进之外,软件学院在教学方法上也进行了改革,将不同课程中有关操作系统的知识点的有机的串联,在不同课程中进行合理的分工,既要避免重复又相互支持和呼应。在具体的知识讲解方面,各个课程都能根据课程分工抓住重点和难点进行透彻分析,而对于一般性

的问题只是将问题提出,让学生通过课后学习,通过作业等方式来检查学生的掌握情况。为了扩展学生的知识面,加深对书本上概念的理解,针对不同的知识点安排相应的课后阅读材料,并提交相应的作业或设计。在《计算机系统工程中》设计了一系列的课后阅读的论文,包括:《Worse Is Better》讨论了两种设计哲学的优劣,引导如何找到适合的设计方法;《Fast File System》对现有文件系统的各种缺点进行了改进和优化;《Map Reduce Google》帮助学生了解目前最重要的关于大数据处理的方案;《RAID》讲解关于RAID磁盘阵列的原理与简单的性能比较;《End To End control in network》讲解网络中端对端层的设计原理,并针对应用进行优化。在《操作系统》课程中则要求学生阅读x86 CPU的白皮书中细节,阅读《深入理解Linux内核》的对应章节了解Linux在x86架构上的实现方式。通过大量补充相关阅读材料,学生加深了对课程内容的理解。为了保证实践项目的顺利完成,各个课程都增加了教师助教和学生助教,帮助学生理解实践项目的目的、要求、知识需求等,并设计对应的开发和测试环境,保证了课程体系改革的成功。

通过引进国外的课程,并合理组织操作系统知识点在不同课程中的分布,改革教学方法加强学生的自我学习,针对不同方向的学生设计不同的实践项目,加强对学生的辅导,几年的实践证明,这样的教学设计有助于学生加深对操作系统概念的深入理解,学生能够完成世界一流大学的实践项目,使软件学院的操作系统教学接近国际水平,为培养国际化的合格人才做出了贡献。

[1]臧斌宇,朱东来.借鉴国际先进经验,加强计算机系统方向基础教学[J].计算机教育,2009,(16):147-150.

[2]冯红伟,王鹏.操作系统教学与实验设计研究[J].实验室研究与探索,2007,(2):251-253.

G642.0

A

1674-9324(2014)13-0037-02

冯红伟,男,讲师,研究方向为数据挖掘与分布式系统;赵一鸣,男,副教授,研究方向为信息安全与密码学。

猜你喜欢
计算机系统内存方向
2022年组稿方向
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
2021年组稿方向
2021年组稿方向
“春夏秋冬”的内存
IBM推出可与人类“辩论”的计算机系统
分布处理计算机系统研究
MIMD 并行计算机系统结构与定量分析
基于国产CPU的立方星星载计算机系统设计
基于内存的地理信息访问技术