APP下载

基于教学操作系统的课程设计分析与探讨

2021-01-28王亚李欢晁妍王先传

山东农业工程学院学报 2020年11期
关键词:C语言代码课程设计

王亚 ,李欢 ,晁妍 ,王先传

(1.阜阳师范大学计算机与信息工程学院,安徽 阜阳 236037;2.阜阳师范大学教务处,安徽 阜阳 236037)

操作系统课程教学普遍存在注重对理论基础知识和经典算法分析,学生缺少机会学习实例操作系统的内部结构和运行机制。而真正学好操作系统这些基础理论知识,最有效的学习途径就是动手实践操作系统的开发过程。操作系统实践课程具有较强的工程特征,教学过程中应注重实践环节,要求学生完成大量实验,以理解操作系统的运行机制。

根据教育部 《高等学校计算机科学与技术专业实践教学体系与规范》的要求,操作系统课程不仅要开设实验课程,而且要开设课程设计。操作系统实验教学是课程教学中薄弱的环节,缺少实例分析,学生动手实践的机会也很少,致使学生无法深入理解操作系统的运行机制,这种理论与实践脱节的现象严重影响操作系统教学效果[1-3]。综合国内外高校操作系统课程建设以及相关实验课程情况,本文将重点分析国内外高校使用的教学操作系统特点,以及在这些平台之上开设课程设计的情况。从中汲取成功经验,选择合适的教学操作系统,设计适合本校学生特点的课程设计内容,为推进本校的操作系统实践教学改革做指导。

1 教学操作系统的分类

以教学为目的教学操作系统不断涌现,国外有 Minix、XV6、GeekOS、Nachos、OS/161 等,国内有uCore、Tinix、MOS等。虽然设计方法和主要功能各有差别,但都有共同特点:以教学为目的、开源、开放和易扩展,所以能很好地满足操作系统实验教学需求。教学操作系统的运行要依赖于重要的硬件资源——处理器,根据处理器类型可分为两大类:一个基于复杂指令集CISC(Complex Instruction Set Computing)结构的X86(或Intel IA32)通用处理器的,另一是基于精简指令集RISC(Reduced Instruction Set Computing)结构的MIPS处理器的。

1.1 基于X86(或 Intel IA32)通用处理器

1.1.1 Minix

Minix(Mini-Unix)由荷兰阿姆斯特丹大学Andrew S.Tanenbaum 开发设计[4]。 具有微内核结构,包括系统启动、进程管理、存储管理、文件系统、设备驱动程序、网络和Shell等比较完整的内容。系统由一万多行代码组成,五千多行代码运行在内核模式下,其它代码运行在用户模式下。该系统已基本实现了操作系统的主要功能,适合学生练习的空间已很小。系统功能较完整,结构过于庞杂,用于集中式教学过程中,比较难以理解和掌握,特别对专业基础不是扎实的学生,更难掌握。所以国内选择该系统作为课程设计平台的高校都是一些知名重点高校,如:上海交大、南京大学、南开大学等。虽然设计的最初目的是为了教学,但是在实际的教学过程使用还是有些困难。

1.1.2 XV6

基于Unix系统的第6版用ANSI标准的C语言编写,在X86处理器上运行的微内核系统,所以命名为XV6。它是由麻省理工大学(MIT)为操作系统工程课程教学而设计的[5],XV6是一个供学生阅读的学习操作系统,除了XV6外还有一个供学生实验JOS微内核系统,避免了学生花太多的精力在底层设计,让学生集中精力在操作系统核心设计。国内外也有很多大学使用该系统,如:耶鲁大学(Yale University)、清华大学、北京大学、东北大学等。

1.1.3 GeekOS

由美国马里兰大学老师开发设计,其设计目标是在一个真实的X86硬件平台上实现简洁版操作系统[6]。虽然整个系统只设计了七个项目,但却覆盖了操作系统的核心内容,并且项目与项目之间难度逐渐递增,给学生提供一个循序渐进的学习环境。以该系统为学习内核的工具,学生动手参与到一个操作系统的开发中,更适合学生学习的需求。GeekOS基于C语言,可以在Linux环境下编程,对其功能进行扩充,也可以在Windows下使用Cygwin工具进行开发。该平台的使用对学生专业基础和能力的要求,相对较弱一些,所以国内选择使用该平台作为课程设计的高校,普通本科院校占据多数,如:桂林电子科技大学、山东科技大学等,当然也有少数重点高校使用,如西北工业大学等。

1.1.4 其他

(1)Linux

芬兰赫尔辛基大学 (Helsinki University)的Linus Torvalds,以Minix-386硬盘镜像为最初环境开发了Linux-0.01。它的源代码开放,经过众多优秀程序员共同开发完善,现在已经发展为功能强大的Linux操作系统。用于教学时一般选择低版本内核,但其内核用于教学还是过于庞大。目前有哥伦比亚大学(Columbia University)、国防科技大学、西安电子科技大学、杭州电子科技大学等大学使用该系统。

(2)uCore

清华大学计算机系陈渝团队为本科生而设计的教学操作系统[7],该系统基于 XV86、参考了麻省理工(MIT)的JOS、哈佛(Harvard University)的OS/161和Linux系统,采用C语言和X86汇编语言,以增量方式完成uCore OS的设计,代码在五千行以内非常适合教学为目的。

(3)Pintos

Pintos是Nachos系统的改版,由于Nachos依赖于MIPS汇编代码,不便于在X86硬件平台运行。斯坦福大学(Stanford University)用C语言编写了,可以运行在X86实际硬件平台上的Pintos[8]。目前国内高校有解放军理工大学、西安电子科技大学等在使用该系统。

1.2 基于MIPS处理器

1.2.1 Nachos

Nachos(Not Another Completely Heuristic Operating System)由Thomas Anderson设计,在美国加州大学伯克利分校 (University of California,Berkeley)发展起来操作系统课程设计平台[9]。 它是一个运行过程可以被跟踪的教学操作系统,作为一个用户进程运行在主操作系统之上,同时还需要运行在一个模拟MIPSR2/3000指令集虚拟机上。Nachos建立在软件模拟的虚拟机上,避免了编写复杂的硬件控制程序,用C++和JAVA语言中的类来表示各个机器模拟对象。与GeekOS相比,只能运行在MIPS处理器的模拟器上,若移植到实际硬件机器行,需要使用交叉编译器才能把代码编译成MIPS相应的机器代码。但是该系统存在和实际操作系统不相符合的设计,比如:内核设计不受内存容量限制,这样会对实际操作系统运行机制会造成误解。由C++对象设计与底层硬件隔离模拟器接口,学生无法了解真正硬件的工作过程。国内使用该系统的高校有山东大学、四川大学、北京大学等。

1.2.2 OS/161

由美国哈佛大学(Harvard University)设计,运行在与操作系统无关的System/161模拟器上[10]。它只包括一个便携系统的框架结构,与处理器和平台相关的代码分开维护,用C语言编写、GCC编译。系统提供了基本的核心功能,其它功能不包括在内,设计成任务由学生编程完成,给学生提供了充分的学习空间。与Nachos有很多相似之处,需要使用交叉编译器才能把代码编译成MIPS相应的机器代码。

2 基于部分教学操作系统开设的课程设计

由于基于CISC结构的X86或IA32处理器是最通用的处理器,下面重点介绍该结构下的几个教学操作系统的课程设计项目。

2.1 XV6

国外知名高校MIT开设了6.828:Operating System Engineering[11],在 XV6 和 JOS 的基础上开设了七个实验,课程设计内容如表1所示。

表1 MIT 6.828基于XV6课程设计项目

2.2 uCore

清华大学计算机系教师开发设计的uCore OS,2015年春季在专业IT在线实训平台 “实验楼”上开设了“操作系统实验-基于uCore OS”的实验课程[12],课程设计内容如表2所示。

2.3 GeekOS

该教学操作系统一般在普通本科院校中使用较广泛,以桂林电子科技大学为例,详细课程设计内容如表3所示。

表2 清华大学基于uCore OS的课程设计项目

表3 桂林电子科技大学基于GeekOS的课程设计项目

3 结束语

“纸上得来终觉浅,绝知此事要躬行”,在操作系统课程最有效的学习方法是动手实践。国内外高校也在操作系统实践教学上进行了坚持不懈的改革,逐步开发设计出以教学为目的教学操作系统。本文介绍了几种类型的教学操作系统,如何选择一种合适的教学操作系统作为操作系统课程设计的平台,是要解决的首要问题。良好的课程设计平台不需要规模庞大、功能非常完善的大型操作系统,而应该为开源与实际操作系统运行工作机制接近的微型操作系统。作为开源的教学操作系统其功能相对完善、代码应该短小精简、便于学习扩展。各学校可结合学生的专业基础和学习能力,设计不同层次的课程设计内容,以不断扩充学生知识面、提升动手实践能力。

猜你喜欢

C语言代码课程设计
基于Visual Studio Code的C语言程序设计实践教学探索
龙凤元素系列课程设计
中秋明月
51单片机C语言入门方法
创世代码
创世代码
创世代码
创世代码
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索