操作系统是计算机专业的一门核心专业课程,具有较强的实验性。由于概念多、涉及面广等因素,往往难以很好地理解和掌握,国内外在操作系统实践教学方面所做了大量研究。本文通过构造一个虚拟操作系统运行环境,试图为学习、设计和研究操作系统提供一个简单、易用的平台,为操作系统的教学工作打下了良好基础。
计算机操作系统课的教学一直在计算机学科的教学计划中占据重要地位[1] [2]。
在教学中存在主要问题课程内容枯燥难懂,造成学生对课程学习缺乏兴趣, 最后以死记硬背应付了事。理论与实际脱节、缺少实例分析,实践性环节薄弱[3]。目前国内外学者开发了许多教学用操作系统,MINIX [4]是荷兰A.S.Tanenbaum 教授所发展的一个类Unix 操作系统,包括了进程管理、文件系统管理、存储管理、设备管理以及I/O 管理等操作系统的所有重要内容,以及系统启动和Shell 等实际操作系统不可缺少的部分。
但是MINIX 作为教学用操作系统有它的不足之处, 移植性并不令人满意。
GeekOS [5] [6]是一个基于X86架构的PC 上运行的微操作系统内核,提供了操作系统与硬件之间的所有必备接口,实现了系统引导, 实模式到保护模式的转换, 中断调用及异常处理,基于段式的内存管理, FIFO 进程调度算法以及内核进程, 基本的输入输出,以及一个用于存放用户程序的只读文件系统PFAT。OSP 2 系统[7] [8]的核心是一个模拟器,它使用动态演化的、多程序运行的用户进程集来虚拟计算机系统。由一系列的模块组成,每一模块执行一项操作系统服务。可以按照希望的顺序来组织项目,以便与课堂讲义的内容保持同步。Nachos系统[9]是加州大学伯克莱分校在操作系统课程中已多次使用的操作系统课程设计平台,采用面向对象的通用虚拟机,确定性调试比较方便,简单而易于扩展。但是Nachos 是针对RISC 结构MIPS 处理器,使用其它开发环境的话,需要使用交叉编译器才能把代码编译成MIPS 相应的机器代码。Bochs 系统[10]由凯文•劳顿编写的,使用c++编写的开源IA-32(x86)电脑模拟器,它仿真英特尔x86 CPU、常见的I/O 设备、和定制的BIOS。MOS 系统[11] MOS 操作系统是上海交通大学开发的,主要包括作业调度管理和文件系统管理,建立在一个只包含十几条指令的指令集虚拟机基础之上。MOS 的不足是过于简单,不能涵盖操作系统的大部分功能。MOS 的虚拟机指令集是自定义的,没有现成的编译器,所以读者必须直接编写汇编程序才能在MOS 虚拟机上运行。
综上所述,作者认为为了使计算机科学与技术及相关相关专业学生学习理解操作系统的诸多概念, 直观地看到进程在执行过程中,资源申请中可能出现的死锁,以及同步、互斥等重要问题的解决过程, 有必要研究设计一个对于初学者来说使用更加简单和方便的辅助教学平台。
2. 辅助平台结构设计 作者设计开发的辅助学习系统,包括三个方面的功能:一是模拟操作系统实现过程;二是提交自己的作业到服务器,服务器内核在执行完学生的程序后将结果反馈给学生;三是师生交流论坛,为学生学