1. 设有两个优先级相同的进程p1与p2,令信号量s1、s2的初值为0,已知z=2,试问p1、p2并发运行后x=?,y=?,z=?
进程p1:y=1进程p2: x=1;
y=y+2x=x+1;
signal(s1wait(s1);
z=y+1x=x+y;
wait(s2signal(s2);
y=z+yz=z+x;
解:1 x=5,y=12,z=9 ②x=5,y=7,z=9 ③ x=5,y=7,z=4
2. 桌上有一只盘子,最多可以容纳两个水果,每次放入或取出一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用wait、signal操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
解:var mutex,s,a,o:semaphore:=1,2,0,0;
beginparbegin
father:begin
repeat
wait(s);
wait(mutex);
向盘中放苹果;
signal(mutex)
signal(a);
until false;
end;mother:begin
repeat
wait(s);
wait(mutex);
向盘中放桔子;
signal(mutex)
signal(o);
until false;
end;son:begin
repeat
wait(0);
wait(mutex);
取盘中桔子;
signal(mutex)
signal(s);
吃桔子;until false;
end;daughten:begin
repeat
wait(a);
wait(mutex);
取盘中苹果;
signal(mutex)
signal(s);
吃苹果;until false;
end;parend;
end.3. 某银行人民币储蓄业务由若干个柜员负责。每个顾客进入银行后先取一个号,并且等着叫号,当一个柜员空闲下来时,就叫下一个号,持该号的顾客被服务。
试用wait、signal操作正确编写柜台人员进程和顾客进程的同步算法。
解:var mutex,counter:semaphore:=1,0;
beginparbegin
customer:
begin取号码;
wait(mutex);
进入队列排队等候服务;
signal(mutex);
signal(counter);
end;servers:
beginrepeat
wait(counter);
wait(mutex);
从队列中取下一个号码;
signal(mutex);
为该号码持有者服务;
until false
end;parend;
end.4. 从甲地到乙地之间有一条弯曲的小路,其中从s到t一段路每次只允许一辆自行车通过,但中间有一个小的安全岛m(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,试设计一个算法使来往的自行车均可顺利通过。
解:var s,t,sk,lt:semaphore:=1,1,1,1;
beginparbegin
sk_lt:begin
repeat
wait(s);
wait(sk);
通过sk路段,进入安全岛m;
signal(sk);
wait(lt);
通过lt路段;
signal(lt);
wait(s);
until false;
end;tl_ks:begin
repeat
wait(t);
wait(lt);
通过lt路段,进入安全岛m;
signal(l)t;
wait(sk);
通过sk路段;
signal(sk);
wait(t);
until false;
end;parend;
end.
进程同步补充作业
1 设有两个优先级相同的进程p1与p2,令信号量s1 s2的初值为0,已知z 2,试问p1 p2并发运行后x y z 进程p1 y 1 进程p2 x 1 y y 2x x 1 signal s1wait s1 z y 1x x y wait s2signal s2 y z yz z x 解 x 5,...
国庆补充作业
1.已知,则 2.已知数例为等差数例,其前项的和为,若,则公差 3.已知圆经过两点,圆心在轴上,则圆的方程是 4.已知抛物线的准线过双曲线的右焦点,则双曲线的离心率为 5.如图,是圆的直径,是圆弧上的点,是直径上关于对称的两点,且,则 6.设向量 1.与 1,2 垂直,则等于 7.已知函数。1 求函...
数学补充作业
1 如图所示,点m是线段ab的中点,点n是线段am上的任意一点 点n不与点a重合 则下列结论不一定正确的是 a b c d 2.直线ab上有一点c,ab 12cm,bc 4cm,则accm.3.已知线段ab 延长ab到c 使,d为ac的中点,若bd 3cm 求ab的长。4.已知线段ab,在ab延长线...