P.V操作(典型例题)

P.V操作(典型例题)


2024年4月21日发(作者:)

2.

3. 有个寺庙,庙中有个小和尚和老和尚若干人,有一只水缸,由小和尚提水入

缸给老和尚饮用。水缸可容10桶水,水取自同一口水井中。水井径窄,每次仅

能容一只水桶取水,水桶总数为3个。若每次只能入缸一桶水和取缸中一桶水,

而且还不可以同时进行。试用一种同步工具写出小和尚和老和尚入水、取水的活

动过程。

4. 答:本题为两个进程共享两个缓冲区的问题。首先考虑本题有几个进程:从井中取 水

后向缸中倒水此为连续动作,为一个进程;从缸中取水为另一个进程。

其次考虑信号量,有关互斥的 有:水井和水缸。水井一次仅能一个水桶进出,水缸一次入、

取水为一桶。分别设互斥信号量为:mutex1和mutex2控制互斥。有关同步问题为:三个水

桶无论从井中取水还是入出水缸都是一次一个,应为它设信号量count,抢不到水桶的进程

只好等待。水缸满时不可入水,设信号量为empty,控制水量,水缸空时不可出水,设信号

量full,控制出水量。

设置信号量初值:mutex1:=mutex2:=1;count:=3;empty:=10;full:=0;

Parbegin

小和尚打水进程:

Begin

P(empty);

P(count);

P(mutex1);

从井中打水;

V(mutex1);

P(mutex2);

倒水入缸;

V(mutex2);

V(count);

V(full);

End

老和尚取水进程:

Begin

P(full);

P(count);

P(mutex2);

从缸中取水;

V(mutex2);

V(count);

V(empty);

End

Parend.

2. 假定一个阅览室可供50个人同时阅读。读者进入和离开阅览室时都必须在阅览室入口处的一

个登记表上登记,阅览室有50个座位,规定每次只允许一个人登记或注销登记。要求:(1)用

PV操作描述读者进程的实现算法(可用流程图表示,登记、注销可用自然语言描述);

(2)指出算法中所用信号量的名称、作用及初值。

S1:阅览室可供使用的空座位,其初值为50

S: 是否可通过阅览室,其初值为1

Process READ_in(i=1…50)

{到达阅览室入口处;

P(S1);P(S);

在入口处登记座位号;

V(s);

进入座位并阅读;

}

Process READ_out(j=1…50)

{结束阅读到达阅览室入口处;

P(S);

在入口处注销座位号;

V(S1);V(S)

离开入口处;

}

●N个并发进程公用一个公共变量Q,信号灯进程:

main()

{

begin

s=1;

cobegin

p1();p2();…pn();

coend

}

Pi()

{

P(s)

V(s)

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713673369a2295766.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信