- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
begin int Sa=0; int Sb=1; cobegin process cp begin Lc:得到一个进程结果; P(Sb); 将数送到缓冲区中; V(Sa); goto Lc; end process iop begin Lo:P(Sa); 从缓冲区中取一数; V(Sb); 从打印机上输出; goto Lo; end coend end 设置两个信号量Sa和Sb。信号量Sa用来表示缓冲区中是否有可供打印的计算结果,初值为0。信号量Sb用以表示缓冲区有无空位置存放新的信息,初值为1。算法描述如下: 表示buf中有无信息 表示buf中有无空位置 四、生产者—消费者问题 生产者—消费者问题是一个典型的同步例子。 它描述了一组生产者向一组消费者提供产品(数据),它们共享一个有界缓冲区,生产者向其中投放产品,消费者从中取出产品消费。这样的一个问题是许多相互合作进程存在的内在关系的一种抽象。 一组生产者P1、P2、…、Pm 一组消费者C1、C2、…、Ck 有界缓冲区——长度为n(n >0) 只要缓冲区未满,生产者就可把产品送入缓冲区;只要缓冲区未空,消费者便可从缓冲区取走产品并消耗它。 仅当缓冲区满时,生产者被阻塞,类似地,缓冲区空时,消费者被阻塞。 生产者和消费者的同步关系将禁止生产者向满的缓冲区输送产品,也禁止消费者从空的缓冲区中提取物品。 P1 P2 P3 Pm-1 Pm ┇ ┇ C1 C2 C3 Ck-1 Ck 缓冲区 信号量的功能: 消费者在信号量上做P操作来表示消耗一个资源,生产者通过在同一信号量上做v操作表示生产一个资源。计数器在每次P操作后减1,而在每次V操作中增1。这一计数器的初始值是可利用的资源数目。当资源是不可利用时,将申请资源的进程放置到等待队列中,如果有一个资源释放,在等待队列中的第一个进程被唤醒并得到资源的控制权。 为解决这一类生产者—消费者问题,应设置两个同步信号量: 1)avail:表示空缓冲单元的数目,初值为缓冲区的大小n; 2)full:表示满缓冲单元(即产品)的数目,初值为0; 由于有界缓冲区是一个临界资源,必须互斥使用,所以,另外还需要设置一个互斥信号量: 3)mutex:互斥信号量,初值为l。 生产者—消费者问题 生产者进程Pi(i=1,2,…… ,m) 消费者进程Cj(j=1,2,…… ,k) 产品送入缓冲区 P(avail) P(mutex) V(mutex) V(full) 生产一个产品 从缓冲区取一个产品 P(mutex) V(avail) V(mutex) 消耗该产品 P(full) 生产者—消费者问题算法描述 begin int full=0; int avail=n; int mutex=1; int ti,tj=0; cobegin process produceri begin Lp: 生产一个产品; P(avail); P(mutex); 送一个产品到ti缓冲区; ti= (ti+1) mod n; V(mutex); V(full); goto Lp end process consumerj begin Lc: P(full); P(mutex); 从缓冲区tj中取产品; tj= (tj+1) mod n; V(mutex); V(avail); 消费一个产品; goto Lc end coend end 例 :用信号量实现司机和售票员间的同步。 司机 售票员 正常行车 到站停车 售 票 开车门 关车门 离站开车 设:S1和S2分别为司机和售票员的私用信号量,其初值均为0, 信号量S1表示售票员通知司机“可以开车”的消息(信号), 信号量S2表示司机通知售票员“可以开门”的
您可能关注的文档
- 第三章统计数据的搜集.ppt
- 第三章综合运输概论.ppt
- 第三章网络管理常用工具的使用.ppt
- 第三章网络产品与数字产品.ppt
- 第三章继电器逻辑控制电梯系统.ppt
- 第三章网络营销理论基础与环境.ppt
- 第三章美国《科学引文索引》及其使用(讲).ppt
- 第三章结构基本计算原则.ppt
- 第三章群体心理与群体行为.ppt
- 第三章老子、庄子及道家文论.ppt
- 中国国家标准 GB/Z 158-2025增材制造 设计 功能梯度增材制造.pdf
- 《GB/Z 158-2025增材制造 设计 功能梯度增材制造》.pdf
- GB/Z 42749.6-2025信息技术 IT赋能服务业务过程外包(ITES-BPO)生存周期过程 第6部分:风险管理指南.pdf
- 中国国家标准 GB/Z 42749.6-2025信息技术 IT赋能服务业务过程外包(ITES-BPO)生存周期过程 第6部分:风险管理指南.pdf
- 《GB/Z 42749.6-2025信息技术 IT赋能服务业务过程外包(ITES-BPO)生存周期过程 第6部分:风险管理指南》.pdf
- GB/T 46686.1-2025标准知识图谱 第1部分:实现指南.pdf
- 中国国家标准 GB/T 46686.1-2025标准知识图谱 第1部分:实现指南.pdf
- 《GB/T 46686.1-2025标准知识图谱 第1部分:实现指南》.pdf
- GB/Z 140-2025用于电量测量和监测、电能质量监测、数据采集和分析的装置的网络安全.pdf
- 中国国家标准 GB/Z 140-2025用于电量测量和监测、电能质量监测、数据采集和分析的装置的网络安全.pdf
原创力文档


文档评论(0)