首页 > 其他 > 详细

用信号量及其PV操作处理实际问题

时间:2019-05-07 21:27:16      阅读:138      评论:0      收藏:0      [点我收藏+]

1.书上课后练习P187-43

semaphore S,S1,S2,S3;

S=1;S1=0;S2=0;S3=0;

process 供应商

begin

   repeat

   P(S);

   售卖一样物品;

   if 售卖橘子精 then V(S1);

   else if 售卖糖 then V(S2);

   else  V(S3)

until false

end

process P1

begin

   repeat

   P(S1);

   购买橘子精;

   配制橘子汁;

   V(S);

   Until false

end

process P2

begin

   repeat

   P(S2);

   购买糖;

   配制橘子汁;

   V(S);

   Until false

end

process P3

begin

   repeat

   P(S3);

   购买水;

   配制橘子汁;

   V(S);

   Until false

end

2.IPO问题:有多个输入进程、多个处理进程和多个输出进程。输入进程把数据逐步输入到一个有M个单位缓冲区B1上,经处理进程处理之后放到有N个单位的缓冲区B2上,由输出进程进行输出。

       a.这个问题有哪些进程?进程之间有什么样的制约关系?  

       b.用信号量及PV操作写出这些进程之间的算法。

a.这个问题有三个进程,输入进程、处理进程以及输出进程。处理进程需要输入进程输入数据后才可以进行处理数据,输出进程需要处理进程处理完数据以后才可以输出数据。

b.

 

S1=S2=S3=S4=0;

 

mutex1=1;mutex2=1;

 

process input

 

begin

 

   输入数据;

 

   P(S1);

 

   P(mutex1);

 

   数据放入B1(in1);

 

   in1=(in+1)%M;

 

   V(mutex1);

 

   V(S2);

 

end

 

process handle

 

begin

 

   P(S2);

 

   P(mutex1);

 

   从B1(out1)取出数据;

 

   out1=(out+1)%M;

 

   V(mutex1);

 

   V(S1);

 

   处理数据;

 

   P(S3);

 

   P(mutex2);

 

   数据放入B2(in2);

 

   in2=(in2+1)%N;

 

   V(mutex2);

 

   V(S4);

 

end

 

process output

 

begin

 

   P(S4);

 

   P(mutex2);

 

   从B2(out2)取出数据;

 

   out2=(out2+1)%N;

 

   V(mutex2);

 

   V(S3);

 

   输出数据;

 

end

 

 

 

3.探索哲学家问题的正确解法。

用信号量及其PV操作处理实际问题

原文:https://www.cnblogs.com/sulongsuyang/p/10826700.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!