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条)