各位同学 大家好
我是陈渝 清华大学计算机系的老师
我和向勇老师负责给大家上操作系统这门课
我主要负责操作系统实验这个环节
为了完成实验我们需要做一些准备工作
第一个要了解大致做哪些实验内容这是一个
第二个你要知道为了完成实验
你要搭好一个实验环境
所以说我们这两部分内容
分别给大家展开来做一个介绍
先看实验内容这块
实验内容包含了以下几个部分
第一部分是关于前言部分
我们了解一下为什么要上操作系统实验
对于操作系统课而言其实主要包含了两部分内容
一部分是操作系统原理 另一部分是操作系统实验
原理主要介绍了操作系统很多基本的概念 算法
基本的一些操作系统知识
操作系统实验主要是讲解怎么用我们C语言
或者在硬件环境或者模拟环境中
能把操作系统给实现出来
或者说能把操作系统改进完善
使它能够正常工作
这两者之间貌似差别比较大
但是其实相互之间起了一个很重要互补作用
为什么这么说呢 因为大家可以看一看
很多原理上一些内容 相对来说比较分散比较独立
但是这些分散独立的概念
其实都是我们操作系统实验中
重要的组成部分 这是一个
第二个这一组成部分是有一个紧密的联系的
而这个联系性只有通过做实验才能有更深入体会
这是我们觉得为什么要去
做操作系统实验的很重要的目标
第二个很多操作系统概念上
讲的一些基本的术语算法等等
那么它和我们具体的操作系统实现
什么样对应关系
它们之间有什么样的联系
这个也是通过上原理课做实验才能有更深刻的体会
所以我们认为操作系统课程它是一个科学
和工程相结合的一门课
需要通过原理的学习 通过实验的实践
才能更好更深入掌握操作系统基本的知识
这是我们认为为什么要上
操作系统实验的一个很重要的目标
另一方面我们强调了
因为操作系统都知道是一个软件
它需要去编程
那我们需要大家在实际编程中能深刻的体会到
操作系统到底是怎么完成它的功能
怎么来展现它具体的概念算法
我们认为操作系统实验需要强调这个实验环节
对于我们同学来完成这个实验需要注意几点
第一个是需要注意 你要理解整个系统
这个系统包含了软件硬件两方面知识
因为操作系统只要控制硬件
所以你要站在一个全局的角度来理解问题
第二个循序渐进完善功能
为什么这么说呢
因为我们知道操作系统虽然是一个大型软件
但是它也不是一天建成的
它也是一点点像搭积木一样 形成了从一小块
一个砖头两个砖头最后形成了一座房子
那么这个搭积木的过程我们希望同学能够掌握
知道怎么从零开始
能够完成出一个完整的小型的OS
这是我们希望同学能够去了解和掌握的
第三个要懂得阅读代码和能够去改进它
这点其实是我们做实验中有一个比较深入体会
为什么这样说呢
其实大家在完成后续的实验会发现
这个实验你花了很大一部分时间是在阅读代码
并不是在编程 而是在理解和阅读代码
只有很好的通过阅读代码把操作系统的框架
它的实验细节掌握之后
你再去完成老师给你布置那些实验内容
你会发觉还比较容易
所以你发现你完成代码量并不大
但是你为此要把这个代码读懂
花的时间是很多
特别是它和我们一般的应用程序是有很大的区别
它需要有很多跟我们硬件打交道
它的编写方式 它的处理方式
都和我们通常应用程序有很大区别 这是一方面
另一方面当你能够掌握这个基本OS功能之后
我们还可以对它进行扩展 做一些创新性实验
这也是很鼓励一些觉得自己能力还不错
你还需要进一步挑战
你可以去在这方面有充分余地去发挥你的能力
看看你能不能在这个操作系统之上完成新的功能
来增强操作系统能力
我们后面会跟大家做介绍
我们同学这方面做的工作
第二方面我们看看国外发展的情况
首先是MIT我们清华大学在操作系统教学改革上面
充分借鉴了MIT这些教学思路
他们很强调超系统课工程实践能力
所以他们设计了两个OS
一个叫XV6一个JOS希望同学能够阅读XV6
然后来改进完善JOS这么一个操作系统
这是他们的一个思路 哈佛也是一样有OS161
以及后面的哥伦比亚 伯克利 斯坦福等等
他们都有各自的操作系统实践的环节
强调学生在理解原理的同时
能够通过实验来加强对操作系统
一些具体细节的掌握和理解
从而对操作系统有个更全面和深入的体会
在国内也是一样 我们是基于国外的一些先进的一些经验
比如JOS XV6 OS16以及Linux
来设计一个小型的OS叫ucore
我们现在做的实验就是阅读ucore
然后对ucore进行改进和扩展
这是一方面 其他比方说像北大
国防科大等等 他们有不同思路
有的是基于一个小型的OS 比如说像北大
我们了解到他是基于MIT一些实验环节
像国防科大 浙大等等
他们更强调一些基于Linux来做相应的实现
相对而言Linux更加复杂功能更强大
掌握它花的代价相对要大一些
还有上海交大 南开 基于国外的
Minix Nachos等等 来做相关的实验
当然这些信息还有待进一步更新
我们是目前了解到一些情况
从中可以看出来国内的大学
特别是一些对操作系统这门课很重视的一些学校
他们还是把很多精力 除了放在原理课教学之上
也放在了这个实验环节 所以我们希望
同学们也可以看到通过实验 其实是有很好的
能够进一步掌握操作系统这么一个机会
其实除了一些教学OS之外 还有一些实际的OS
前面已经讲到有Linux
Solaris Windows Rtems eCos等等
这也是一些实际存在的一些OS
它们也是在某些学校和某些领域得到学习和掌握
其实没有什么特别区别
我觉得大家根据各自的特点
可以选择不同的OS来作为你们实验的目标
甚至还有同学说 一个OS都没有
我们从零开始来实现OS 这也是有可能的
我们看到有些挑战
就是有些愿意接受挑战的同学
他自身对计算机理解很充分的话
我们也不觉得不能够从零开始实现OS
据我们了解确实有这样的同学存在