操作系统实验设计

时间:2022-10-09 07:47:01

操作系统实验设计

摘 要:“操作系统”课程的理论性和实践性都很强,本文从北京航空航天大学操作系统课程设计出发,针对操作系统实验中存在的问题,通过分析、借鉴国内外著名大学的经验,以MIT操作系统实验为基础设计了一套以MIPS为硬件平台的操作系统实验,并在北航选取了一些学生进行应用。

关键词:操作系统;实验设计;教学实践

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

“操作系统”课程内容丰富,既要讲授关于操作系统的基础理论,又要让学生了解实际操作系统的设计与实现。操作系统实验设计正是该课程实践环节的集中表现,不仅使学生巩固理论学习的概念和原理,同时培养学生 的工程实践能力。国内很多大学都非常重视操作系统实验设计,北京大学根据MIT课程,建立了自己的操作系统实验体系;清华大学专门设置了操作系统专题训练课程,以提高学生的工程实践能力;南开大学提倡使用系统仿真的实验环境加强学生理论联系实际的能力;浙江大学提出了“边学边干”的操作系统教学理念。

北京航空航天大学计算机学院在2006年将“操作系统”课程分成了两门课程:一门讲授“操作系统”原理,一门“操作系统课程设计”专门进行操作系统实验。本文将以MIT的操作系统课程设计为基础,介绍在操作系统课程设计中,让学生自主开发一个小型教学操作系统。由于开发一个实际的操作系统难度和工作量很多,为了保证教学效果,我们首先为学生提供一个基础系统,该系统实现操作系统中最基本的部分。在此基础上,学生可以再进一步扩充,实现一个完整的操作系统。将来可以与硬件课程进一步集成,将教学操作系统移植到学生自己开发的硬件平台中。我们试图通过操作系统作为纽带,将计算机硬件与软件结合起来,培养学生对计算机系统的整体认识。

1 目前存在的问题

在前几年的教学实践中,我们尝试过Nachos、Minix、Linux和Windows四种不同类型的实验,目前保留了Linux和Windows两组实验。每类实验包含4组实验,每个(组)同学选做一类实验,并完成该类中全部4组实验。Linux实验包括“Yalnix Shell”、“虚拟存储”、“作业控制系统”、“文件系统操作”或“模拟文件系统”(后面两个实验选做一个)。Windows2000/XP实验包括“生产者消费者问题”、“Windows虚拟存储器管理”、“NDIS协议驱动程序的分析与改进”、“虚拟磁盘的文件系统驱动程序设计”。

这两组实验与主流操作系统结合紧密,极大地提高了学生的专业技能。虽然这些实验已经在国内一流院校中广泛使用,但是仔细分析我们可以发现,这些实验大部分还是停留在系统编程的水平。因此为提高操作系统教学水平,我们必须向国外研究型大学看齐,改进操作系统的课程设计。

2 国外主要研究性大学操作系统实验

我们选择了四所大学的操作系统实验情况进行重点介绍。

Brown University

 课程名称cs167/cs169 operating system Fall 2006

 cs167课程介绍操作系统的基本原理

 cs169课程:学生每人用 C编写一个简单的、单内核操作系统。所写的操作系统在技术上等价现代的操作系统

 实习项目:Kernel 1,Kernel 2,虚拟文件系统,文件系统,虚拟存储

 基础系统:Weenix

Princeton University

 课程名称:Operating Systems Fall 2006

 实习项目:项目1:引导机制;项目2:非抢占式调度;项目3:抢占式调度;项目4:进程间通信与进程调度;项目5:虚存;项目6:文件系统

University of California at Berkeley

 课程名称:Operating Systems and System Programming Spring 2006

 实习项目:工程为仿真MIPS平台构造操作系统有4个工程。工程1:线程管理;工程2:多道程序设计;工程3:高速缓存和虚拟存储;工程4:网络和分布式系统

Harvard University

 课程名称:CS161: Operating Systems Spring 2006

 实习项目:工程0:熟悉OS/161以及其运行环境System/161;工程1: 同步;工程2:系统调用和进程;工程3:虚拟内存;工程4:文件系统

MIT

 课程名称:6.828: Operating System Engineering - Fall 2003 (for graduate student)

 实习项目:工程1:启动装载过程;工程2:内存管理;工程3:进程和上下文切换;工程4:Fork和进程间通信;工程5:简单的文件系统;工程6:编写一个Shell

从上面的分析可以看出,这几所大学操作系统实验内容丰富、难度大。这些大学都有同一个理念:要想学好操作系统,最好的办法就是自己编写一个操作系统。因此,我们希望借鉴这些大学的实验内容,提高北航操作系统实验难度。

3 操作系统实验改进思路

随着学校对课程建设的重视,很多课程,例如“程序设计”、“编译原理”等课程的实验有了很大改善,学生的动手能力也得到了进一步提高。在此基础上,我们已经具备了尝试难度更高的操作系统课程设计的条件。因此,在操作系统课程设计上,可以让学生自主开发一个实际的小操作系统。

由于开发一个实际的操作系统难度和工作量很多,为了保证教学效果,我们准备采取循序渐进的、分层设计的方式,首先为学生提供一个基础系统,该系统实现操作系统中最重要、最基本的部分。在此基础上,学生可以再进一步扩充,实现一个完整的操作系统。这种新的实验模式在保证教学效果的基础上,有利于充分发挥学生创新潜能。

4 实验设计

4.1 实验内容

我们调研了MIT、CMU等几所著名高校的课程设计,决定以MIT的课程设计为基础,在操作系统课程设计上,让学生自主开发一个实际的小操作系统。实验包含6个部分,各个部分的相互关系如图1所示,具体实验内容如下。

(1) 启动和系统初始化:通过PC启动的实验,掌握硬件的启动过程,理解链接地址、加载地址和重定位的概念,学习如何编写位置无关代码;通过实现setjmp和longjmp两个函数,掌握GCC的调用规范和硬件堆栈结构。

(2) 内存管理实验:理解虚拟内存和物理内存的管理,实现操作系统对虚拟内存空间的管理。

(3) 进程管理:通过设置进程控制块和编写进程创建、进程中止和进程调度程序,实现进程管理;编写通用中断分派程序和时钟中断例程,实现中断管理。

(4) 系统调用:掌握系统调用的实现方法,理解系统调用的处理流程,实现本实验所需的系统调用。

(5) 文件系统:通过实现一个简单的基于磁盘的微内核方式的文件系统,掌握文件系统的实现方法和层次结构。

(6) 命令解释程序:实现具有管道,重定向功能的shell,能够执行一些简单的命令。最后通过调试将六部分链接起来,使之成为一个能够运转的操作系统。

4.2 实验环境

选择一个完整硬件仿真环境。我们准备根据当前流行的主流硬件,选择开放源代码项目bochs和GXemul作为仿真环境。另外建立一个完善的实验环境,将操作系统实验用到的各种软件安装在一个服务器上,为每个学生建立一个独立的帐户,学生可以在任意机器上远程登录到我们的服务器,完成实验任务。

另外,操作系统的实验需要与硬件课程实验和编译实验进一步集成,学生可以将教学操作系统移植到学生自己开发的硬件平台,并且运行学生自己开发的编译器所编译的程序。图2描述了操作系统实验各个部分与硬件的关系(该硬件环境详见参考文献)。图3描述了操作系统实验与编译实验和硬件实验的关系。

4.3 目前已完成工作

目前已完成的工作:

(1) 建立了一个以GXemul为基础的仿真环境,可以运行操作系统,并实现操作系统的调试。

(2) 建立了一个以GCC为基础的MIPS交叉编译环境,可以用于编译操作系统以及其他应用程序。

(3) 六个实验已经可以在仿真器上运行(见图4)。

5 经验总结与下一步工作

2006年,我选了一个学生以这个操作系统实验作为毕业设计题目,硬件平台为x86,他当时完成了4个实验。2007年在计算机学院组织下我们选了6名学生将该实验在一学期内移植到了MIPS仿真平台。通过这些实践,我们发现对于本科生这些实验难度还是太大,很难完成6个实验。因此,我们下一步需要采取循序渐进、分层设计的方式,进一步简化实验,多给学生提供一些示例代码,编写详细的实验文档和实验指导手册。

参考文献:

[1] 陈向群. 操作系统实习教学经验[R]. 全国第八届操作系统课程教学研讨会,2005.

[2] 史广顺,韩维桓,袁晓洁. 南开大学“操作系统”课程建设的思考[J]. 计算机教育,2006(7).

[3] 宋广华,李善平,郑扣根. 边学边干:操作系统课程教学改革的探索与实践[J]. 计算机教育,2006(7).

上一篇:“VB多媒体应用开发技术”课程的教学改革与实... 下一篇:“编译技术”实践环节的质量管理体系及实践