改良方案
1、整体规划
Windows Research Kernel为开发基于Windows的操作系统实验提供了强有力的支持,学生可以通过阅读、修改Windows内核源代码来加深对操作系统机制的了解。
我们计划利用一年的时间,基于WRK开发一系列实验和评估工具。应用到操作系统实验课程当中。整个项目计划耗时一年完成。分为三个阶段:
- 筹划设计阶段:大约用1个月时间
- 研发阶段:大约用9个月时间
- 集成验收阶段:大约用1个月时间
此外,留有1个月的机动时间。供查漏补缺。
设计的基本实验流程如下图所示:即首先,由教师完成实验设计、实验方案指导和实验材料,并且针对实验,编写相应的评测工具。教师首先要对WRK和实验进行深入了解。然后,学生可以基于这些材料进行实验。

计划基于WRK设计一系列实验,主要集中在Windows内核机制修改,Windows内核系统理解。并且针对实验,开发一系列的算法和效率评测工具。这样,可以借助评测工具,对学生对源代码的修改给出公平,平衡的考核。
设计的实验有如下几个:
实验一:系统调用实验
实验内容:该实验通过修改WRK的源代码,完成如下工作:
- 分析Windows系统调用过程,了解Windows的系统调用原理
- 为Windows增加一个系统调用。统计某个API的调用次数。
- 编写自己的应用程序,调用自己新增加的系统调用。查看结果是否正确。
- 进一步修改系统调用,获得操作系统执行的更多参数,例如物理内存的使用情况等等。
- 进阶研究:Windows系统调用与其它操作系统系统调用的比较优劣,形成比较评估报告。
评审方式:评估报告与代码各占50%。
实验二:页面调度算法实验
实验内容:在了解Windows页交换算法的基础上,修改Windows的页面交换算法,然后通过评测工具,评测修改算法的优劣。
- 分析Windows的页面调度算法,了解基本的数据结构、原理、相关的函数,借此了解Windows页面调度算法的原理;
- 修改Windows页面调度算法,从最简单的随机算法开始;
- 逐步尝试课程中介绍的几种经典算法;
- 使用评测工具评测页面交换算法的优劣。
- 进阶研究:Windows页面调度算法与其它操作系统系统调用的比较优劣,形成比较评估报告。
评审方式:修改算法的效率占60%,文档占40%。
实验三:线程调度实验
实验内容:尝试对Windows操作系统的线程调度进行分析,了解多任务调度和切换的原理。
- 分析源代码,了解调度的原理,包括:调度的时机,线程切换的步骤,上下文保存和恢复的机制,时间片等,形成一份报告文档。
- 修改WRK的源代码,例如修改时间片,修改调度的时机等,编写测试程序,查看对系统的影响和性能的影响。
- 讨论:Windows默认的时间片是否合理,对于服务器和桌面版本的操作系统,是否应该使用同样的时间片,哪个大一些比较好,为什么?
评审方式:报告占30%,讨论占30%,代码占40%。
实验四:虚拟内存模型实验
实验内容:32位的Windows为每个进程提供了4GB的虚拟地址空间。因此可以保证多任务之间不会发生进程之间数据互相访问问题。本实验尝试熟悉Windows虚拟内存模型,以更进一步了解Windows的原理。
- 阅读WRK的源代码,了解Windows 4GB虚拟地址空间的构成。了解X86硬件对虚拟地址空间的支持。
- 阅读WRK的源代码,了解非法内存访问的时候操作系统的处理过程。
- 修改WRK的源代码,把虚拟地址空间的布局进行修改,让不同的进程可以有一块共享的地址空间。并且所有的进程都可以对这段地址空间进行访问。
- 进阶研究:Windows虚拟内存模型与Windows CE,Linux等其它操作系统的虚拟地址空间模型的对比。给出对比报告。
评审方式:代码编写占50%,主要依据代码的清晰度,性能,合理程度,评测软件运行评分。报告占50%。
实验五:对象管理和同步实验
实验内容:Windows操作系统提供了Mutex,Semaphone,Event等多种多任务同步方式,本实验希望通过修改或增加API,增加一种内核同步和进程间交互的方式。
- 实现内核级别的消息队列(不通过Windows图形系统的窗口消息实现),抽象操作系统原理中的生产者消费者模型。
CloseMsgQueue--关闭消息队列
CreateMsgQueue--创建消息队列
GetMsgQueueInfo--查询消息队列的状态
OpenMsgQueue--打开消息队列
ReadMsgQueue--读取消息队列
WriteMsgQueue--写消息对列
要求:创建的时候指定消息队列的大小和名字。当消息队列为空的时候,读取导致线程阻塞;当消息队列为满的时候,写入导致线程阻塞。把消息队列实现为一个内核对象,可以跨进程访问,有名称。
- 评审方式:实现的功能占60%,通过评测软件评测的效率是否高效占40%的比重。
其它可选实验
- 多核实验:考察在Windows系统下多核环境下的跨处理器同步机制,跨处理器调度的优化。
- 物理内存管理算法:修改WRK的物理内存管理算法。
- 进程挂起和恢复:通过增加一个API,把一个进程中所有的资源挂起,保存到文件上,然后在需要的时候恢复该进程的执行。
|