一个关于'并发'与'信号量'的问题

时间:2021-03-25 15:13:57
进程PA不断地向管道写数据,进程PB从管道中读取数据并加工处理,如下图表示. 
请点击如下超链接:
http://p13.freep.cn/p.aspx?u=v20_p13_p_0911242346051875_0.jpg

如果采用P,V操作来实现进程PA和PB间的管道通信,并且保证这两个进程并发执行的正确性,则至少需要() 


(如果,画得不清楚的话,由于点击设置写字板的“超链接”总是出现别的页面的原因,并且输入写字板后,总是窜行, 
麻烦热心人请将如下IP地址复制到IE栏,多谢) 
http://user.qzone.qq.com/623437902/photo/77e7fad3-0e46-4c48-adb0-0168bd9e4287 

________________________________________________ 
书上的答案是 : 3个信号量,信号量的初值为0,0,1 
                                                                      --P4.24 
____________________________________________ 
我的疑问1
  题目中要求的'并发'的含义,是不是就是'PA,PB同时都可以'各自都运行得通,谁都不影响谁'的意思啊, 
  

我的疑问2: 
题目的图中所标识有(0,1)(0)是其中有3个变量,所以就是三个信号量, 


        不知道我的理解是否正确,恳请热心人帮忙指教,谢谢

6 个解决方案

#1


赞楼主。

不过我也很想知道是哪三个信号量。。。

#2


像是consumer/producer
用两个PV信号量empty,full

init:
empty = 1
full = 0

PA:
P(empty)
write data
V(full)

PB:
P(full)
read data
V(empty)

#3


这才两个信号量吧。
楼主说有3个啊

引用 2 楼 zdeepblue 的回复:
像是consumer/producer
用两个PV信号量empty,full

init:
empty = 1
full = 0

PA:
P(empty)
write data
V(full)

PB:
P(full)
read data
V(empty)

#4


我的疑问1: 
  题目中要求的'并发'的含义,是不是就是'PA,PB同时都可以'各自都运行得通,谁都不影响谁'的意思啊,


就个人的理解,“并发”是指线程/进程间的协作规则(顺序)。 就拿本题来说,指的是,“管道中没有东西时,pb就不能读”(相对应的,应该有管道满时,pa不能写----因为没看图,这个就当一个说明)
而“互斥”强调的是共享资源竞争的规则。

#5


QQ空间是要好友才能查看的,晕死!

#6


谢谢

#1


赞楼主。

不过我也很想知道是哪三个信号量。。。

#2


像是consumer/producer
用两个PV信号量empty,full

init:
empty = 1
full = 0

PA:
P(empty)
write data
V(full)

PB:
P(full)
read data
V(empty)

#3


这才两个信号量吧。
楼主说有3个啊

引用 2 楼 zdeepblue 的回复:
像是consumer/producer
用两个PV信号量empty,full

init:
empty = 1
full = 0

PA:
P(empty)
write data
V(full)

PB:
P(full)
read data
V(empty)

#4


我的疑问1: 
  题目中要求的'并发'的含义,是不是就是'PA,PB同时都可以'各自都运行得通,谁都不影响谁'的意思啊,


就个人的理解,“并发”是指线程/进程间的协作规则(顺序)。 就拿本题来说,指的是,“管道中没有东西时,pb就不能读”(相对应的,应该有管道满时,pa不能写----因为没看图,这个就当一个说明)
而“互斥”强调的是共享资源竞争的规则。

#5


QQ空间是要好友才能查看的,晕死!

#6


谢谢