实践对于操作系统课程是至关重要的,但这种实践决不应该仅仅停留在某些算法的模拟实现上。就算在编程实现了一个完整的“文件系统”,但如果没有和磁盘驱动、高速缓存、内存管理等模块联系在一起,即使编写了大量的代码,也只是实现了某些概念(更象是一个数据结构课程设计),仍然不能控制可实际运行的操作系统。本实验指导书强调在可实际运行的操作系统上的实践。
因此本操作系统实验指导书上要求的实验以实际可运行的操作系统为基础,就选取实际操作系统。可供选择的操作系统有很多,如Windows、Linux、UNIX、VxWorks等,对于第一次学习操作系统的本科生来说,应该选取他们有过使用经验的操作系统为例,这样才能充分激发学生的学习兴趣(深入探秘身边的事物是人们都有的好奇心)。由于PC上Windows使用是非常广泛的,所以Windows是一个不错的选择。但另一方面,Windows关于内核的资料太少(属商业机密),虽然微软也开发了部分源码,但读懂这些源码并形成文档资料的人还很少。相比而言,Linux操作系统由于完全开源,资料非常多,被越来越多的人,尤其是大学生所使用,所以Linux是一个非常不错的选择。
在Linux上也有两种选择,一种是选择最新的Linux版本,另一种是选择一个简单的早期版本。新的成熟的Linux版本(如Linux 2.6.11)虽然非常成熟,但代码量也非常巨大,达到500多万行,代码也非常复杂,其上的改动、编译会非常困难、缓慢,不适合作为本科操作系统课程的实验课。所以考虑到第一次接触操作系统课程时所需要的简单性、参考资料应该容易获取、以及将来可进行进一步的挖掘,本指导书选取在Linux 0.11上进行操作系统的课程实验。Linux 0.11内核有不到2万行的代码,容易读懂,修改容易(在课堂上已有深入的分析),但Linux 0.11也是一个完整的、在应用和Linux没有太多区别的系统,其上的时间能使学生得到充分的锻炼,为理解操作系统、为自己编写操作系统奠定了坚实的基础。
本实验指导书要求学生在Linux 0.11基础上完成8个操作系统实验,并将这些实验的结果放在Bochs中执行,获得实验结果。
8个验证型实验包括:系统引导、系统调用、进程运行轨迹的跟踪、信号量实现和应用、Linux 0.11地址映射跟踪、终端显示的控制、实现一个类似现在Linux上的proc文件系统(通过访问proc文件来了解内核情况,如CPU类型、内存使用、进程情况等);在Linux 0.11上实现交换分区和全局页面置换策略。下表(表1-1)给出了更清晰的描述。
表1-1 本指导书要求的实验内容概述
编号 | 实验项目 | 实验内容 | 实验目的 |
---|---|---|---|
实验一 | 系统引导 | 编写bootsect.s和setup.s,实现一个简单的系统引导。 | 深入认识系统引导过程,掌握操作系统开发基本过程。 |
实验二 | 系统调用 | 添加一个系统调用whoami。 | 深入认识操作系统接口的工作原理。 |
实验三 | 进程运行轨迹的跟踪 | 编写程序跟踪进程的运行轨迹,主要是进程的状态切换过程。同时替换现有的Linux 0.11进程调度算法,并和现有的进程调度进行对比。 | 深入认识进程,能通过实际试验来评价操作系统性能。 |
实验四 | 信号量实现和应用 | 在Linux 0.11上实现信号量,并实践Multiprogramming。 | 体会并发进程,掌握进程同步(互斥)技术的实现。 |
实验五 | Linux 0.11地址映射跟踪与共享 | 打印Linux 0.11的地址映射过程到log文件中。 | 实践逻辑地址、线性地址、物理地址、段页表等概念。 |
实验六 | 控制终端显示 | 特殊按键修改系统状态,并控制显示(如按F1后总显示**)。 | 深入认识设备管理,掌握终端设备驱动的实现。 |
实验七 | proc文件系统的实现 | 在Linux 0.11上实现一个proc文件系统,动态察看内核。 | 体会虚拟文件系统概念,掌握文件系统的实现过程。 |
实验八 | 在Linux 0.11上实现交换分区和全局页面置换 | 在Linux 0.11上完整的虚拟内存,主要是实现全局的页面置换和交换分区设备的管理,并将这两个模块放入系统。 | 相比前面的实验而言,本实验较难。将全面加深进程、虚存、磁盘、中断的认识,对OS的系统性获得直接经验。 |
可以看出,本指导书要求的实验覆盖了进程管理、内存管理、设备管理、文件系统、系统引导和系统接口等操作系统的基本内容,认真地完成本指导书所要求的实验内容后,相信读者会对操作系统建立全新的、深入的、美妙的认识,也必将树立更强的信心,可以完成和操作系统有关的各种软件开发任务,甚至是设计一个新的操作系统。
本指导书给出的操作系统实验由8个实验组成,实验考核中,我们对这8个实验的成绩不做区别,每个实验的成绩是10分。实验成绩总分80分*5/8后变成50分计入最终考试成绩。
操作系统每个实验的成绩主要由学生所作的实践工作和取得的实验结果来定,同时辅以学生撰写的实验报告作为部分。因此实验成绩主要考核三方面的内容:
操作系统实验的考核标准表明:操作系统的实验非常注重操作系统基本概念的软件实现和工程设计方面的能力,而不注重操作系统上大量的算法和某些说理方面的东西。