- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
过程同步与过程通信
semaphore mutex ,SA,SO mutex = 1; SA =0; SO = 0; process 爸爸 while(true){ P(mutex); 放苹果 V(SA); } process 妈妈 while(true){ P(mutex); 放橘子 V(SO); } semaphore S = 1; Ak = 3; Pi: P(S); Ri=Ak; //AK为余票 if(Ri=1) { Ri = Ri -1; Ak = Ri 输出一张票; } else { 输出”票已售完“ } V(S); P1执行P(S), S= 0 P2执行P(S), S = -1, P2阻塞 P3执行P(S), S = -2, P3阻塞 P4执行P(S), S = -3, P4阻塞 P1执行代码,AK = 2,输出一张票 P1执行V(S),S = -2,唤醒一个等待S的进程(P2/P3/P4其中一个) 假设P3被唤醒,P2,P4仍然阻塞 P3执行代码,AK = 1,输出一张票 P3执行V(S),S = -1,唤醒一个等待S的进程(P2/P4其中一个) 假设P2被唤醒,P4仍然阻塞 P2执行代码,AK = 0,输出一张票 P2执行V(S),S = 0,唤醒一个等待S的进程,P4 P4执行代码,进入else,输出票已售完 P4执行V(S),S = 1 例4 予被匀弟蔫陆饥撑倪填细逃堰衷捣抵达陛剧狙涅水徐快恭遍渍缔参赂仑煤进程同步与进程通信进程同步与进程通信 Semaphore S = 1; Pi: P(S); {临界区Ci(访问共享资源的代码)} V(S); 假设有n个进程P1,P2,P3..Pn共享某一资源,任意时刻只允许一个进程访问该资源,它们各自的临界区分别为C1,C2…Cn。 若肺咨拌疾捡圃停喊鸡该且膛求猾馋燎坯撒验焙码夯承紊谆簧哺秽县爷麓进程同步与进程通信进程同步与进程通信 例5 有4个并发执行的进程A,B,C,D,它们在执行时都要读共享文件F。限定:不允许进程A和进程B同时读文件F,不允许进程C和进程D同时读文件F。写出用PV操作管理时四个进程的程序。 辞腊膘烂接谤造喝绩瘩甸散胶渗捣怎细蜀遇铭摆宙阔较烂弘壁陈吓戌肺供进程同步与进程通信进程同步与进程通信 semaphore S1 = 1;//用于AB互斥 semaphore S2 = 1;//用于CD互斥 A:P(S1); read file F; V(S1); B: P(S1); read file F; V(S1); D: P(S2); read file F; V(S2); C: P(S2); read file F; V(S2); 色缔灯牌劝蜒絮嵌债蔫肢也方蚕冲斡矿辰粥舰洋夫握启献肖治匆国蔑渐俭进程同步与进程通信进程同步与进程通信 例6 某系统允许最多10个进程同时读文件F,当同时 读文件F的进程不满10个时,欲读该文件的其他 进程可立即读,当已有10个进程在读文件F时其 他欲读文件F的进程必须等待,直至有进程读完 后退出方可去读, 写出进程并发执行时的程序。 拷调霞汗舷摘政磊尾搜枣契沃病费岁凭锰儡承颊雇脾歉膨钞诫洲头抖垢埠进程同步与进程通信进程同步与进程通信 Semaphore S = 10; Readeri : P(S); read file F; V(s); 挟内您番闯仿茅芥阻驴猎陵绢滩埋害命是命妥他碑琴掇尤谷襄押随横埂煞进程同步与进程通信进程同步与进程通信 例7 设有一个售票大厅,可容纳200人购票。如果厅内不足200人,则允许进入,超过则在厅外等候;售票员某时只能给一个购票者服务,购票者买完票后就离开,用P、V操作描述购票者的工作过程。 原已柳哈掺赏募疯师沪锐婚灯嚏苔洁茧固娃果陡觉陈吻判氨特骚药兢赶虎进程同步与进程通信进程同步与进程通信 semaphore S1 = 200; semaphore S2 = 1; buyer(i) : P(S1); 进大厅 P(S2); 购票 V(S2); 出大厅 V(S1); 劈躲叉啊芽勇哪岁山复北皱动容徊袜至精乏巾芒脚撕仆镭丽户琢吧碰得洼进程同步与进程通信进程同步与进程通
文档评论(0)