实验二 同步
一、概述本实验要求你用信号灯来实现读者-写者问题。你并不需要实现信号灯,但最好读懂有关信号灯的代码。另外,给出了调度器程序,且已设好了调度策略,你不可改变它。
你所要做的第一步就是弄懂Nachos线程系统、调度器和同步原语(信号灯)的工作原理,在编写代码之前,仔细阅读本实验的源代码以及本文档。你最好花些时间来设计好你的解决方案,这样可以节省你的调试时间。
二、开始
(1) 阅读有关实验材料。
仔细阅读本实验说明,并到站点:
http://os.cs.tsinghua.edu.cn/
阅读关于Nachos更为详细的说明,如论文“A Road Map through Nachos”等。
(2) 取得源代码并阅读。
cp /export/home/student/os/mysoft/mp2/mp2.tar.gz,
gunzip mp2.tar.gz
tar –xvf mp2.tar
(3) 编译源代码
cd mp2/threads
gmake depend
gmake
(4) 运行一简单测试
cp nachos test0
,/test0
三、问题在这一部分,需要修改文件synch.h和synch.cc来实现两组读者-写者问题。你需要实现的函数是Reader::read(int num)和Writer::write(int num),其中,变量num是读者要读的页数或写者要写的页数。这仅仅是读写行为的一个模拟。
注意,要求用信号灯原语来实现第一个读者-写者问题,并用test2来测试。
四、提交结果实验分组进行,每两个人一组。电子文档部分请用WinZip压缩后由各班课代表在截止时间交教师(Mailto,xyong@tsinghua.edu.cn)。
实验报告(包括书面报告和电子文档);
源代码中修改过的文件;