- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
羇 例 1:抽烟问题:有一个烟草代理商(Agent)和 3 个抽烟者(smoker)。每个抽烟者连续不断地制造香烟并吸掉它。 但是,制造一支香烟需要三种材料:烟草、烟纸和火柴。三个抽烟者中,一人有烟纸,一人有
烟叶,一人有火柴。烟草代理商源源不断地供应这三种材料。他将两种材料一起放在桌上, 持有另一种材料的吸烟者即可制造一支香烟并抽掉它。当此抽烟者抽香烟时,他发出一个信号通知烟草代理商,烟草代理商马上给出另外两种材料, 如此循环往复。 试用信号量同步烟草代理商和 3 个抽烟者。
芄
解: Semaphore smoker[3];
//初始 0,三个抽烟者
膃
Semaphore material[3];//初始 0,三种原料
蕿
Semaphore agent;
//初始 1,供应商
莇
Int turn;
// 初始 0,轮到谁
肅 Agent:
羁 While (1) {
袁 Wait(agent);
螆 Signal(smoker[turn]);
螅 Signal(material[(turn+1)%3]);
羂 Signal(material[(turn+2)%3]);
羀 Turn=(turn+1)%3;
芅 }
薅 Smoker-i:
肄 While (1) {
肈 wait(smoker[i]);
衿 wait(material[(i+1)%3]);
芆 wait(material[(i+2)%3]);
袁 signal(agent);
蒀 }
莈
肆 例 2;从读卡机上读进 n 张卡片,然后复制一份,要求复制出来的卡片与读进来的卡片完全一致。这一工作由 3 个进程 get、copy、put以及两个缓冲区 buffer1 和 buffer2 完成。 get 进程的功能是把一张卡片信息从读卡机上读进 buffer1;进程 copy 的功能是把 buffer1 中的信息复制到 buffer2;进程 put 的功能是取出 buffer2 中的信息并从行式打印机上打印输出。试用 P、V 操作完成这 3 个进程间的尽可能并发正确执行的关系(用程序或框图表示) ,并指明信号量的初值。
袂解答:这 3 个进程间的关系可用下图来表示:
蕿
get
copy
put
膇
芃分析这 3 个进程之间的关系,可以得知, get 和 copy 进程之间通
过 buffer1 进行合作,这是一种生产者 -消费者问题;同理,进程 copy
和
put
之间通过
buffer2
进行合作,两者之间也是一种生产者
-消费者
问题。
螁为此,设计互斥信号量 mutex1,mutex2 来实现对 buffer1 和 buffer2 的互斥访问;为实现 get 和 copy 之间的同步,设置两个信号量
semptybuffer1 和 sfullbuffer1 ,分别表示缓冲区 buffer1 是空的还是满的;为实现 copy 和 put 之间的同步,设置两个信号量 semptybuffer2、
sfullbuffer2 ,分别表示缓冲区 buffer2 是空的还是满的。
聿 Var mutex1,mutex2,semptybuffer1,sfullbuffer1,semptybuffer2 , sfullbuffer2:semaphore:=1,1,1,0,1,0;
蚆 Get:begin
羃 Repeat
螂 从读卡机读入一张卡片信息;
膈 P(semptybuffer1);
肆 P(mutex1);
螄 将信息放入 buffer1;
袄 V(sfullbuffer1);
薀 V(mutex1);
蒅 Until false;
蒄 End
蚁 Copy:begin
虿 Repeat
膈 P(sfullbuffer1);
芄 P(mutex1);
螃 从 buffer1 复制信息 ;
肁 V(semptybuffer1);
薈 V(mutex1);
羅 P(semptybuffer2);
薀 P(mutex2);
腿 将信息复制放入 buffer2;
肇 V(sfullbuffer2);
蚅 V(mutex2);
薁 Until false;
芈 End;
蒆 Put:begin
蒅 Repeat
蚃 P(sfullbuffer2);
蚀 P(mutex2);
袆 从 buffer2 取出信息 ;
膆 V(semptybuffer2);
蒀 V(mutex2);
螈把信息从打印机输出;
芅 Until false;
羆 End;
蒁
膁 例 3:在 4×100m 接力赛中, 4 个运动员之间存在如下关系:运动员
1 跑到终点把接力棒交给运动员
您可能关注的文档
- 秋高中历史人民版必修三同步:专题三专题整合.docx
- 秋高二历史必修3课时同步练习:第24课音乐与影视艺术.docx
- 秋鲁教版九年级化学全册2.1.2天然水的人工净化同步练习.docx
- 秋鲁教版九年级化学全册5.2化学反应的表示同步练习.docx
- 种大蒜观察日记正式版.docx
- 科学与技术填空题.docx
- 科学之旅正式版.docx
- 科学创新生活,还有哪些你不知道的?..docx
- 科学复习题2参考资料.docx
- 科技发展成果丰硕.docx
- 2025及未来5年空气等离子切割设备项目投资价值分析报告.docx
- 2025及未来5年竖式顶板离层监测仪项目投资价值分析报告.docx
- 2025及未来5年150吨液压成型机项目投资价值分析报告.docx
- 2025及未来5年小型高温箱项目投资价值分析报告.docx
- 2025及未来5-10年外送车项目投资价值市场数据分析报告.docx
- 2025及未来5-10年不锈钢储液罐项目投资价值市场数据分析报告.docx
- 2025及未来5年超大玻璃转盘项目投资价值分析报告.docx
- 2025及未来5-10年便携式导线磨耗遥测仪项目投资价值市场数据分析报告.docx
- 2025及未来5年汽车点火线圈骨架项目投资价值分析报告.docx
- 2025及未来5年化学试剂硝酸项目投资价值分析报告.docx
最近下载
- 2025年广东省深圳市各区社区专职工作者/综合网格员招聘考试(综合能力测试)历年参考题库含答案详解(.docx VIP
- 登革热实验诊断技术进展.pdf VIP
- UbuntuLinux操作系统(项目式微课版)-课后练习参考答案.pdf VIP
- (新人教PEP版)英语六年级上册 Unit 5 大单元教学设计.docx
- endress+hauser电导率测量系统Smartec CLD134操作手册.pdf
- 网络安全设备采购项目招投标书范本 .pdf VIP
- 东湖高新校招笔试题库.pdf VIP
- 《非ST段抬高型急性冠脉综合征诊断和治疗指南(2024)》解读.pptx VIP
- 无损检测超声练习试题附答案.doc
- 市场营销求职简历.docx VIP
原创力文档


文档评论(0)