- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
过程同步练习
习题课 进程同步练习 儒贺曙净谴邵铅应吃仔扛与备华妈瘤叹觅厅癌隔吏村撰雅派俐琶淹魄乒酗进程同步练习进程同步练习 ——进程同步练习 信号量 typedef struct { int value; struct process *L; }semaphore; P操作 P(S){ S.value--; if(S.value 0){把此进程回到到与此资源相关的等待队列中并将此进程挂起} } V操作 V(S){ s.value++; if(S.value = 0){从此资源相关的等待队列中唤醒一个进程;} } 即Wait(S) 即Singal(S) 武怨萍精捧枷孝式喊骇羹你苇味蕾披藏雌袖圃鄙韵衰蓬懈蹬足乳傅萌默锁进程同步练习进程同步练习 进程同步问题的求解依据 ——信号量的两种应用 实现进程互斥 分析题目中的资源、互斥资源,设置信号量及初值 分析题目中的进程,及其行为,进程访问的资源 利用所设置的信号量控制进程对资源的访问 必要时增加共享变量(如计数器),进程对共享变量的访问是互斥的 实现进程合作(实现前趋关系) 识别是进程合作类型的题目(一般会有合作、协作、配合之类的字样) 分析进程/语句之间的前趋关系,为每条边设置信号量(初值为0) 利用所设置的信号量控制进程/语句执行的次序 玖蓝雍脑儒标场般蛆涟炉挚拙坟府蚌忘盗删杂拓虾田说逢凶艘麓开赫橱酵进程同步练习进程同步练习 题目1: 一个仓库中只库存两种产品:A及B,需要满足条件如下: A的产品数量-B的产品数量 M B的产品数量-A的产品数量 N 每次只能存一种产品 其中M,N均为整数。 分析: A数量与B数量相互制约,假设当前时刻A最多可以再存Sa个,B最多可以再存Sb个,则Sa初值为M-1,Sb初值为N-1,A每库存一个,Sa应该减1(减少一个),Sb应该加1(A加1,B同样加1,题中两个不等式仍然成立);同理B每库存一个Sb减1,Sa加1。每次只能存一种产品表明仓库中临界资源,设置信号量mutex, 初值为1。 汰爆亦郴磅莉酷犬庶可际傅明忠裁骂航谱险窖逃齐促砚毛垣碰逗灶生陶皋进程同步练习进程同步练习 semaphore mutex=1; semaphore Sa=M-1, Sb=N-1; ProcessA(){ P(Sa); P(mutex); 存一个A产品; V(Sb); V(mutex); } ProcessB(){ P(Sb); P(mutex); 存一个B产品; V(Sa); V(mutex); } 霖颧触姜沈烷尤呆彻柄吕剂都庶掌袭减狙族剖雾棉纺课替姨墓斧还灶棵抖进程同步练习进程同步练习 题目2: 三个合作进程A,B,C,需要依次通过同一台输入设备输入各自的数据a,b,c,且输入设备互斥,A接受a,B接受b,C接受c。 A,B,C分别进行如下运算: A: x=a+b B: y=a*b C: z=y+c-a 最终由A进程将x,y,z结果打印出来。 分析: 由于依次通过同一设备,故顺序为A-B-C,即图中的1,4. A中需要B输入的数据b,所以必须在B接收完b后A的计算才能运行。即图的2 C需要B的运算结果,故C要等B计算完后才能计算,即图的5 A需要B,C的运算结果y,z,所以必须B,C计算完成后A才能打印,即图的3,6 输入设备是互斥的,需要互斥信号量。 沧曼操涌粟份艳堕员翰爬搔谭稿宴才晒琴匀廓延熙舱很钞源滁隋掌猴堪蛮进程同步练习进程同步练习 semaphore mutex=1; semaphore s1=s2=s3=s4=s5=s6=0; ProcessA(){ P(mutex); // 获得输入设备 输入a; V(mutex); V(s1); P(s2); x=a+b; P(s3); P(s6); 打印x,y,z; } ProcessB(){ P(s1); P(mutex); 输入b; V(mutex); V(s4); V(s2); y=a*b; V(s5); V(s3); } ProcessC(){ P(s4); P(mutex); 输入c; V(mutex); P(s5); z=y+c-a; V(s6); } 旗渍沧椅伪浸歧篆肿摄疡贿起恃底锑差胶凄菩簧流赦恫拉异砰粹睦暗岳奖进程同步练习进程同步练习 只要理解一个同步的情况,上面6个同步的情况就非常简单: A必须先于B完成,可以使用一个信号量来实现: semaphore S=0;
您可能关注的文档
最近下载
- 行测秒杀技巧.docx VIP
- 9706.1有源医疗器械检测用-GB_T 42062-2022风险管理报告.docx VIP
- 2025年河北省政府采购评审专家考试试题及答案.docx VIP
- FIDIC-咨询协议通用条款-2006第四版-中文翻译.pdf VIP
- 中国多发性骨髓瘤诊治指南(2024年修订).pdf
- 大学生职业生涯规划.pdf VIP
- 横河(Yokogawa)uR10000、uR20000通信接口使用说明书(中文).pdf
- 2024版外研版英语八年级上册全册各单元重点知识点清单(默写).pdf VIP
- 幼儿园食育课程与中华优秀传统文化相融合的价值与路径研究.docx VIP
- BAKERHUGHS旋转导向简介教学.pptx VIP
原创力文档


文档评论(0)