那上操作系统实验课的目的是什么呢
最主要的目标是在我们操作系统原理
和操作系统设计实现上面建一座桥梁
能够辅助同学能够更好深刻理解
操作系统基本概念怎么产生的
怎么具体实现的 这是一个很重要目标
另一方面我们希望同学通过的操作系统实验
能够对操作系统设计有个全局的感觉 全局观
这一点也是很重要的一个特点
因为操作系统相对而言
在大学期间是同学能够碰到一个
相对比较大型比较复杂的软件系统
那么你怎么能够很好在一个全局的角度把握它
能够对它进行改进扩展分析理解等等
这对我们同学提供新的挑战
这也是一个能力的锻炼和培养
第三方面其实我们也知道操作系统
它的实现相对来说还是比较复杂的
并不是说我们每个同学
都需要去能够对它进行很深入的理解
然后能够对它进行改进扩展
甚至从头实现一个
其实提出了一个很高的要求
我们其实也知道同学一般会分三等
针对不同的同学我们其实应该有不同方法
所以说我们强调什么呢 差异化教学
那差异化教学体验在什么地方呢
对于高水平 中等水平和较弱水平的同学
我们分别有不同的要求
对于高水平的同学在他完成基本的操作系统实验情况下
我们希望他去做创新的实验
甚至挑战一些没有尝试过的一些东西
比如说举个例子
现在的ucore它没有去对多核处理器有支持
我们有没有同学可以挑战一下
实现一个对多核处理器支持的这么一个ucore操作系统
这是一个可以去尝试一个工作
第二个对于中等同学来说
我们最基本的要求是什么呢
就是能够完成我们布置的基本实验
你完成了基本实验 其实就基本说
能够把我们操作系统原理上面的一些知识点对应起来
在很大程度上体现了
我们操作系统原理课讲的知识点
那么你能够知道知识点怎么回事 具体实现怎么回事
通过这样的话就可以使得同学
对于操作系统理解会更加深刻
对于比较弱的同学 我们希望他能够理解代码
他也许编程还确实无法完成我们的实验
但是我们也提供了实验的答案
所以说通过理解这个代码
他能够知道原来操作系统
是这么来完成这么一个功能
比如说我们后面讲到的内存管理
文件系统进程调度等等 这些他能把代码读懂
能够运行起来 能够调试分析它
也可以很好地去把我们原理
和我们实验给对接起来
这是我们说对于相对来说比较弱的同学
他的要求 这也是对差异化教学的一种尝试
为此我们就要设计相应的操作系统实验
我们主要思路是基于一些大量的开源软件
来从各个层面来使的同学们更好掌握OS
首先你的实验环境是什么
就是我们这里面由于大量的工具是基于Linux
所以说我们希望同学能够在Linux环境中
来开展实验的过程 这是一个
第二个你需要去理解代码
理解代码有很多代码有这样的工具
比如说我们讲的Eclipse understand
这些工具都可以便于你去从一个细节
或者从一个全局的角度来看这个代码
还有就是生成一些自动文档
也是便于理解和分析的 比如Doxygen
你能够把你这个代码能够编译成
最后能够执行的机器码 你需要一些编译器
GCC Make 等等一系列辅助工作
来帮你来把你写代码变成最终的OS
一个可以执行的执行码
那你编好了OS之后你要运行
那运行在什么地方呢 我们有两种
一种是说我们可以跑在真实的机器里面
比如说我们这里面ucore针对是32个X86机器
我们可以用真的机器来跑
当然这相对来说比较麻烦一点
我们也可以基于模拟器比如说QEMU
它是一个软件 它可以模拟出一台X86的机器
这个上面去跑我们编写的OS
但是你在编写的过程中还可能出错
出错我们需要调试 我们有调试工具
比如说基于GDB和QEMU来进行调试
而且我们还可以基于集成开发环境
比如Eclipse的CDT来进行编辑
分析 运行 调试 整个这个环节的工作
更加简化 大家在完成实验中的难度
这是我们提供一系列工具
所有这些工具都在Linux里有很好的支持
也有同学尝试在Windows里跑 也有可能
配置的环境相对来说更加复杂一些
所以我们这里面鼓励大家基于Linux
来进行整个实验环境的建设
和最后的实验过程的完成
我们可以看看实验内容里面主要包含哪方面
跟我们操作系统课的知识点是对应的
我们一开始会讲到中断 外设
你这个操作系统针对的机器
针对一台计算机来进行管理和处理
那么这里面会涉及到相应的IO管理和中断管理
这是一块 这是跟外设相关的
第二块跟我们计算机内存相关
内存管理 它怎么有效管理内存
来放置我们的代码和我们的数据
第三个跟我们CPU相关
那怎么有效的利用CPU来完成相应的工作
需要分时 把这个CPU的时间
分给不同的程序去运行完成特定的工作
这也是我们操作系统很重要一个管理过程
还有就是涉及到当多个程序在一起跑的时候
它们有一些并发同步的一些管理
这个也需要我们操作系统来保证
才能使得整个程序正常工作
否则就会出现类似我们说的
后面我们会讲到死锁等等一系列问题
还有最后你这些数据 你这些代码需要永久存储
需要长期存储的环境 那这个环境是什么呢
我们说的这个 我们一般都知道有个硬盘 磁盘等等
但是操作系统为了能便于我们用户应用程序
放置它的数据和代码 我们设计了文件系统
从而更简单完成对操作系统管理
这些部分都是覆盖在我们8个实验中
我们会在实验过程中来体会讲到这些原理
具体在OS是怎么实现的
这是我们希望做到的
那为了减少这个代码量其实大家都知道
像比如说Linux Windows那是上千万行的代码
太大了 不要说学生了 就是一个资深的工程师
也很难把它全部掌握到
所以我们希望能够减少代码规模量
使得学生在有限时间内
比如一个学期能够去掌握和理解这个代码
我们理解是说大概控制在一万行代码量之内
从Lab1到Lab8 Lab1可能只有几百行代码
到Lab8大约控制在一万行代码以内
从而可以实现对OS的更深入的理解
同时我们提供的相应的讲义和文档来帮助同学
甚至我们答案也提供大家
可以更好的去理解和掌握实验是怎么完成的