同步互斥问题求解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同步互斥问题求解

1 图书馆阅览室问题 问题描述:假定阅览室最多可同时容纳100个人阅读,读者进入时,必须在阅览室门口的一个登记表上登记,内容包括姓名、座号等,离开时要撤掉登记内容。用P、V操作描述读者进程的同步算法。 (分析:读者有任意多个,但进入阅览室阅读最多为100人,为此可设一个信号量s,代表空座位的数目;另登记表为临界资源,需设一个用于互斥的信号量mutex,防止2个及以上的读者进程同时对此表访问。对于每个读者的动作包括进入、阅读、离开。) struct semaphore s,mutex=100,1; cobegin void readeri(void) (i=1,2,…,k) { while(TRUE){ P(s); P(mutex); 查登记表,置某座位为占用; V(mutex); …… reading; …… P(mutex); 查登记表,置某座位为空; V(mutex); V(s);} } coend 2吃水果问题 PV操作实现四人正确活动的程序。 解:四人之间的关系:1爸爸,妈妈要互斥使用盘子,所以两者之间是互斥关系;2爸爸放的苹果,女儿吃,所以两者是同步关系;3妈妈放的桔子,儿子吃,所以两者也是同步关系。 struct semaphore s,sp,so=1,0,0; cobegin void father (void) { while(TRUE){ have an apple; P(s); put an apple; V(sp);} } void mother (void) { while(TRUE){ have an orange; P(s); put an orange; V(so);} } void son (void) { while(TRUE){ P(sp); get an orange; V(s); eat an orange;} } void daught (void) { while(TRUE){ P(sp); get an apple; V(s); eat an apple;} } coend 3司机—售票员问题 司机: 售票员: 启动车辆 上下乘客 正常行车 关车门 到站停车 售票 开车门 上下乘客 在汽车不断到站,停车,行驶过程中,这两个活动的同步关系? struct semaphore s1,s2=0,0; cobegin void driver(void) { while(TRUE){ p(s2); 启动车辆; 正常行车; 到站停车; V(s1);} } void conductor(void) { while(TRUE){ 上、下乘客;; V(s2); P(s1); 开车门;上、下乘客;} } coend 司机-售票员问题另解: struct semaphore s1,s2=1,0; cobegin void driver(void) { while(TRUE){ P(s2); 启动车辆; 正常行车; 到站停车; V(s1);} } void conductor(void) { while

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档