收藏 分销(赏)

操作系统大作业读者和写者的问题.docx

上传人:仙人****88 文档编号:9313546 上传时间:2025-03-21 格式:DOCX 页数:8 大小:116.28KB 下载积分:10 金币
下载 相关 举报
操作系统大作业读者和写者的问题.docx_第1页
第1页 / 共8页
操作系统大作业读者和写者的问题.docx_第2页
第2页 / 共8页


点击查看更多>>
资源描述
江苏大学操作系统大作业 ——读者和写者的问题 姓名: 秦友才 班级: 计算机1502 学号: 3140602055 操作系统大作业:读者和写者的问题 一、 问题的提出 一个数据对象被若干个并发进程所共享,且其中一些进程只要求读该数据对象的内容,而另一些进程则要求写操作。即一个是写者一个是读者。写者任意时刻只能有一个,而读者则允许有多个,多个读者之间不会干扰,而写者就不能同时运行。所以对共享资源的读写的限制条件是: 1) 允许多个读者可以同时对文件执行读操作; 2) 只允许一个写者往文件中写信息; 3) 任一写者在完成写操作之前不允许其他读者或写者工作; 使用信号量来处理读者和写者的问题。有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。 二、 问题的分析 设计优先策略满足: 1. 读者优先,即当读者进行读的时候,后续的写者必须等待。直到所有的读者都读完后写者才可以去进行写操作。 2. 写者优先,即当一个写者到来的时候,只有在写者之前的读者才会执行,写者之后的都之后将会被阻塞。 3. 公平策略。满足规则,在读序列中,如果有写者在等待,不允许新来的读者执行,在写者结束时,所有的都读者都有比写者更高的优先级。 通过信号量的操作控制顺序,下面对前两种策略进行分析。 三、 解决算法 读者优先,只要有读者经行都读操作,则写者一直等待。如果有新的读者到来,写者依然要等待。一直等待读者全部完成,才会去执行写者。教科书上给出的例子就是读者优先的。 如果新读者到:①无读者、写者,新读者可以读;②有写者等待,但有其它读者正在读,则新读者也可以读;③有写者写,新读者等待。如果新写者到:①无读者,新写者可以写;②有读者,新写者等待;③有其它写者,新写者等待。 只要解决写者和写者,第一个读者和写者的互斥问题。引入一个信号量Wmutex,来解决这个互斥,通过Rcount来记录当前正在读文件的读者个数,只要读者个数不为零,写者就没有权利写。通过一个Rmutex来解决修改Rcount时候读者和读者的问题。 Semaphore wmutex,rmutex=1; Int rcount=0 Void reader() { P(rmutex); If(rconut==0) P(wmutex); Rcount++; V(rmutex); //读数据 P(rmutex); Rcount-- If(rconut==0) V(wmutex); V(rmutex); } Void Write() { P(wmutex); DoWriting(); V(wmutex); } 写者优先,读者优先对于写者来书实在是太苛刻了,如果有读者就不能写。采用写者优先在一个写者到达时如果有正在工作的读者,那么该写者只要等待正在工作的读者完成,而不必等候其后面到来的读者就可以进行写操作。注意,该算法当一个写者在等待时,后到达的读者是在写者之后被挂起,而不是立即允许进入。为了解决以上问题,写者优先的设计思想是在一个写者到达时如果有正在工作的读者,那么该写者只要等待正在工作的读者完成,而不必等候其后面到来的读者就可以进行写操作。注意,该算法当一个写者在等待时,后到达的读者是在写者之后被挂起,而不是立即允许进入。 在读者优先的算法的基础上增加了一个排队信号量read,读、写进程在每次操作前都要等待read信号量。写者优先的程序设计如下: int Rcount=0; semaphore rmutex=1; semaphore write=1; semaphore add_reader=1; void reader() { P(add_reader); P(rmutex); Rcount++; if Rcoun=1 P(write); V(rc_mutex); V(add_reader); //读操作 P(Rmutex); Rcount--; if Rcount=0 V(write); V (Rmutex); } void writer() { P(add_reader); P(Rmutex); P(write); //写操作 V(write); V(add_reader); } 四、 流程分析 读者优先 写者优先 五、 分析和总结 刚接到这个题目的时候很茫然,不知道该做什么。在脱了很久之后终于面临要收作业的事实后,我到网上找了很多相关的东西,参考了很多blog,了解了一些,于是写了这些。 读者和写者问题是操作系统中互斥同步的经典问题,在真实的计算机运行过程中也经常会发生这样的问题,如何有效的、代价最小的解决冲突实现互斥同步是非常重要的事情。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服