第三章 进程同步问题习题答案
- 格式:doc
- 大小:22.00 KB
- 文档页数:4
进程同步练习
1.有一阅览室,共有100个座位。读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用P、V操作描述读者进程的同步结构。
var
mutex : semaphere;信号量,用于互斥
full : semaphere; 信号量,用于同步
table : array 0..n-1 of item; 登记表
procedure reader;
读者进程
begin
P(full);
P(mutex);
;
Register_name(table);
V(mutex);
Reading;
P(mutex);
Delet_name(table);
V(mutex);
V(full)
end;
begin
…
seminitsal,1; ,100); 初始化
cobegin
reader;
reader;
...
coend
end.
2.设公共汽车上有一位司机和一位售票员,它们的活动如下:
售票员:
动车辆售票
正常行车开车门
到站停车关车门
请分析司机与售票员之间的同步关系,如何用PV
操作实现。
答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。用PV操作实现司机进程和售票员进程同步的算法描述如下:
售票员:
(S1)售票
动车辆P(S2)
正常行车开车门
:
到站停车关车门
V(S2)V(S1)
另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的
初值均应为0。
售票员:
常行车售票
站停车P(S2)
V(S2)开车门
P(S1)关车门
启动车辆V(S1)