- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程Pa的私用信号量Buffull
发送和接送过程满足的条件是: 1)在Pa至少送一块数据入一个缓冲区之前,Pb不可能从缓冲区中取出数据 2)Pa往缓冲队列发送数据时,至少有一个缓冲区是空的; 3)由Pa发送的数据块在缓冲队列中按先进先出(FIFO)方式排列. 描述发送过程deposit (data)和接受过程remove (data) . 2 生产者-消费者的同步问题(The Proceducer-Consumer Problem) 举例: ? ? ? 生产者把产品生产出来,送入仓库。给 消费者发信号,消费者得到信号后,到仓库 取产品,取走产品后给生产者发信号…… 生产者-消费者问题是相互合作进程关系的一种抽象 输入——计算——打印 生产者 消费者 生产者 消费者 系统中使用资源的进程——消费者 系统中释放资源同类资源的进程——生产者 1 想接收数据时,有界缓冲区中至少有一个单元是满的 2 生产者想发送数据时,有界缓冲区中至少有一个单元是空的 同步问题 由于缓冲区是临界资源,所以生产者和消费者之间必须互斥的访问临界资源 用信号量解题的关键 步骤:? 信号量的设置;? 给信号量赋初值(常用的互斥和同步信号量值的大小);? P、V操作安排的位置(其中,P的顺序不能颠倒,V的顺序任意) 设:公用信号量 mutex 表示缓冲区的个数 初值为1 (消费者)私用信号量 full 表示有界缓冲区中非空单元数 初值为0 (生产者)私用信号量 avail 表示有界缓冲区中空的单元数 初值为n deposit(data): begin P(avail) 检查缓冲区中是否有空单元 执行后n-1 P(mutex) 检查缓冲区是否可用 执行后 mutex=0 送数据入缓冲区 V(full) 执行后,非空单元数加1 0+1=1 V(mutex) 释放缓冲区中的资源 end deposit(data): begin P(avail) P(mutex) 送数据入缓冲区 V(full) V(mutex) end Remove(data): begin P(full) P(mutex) 取缓冲区中某单元数据 V(avail) V(mutex) end 几个经典的进程同步问题 生产者—消费者问题 哲学家进餐问题 读者—写者问题 图书馆阅览室问题 理发师问题 吃水果问题 司机—售票员问题 过河问题 生产者—消费者问题 一个最著名的进程同步问题 问题描述:一组生产者向一组消费者提供消息,它们共享一个有界缓冲池,生产者存入消息,消费者从中取得消息。 哲学家进餐问题 哲学家进餐问题是典型的同步问题,是由Dijkstra提出并解决的。 问题描述5个哲学家,他们的生活方式是交替的思考和进餐。哲学家们公用一张圆桌,分别坐在周围的5张椅子上,圆桌上有5个碗和5支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有他拿到两只筷子时才能进餐,放下筷子又继续思考。 例:利用信号量解决读者和写者问题 一个文件可能被多个进程共享,为了保证读写的正确性和文件的一致性,系统要求,当有读者进程读文件时,不允许任何写者进程写,但允许多读者同时读;当有写者进程写时,不允许任何其它写者进程写,也不允许任何读者进行读。 为了解决读者和写者问题,需设置两个信号量: (1)读互斥信号量rmutex,用于使读者互斥地访问共享变量readcount,这里readcount是记录有多少读者正在读; (2)写互斥信号量wmutex,用于实现读写互斥。读者—者问题进行如下描述: struct semapore rmutex,wmutex=1,1; int readcount:=0; cobegin vord readeri(vord)(i=1,2,…k) {
您可能关注的文档
最近下载
- 病历书写规范版2025.pptx
- 铃木船外机 DF325A 350A 中文维修手册.pdf
- 八年级初二语文阅读理解(含答案).pdf VIP
- 2025年年天津卷高考试题(含答案)(精校版).docx VIP
- 预应力箱梁预制施工工艺PPT.ppt VIP
- 天津市河东区2024-2025学年九年级上学期期中英语试题.docx VIP
- YYT 0292.1-2020 医用诊断 射线辐射防护器具 第1部分:材料衰减性能的测定.docx VIP
- CRM二期-高阶蓝图规划 V0.98-德邦物流.pptx VIP
- 总承包项目的风险分析与防范措施.docx VIP
- 教育培训机构劳动合同范文(合同范本).docx VIP
文档评论(0)