xr
readcou
treadcou
t1r
Vrmutexr
readtextr
Prmutexr
readcou
treadcou
t1r
ifreadcou
t0the
Vwmutexr
Vrmutexr
u
tilfalser
writerbegi
r
repeatr
Pwmutexr
writetextr
Vwmutexr
u
tilfalser
e
dr
pare
dr
e
dr
操作系统内核实验之读者写者实现收藏r
操作系统内核实验之读者写者实现r
r
第一部分:说明r
r
读者写者问题经典的线程同步问题的一个模型,于是我制作本文,希望对学习操作系统实现的有所帮助!更希望和广大编程爱好者交朋友!至于读者写者问题我在这也不详细的叙述了,既然您看到这个文档,我想你应该是理解了读者写者问题的了,所以我直接从代码入手,同时有简单的说明。如果你有什么地方看不懂,可以以以下的方式联系我:r
r
■■■,Email■■QQ■■■■MSN■■■■■■推荐r
r
我的主页:httpwww■r■comr
r
特别说明:本问文档的实现技术是:r
r
《wi
dows内核实验教程》机械工业出版社ISBN7111108809TP2600r
r
其中的版权也归原书所有!我希望见到本文档的人可以保证原书的版权!我只是对其中的部分进行了整理!r
r
特别提示:r
r
如果为了测试您对操作系统理论水平和设计,那么希望你先不要看本文档!自己独立的试着设计!r
r
r
第二部分:实现r
r
操作系统实验之读者写者实现代码说明文档r
r
r
r
r
读者写者的读写限制(包括读者优先和写者优先)r
r
1)写写互斥,即不能有两个写者同时进行写操作r
r
2)读写互斥,即不能同时有一个读者在读,同时却有一个写者在写r
r
3)读读允许,即可以有2个以上的读者同时读r
r
读者优先的限制:r
r
如果一个读者申请读操作时,已经有一个读者在读,则该读者可以直接读r
r
写者优先的限制:r
r
如果一个读者申请读操作时,有写者在等待访问共享资源时,则该读者要等到没有写者处于等的状态时才能开始读操作r
r
r
r
测试数据的格式r
r
在文件threaddat中,r
r
1r35r
r
2w45r
r
r
r
其中第一个代表线程的ID,第二个字段代表是读操作还是写操作,第三个字段代表操作的开始时间,第4个字段是持续时间。r
r
r
r
分析:r
r
r
r
将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写r