变形的读者-写者进程同步问题

变形的读者-写者进程同步问题

ID:34255192

大小:65.93 KB

页数:8页

时间:2019-03-04

变形的读者-写者进程同步问题_第1页
变形的读者-写者进程同步问题_第2页
变形的读者-写者进程同步问题_第3页
变形的读者-写者进程同步问题_第4页
变形的读者-写者进程同步问题_第5页
资源描述:

《变形的读者-写者进程同步问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、变形的读者•写者进程同步问题第24卷第17期2008年9月甘肃科技GansuScienceandTechnolo*2_24See.IVo.172oo8变形的读者一写者进程同步问题李广军,荆天(1•商丘师范学院计算机科学系,河南商丘476000;2.商丘师范学院数学系,河南商丘476000)摘要:读者一写者问题是操作系统中经典进程同步问题之一,在传统解决读者写者问题方案的基础上,给出了两种变形读者写者问题的解决方案和算法.关键词:进程;互斥;信号量中图分类号:TP139利用记录型信号量机制來实现读者与写者的同步问题,一直是操作系统中讨论的经典进程同步热点问题

2、,而且由它引岀的一系列变异问题,如:不同类型的读者,不同类型的写者等问题也都是很典型的进程同步问题.这类题型变化多,实例多,又与实际生活中的问题有着紧密联系•本文利用记录型信号量机制,对两种变形读者一写者问题进行了分析,同时给出了具体的解决方案和算法.1传统读者一写者问题及解决方案1」传统问题内容某共享文件,多个读者(只读文件进程)和多个写者(只写文件进程)在某个时间段内对该文件资源异步进行读写•为避免文件数据岀现丢失修改和读脏数据的情况,对读者写者要求如下:(1)读一读共享,即允许多个读者同时对文件进行读操作.⑵读一写互斥,即不允许读者和写者同吋对文件分

3、别进行读写操作.(3)写一写互斥,即不允许多个写者同时对文件进行写操作.1.2传统解决方案解决方案和具体算法的内容,请参考汤子瀛西安电子科技大学出版社的计算机操作系统(修订版)P49的描述.2两种变形的读者一写者问题2.1两组不同类型写者的读者一写者问题问题内容:两组不同类型的多个写者共享一个文件,要求写与写是互斥即无论是否为同一组都不能同时写操作共享文件.但如果某组中有一写者正在对文件操作时,该的后续写具有比另外一组的后续写者优先操作权.解决方案:在写者优先的读者一写者问题的方案的基础上,为两组读者分别引入整型量writerlcount和writer2c

4、ount,^记录各组当前正在运行的写者进程数量.同吋要注意的是Writerlcount和Writer2count是两个临界资源所以在这里还要分别引人新的互斥信号量Wclmutext和Wc2mutext.算法描述:VarRmutex.We1mutext,Wc2mutextJdmutex,Enmutex:semaphore:=1丄1丄1;Readercount,writerlcount,Wfiter2count:integer:=0,0,0;Reader(读者进程)beginrepeatwait(Enmutex);wait(Idmutex);wait(Rmut

5、ex);ifReadercount:Othenwait(Wmutex);Readercount:=Readercount+1;signal(Rmutex);signal(Idmutex);signal(Enmutex);performreadoperation;wait(Rmutex);Readercount:Readercount—1;ifReadercount=Othensignal(Wmutex);signal(Rmutex);甘肃科技第24卷untilfalse;endwriterl(第一组写者进程)beginrepeatwait(Wclmutex

6、)ifwriterlcount=Othenwait(Idmutex);/$^否为该组的第一写者/writer!count:=writerlcount+1:signal(Wclmutex);wait(Wmutex);performwriteoperation;signal(Wmutex);wait(Wclmutex)writerlcount:writerlcount-1;ifwriterlcount=Othensignal(Idmutex);/^<是否为该组的最后一写者/signal(Welmutex);untilfalse;endwriter2(第二组写者

7、进程)beginrepeatwait(Wc2mutex)ifwriter2count=0thenwait(Idmutex);/M否为该组的第一写者/writer2count:=writer2count+1:signal(Wc2mutex);wait(Wmutex);performwriteoperation;signal(Wmutex);wait(Wc2mutex)writer2count:=writer2eount~1:ifwriter2count=0thensignal(Idmutex);/,lc是否为该组的最后一写者/signal(Wc2mutex)

8、;untilfalse;end2.2两组不同类型读者的读者一写者问

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。