第2章补充习题1(1)

第2章补充习题1(1)

ID:33482035

大小:59.50 KB

页数:10页

时间:2019-02-26

第2章补充习题1(1)_第1页
第2章补充习题1(1)_第2页
第2章补充习题1(1)_第3页
第2章补充习题1(1)_第4页
第2章补充习题1(1)_第5页
资源描述:

《第2章补充习题1(1)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、例1:抽烟问题:有一个烟草代理商(Agent)和3个抽烟者(smoker)。每个抽烟者连续不断地制造香烟并吸掉它。但是,制造一支香烟需要三种材料:烟草、烟纸和火柴。三个抽烟者中,一人有烟纸,一人有烟叶,一人有火柴。烟草代理商源源不断地供应这三种材料。他将两种材料一起放在桌上,持有另一种材料的吸烟者即可制造一支香烟并抽掉它。当此抽烟者抽香烟时,他发出一个信号通知烟草代理商,烟草代理商马上给出另外两种材料,如此循环往复。试用信号量同步烟草代理商和3个抽烟者。解:Semaphoresmoker[3];//初始0,三个抽烟者Semapho

2、rematerial[3];//初始0,三种原料Semaphoreagent;//初始1,供应商Intturn;//初始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]

3、);signal(agent);}例2;从读卡机上读进n张卡片,然后复制一份,要求复制出来的卡片与读进来的卡片完全一致。这一工作由3个进程get、copy、put以及两个缓冲区buffer1和buffer2完成。get进程的功能是把一张卡片信息从读卡机上读进buffer1;进程copy的功能是把buffer1中的信息复制到buffer2;进程put的功能是取出buffer2中的信息并从行式打印机上打印输出。试用P、V操作完成这3个进程间的尽可能并发正确执行的关系(用程序或框图表示),并指明信号量的初值。解答:这3个进程间的关系可用

4、下图来表示:buffer1buffer2打印机读卡机getcopyput分析这3个进程之间的关系,可以得知,get和copy进程之间通过buffer1进行合作,这是一种生产者-消费者问题;同理,进程copy和put之间通过buffer2进行合作,两者之间也是一种生产者-消费者问题。为此,设计互斥信号量mutex1,mutex2来实现对buffer1和buffer2的互斥访问;为实现get和copy之间的同步,设置两个信号量semptybuffer1和sfullbuffer1,分别表示缓冲区buffer1是空的还是满的;为实现cop

5、y和put之间的同步,设置两个信号量semptybuffer2、sfullbuffer2,分别表示缓冲区buffer2是空的还是满的。Varmutex1,mutex2,semptybuffer1,sfullbuffer1,semptybuffer2,sfullbuffer2:semaphore:=1,1,1,0,1,0;Get:beginRepeat从读卡机读入一张卡片信息;P(semptybuffer1);P(mutex1);将信息放入buffer1;V(sfullbuffer1);V(mutex1);Untilfalse;En

6、dCopy:beginRepeatP(sfullbuffer1);P(mutex1);从buffer1复制信息;V(semptybuffer1);V(mutex1);P(semptybuffer2);P(mutex2);将信息复制放入buffer2;V(sfullbuffer2);V(mutex2);Untilfalse;End;Put:beginRepeatP(sfullbuffer2);P(mutex2);从buffer2取出信息;V(semptybuffer2);V(mutex2);把信息从打印机输出;Untilfalse;

7、End;例3:在4×100m接力赛中,4个运动员之间存在如下关系:运动员1跑到终点把接力棒交给运动员2;运动员2一开始处于等待状态,在接到运动员1传来的接力棒后才能往前跑,他跑完100m后交棒给运动员3;运动员3也只有接到运动员2传来的接力棒后才能往前跑,他跑完100m后交棒给运动员4;运动员4接棒后跑完全程,试用信号量机制进行描述。分析:在本题中,4个运动员相当于4个进程,他们处于并发运行状态。运动员1跑完100m后发信号给运动员2,运动员2原来处于等待该信号的过程,在接到运动员1发来的信号后他才能开始运行,他在跑完100m后发

8、信号给运动员3;同样,运动员3在接到运动员2发来的信号后才能开始跑,跑完后发信号给运动员4;运动员4接到运动员3发来的信号后跑完全程。解答:根据分析,引入3个信号量S1、S2、S3,其初始值均为0。4×100m接力赛描述如下:vars1,s2,s3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。