- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 说明: 局部于管程内部的数据结构,仅能被局部于管程内部的过程所访问,任何管程外的过程都不能访问它; 反之,局部于管程内部的过程也仅能访问管程内的数据结构。 由此可见,管程相当于围墙,它把共享变量和对它进行操作的若干过程围了起来,所有进程要访问临界资源时,都必须经过管程(相当于通过围墙的门)才能进入,而管程每次只准许一个进程进入管程,从而实现了进程互斥。 Heb Nomal University Department of Computer Science * 第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信 2.7 线程 * 2.4.3 读者-写者问题 1. 利用记录型信号量解决读者-写者问题 读者写者问题 问题描述 有两组并发进程: 读者和写者,共享一组数据区。 要求: 允许多个读者同时可执行读操作 不允许读者、写者同时操作 不允许多个写者同时操作 * 问题分析 第一类:读者优先 无读者、写者,新读者可以读 有写者等,但有其它读者正在读,则新读者也可以读 有写者写,新读者等 最后一个读者完成访问后,发现写者在等,则唤醒其中一个写着。 写者完成访问后,发现有等待者,按照FIFO或者其它原则唤醒写着或者所有读 第二类:写者优先 多个读者可以同时进行读 写者必须互斥,即只允许一个写者写,也不能 读者写者同时进行,写者优先于读者,即一旦有写者,则后续读者必须等待,唤醒时优先考虑写者 * 变量: Readcount用来表示正在读的进程数目。 信号量: rmutex用来保证读者之间互斥地修改readcount。 wmutex是读者和写者公用的互斥变量,用来互斥读写同时进行 rmutex、wmutex初值为1,readcount初值为0 第一类读者写者问题——读优先 * 读者-写者问题可描述如下: Var rmutex, wmutex:semaphore∶ =1 , 1; Readcount:integer∶ =0; begin parbegin Reader:begin //读者 repeat wait(rmutex); if readcount=0 then wait(wmutex); Readcount∶ =Readcount+1; signal(rmutex); … perform read operation; … wait(rmutex); readcount∶ =readcount-1; if readcount=0 then signal(wmutex); signal(rmutex); until false; end writer:begin //写者 repeat wait(wmutex); perform write operation; signal(wmutex); until false; end parend end * Reader() { While(1) { P(s); P(rmutex); If (count==0) P(wmutex); /*当第1个读者读文件时,阻止写者写*/ count++ V(rmutex); V(s); 读文件; P(rmutex); count--; } If (count==0) V(wmutex); /*当最后1个读者读完文件时,允许写者写*/ V(rmutex); } writer() { While(1) { P(s); P(wmutex); 写文件; V(wmutex); V(s); } } 第二类读者写者问题——写优先 设3个信号量: rmutex --- 读互斥信号量,初值为1; wmutex --- 写互斥信号量,初值为1; s --- 用于在写进程到达后封锁后续的读者,初值为1; count --- 共享变量,用于记录当
您可能关注的文档
- 第二节理想均相反应器计算.ppt
- 高中理科数学解题方法篇(思想方法).ppt
- 模电教学第七章+信号产生电路.ppt
- 新诗欣赏与诗歌疗法福清分校.ppt
- 2011年高考语文科考试整体评价 .ppt
- 波浪理论操作系统实战法.ppt
- 第20章+解热镇痛抗炎药+(2).ppt
- 第五章_所有者权益变动表及报表附注的分析.ppt
- 第五章课程的层次与类型.ppt
- 机械的平衡(包括转子平衡).ppt
- 新视野二版听说1第6单元示范1课件.ppt
- 【参考答案】 联络口译(第二版) 《联络口译》(第二版)参考答案.pdf
- 梅大高速茶阳路段“5·1”塌方灾害调查评估报告.docx
- 虹吸雨水PE管施工节点标准做法.pdf
- 2025消防设施施工质量常见通病防治手册,典型图示+规范要求.pptx
- 新视野大学英语(第二版)读写教程 4 空军工程大学编U05B.ppt
- E英语教程2(智慧版)Unit 6.pptx
- E英语教程3(智慧版)Unit 7.ppt
- 新视野二版读写1第4单元课件Section A How to Make a Good Impression.pptx
- E英语视听说教程4(智慧版)4-U2课件(2024版)U2.pptx
文档评论(0)