第三章进程同步问题习题答案

第三章进程同步问题习题答案
第三章进程同步问题习题答案

进程同步练习

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 操作实现司机进程和售票员进程同步的算法描述如下:

售票员:

P(S1)售票

启动车辆 P(S2)

正常行车开车门

到站停车关车门

V(S2)V(S1)

另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。

售票员:

售票

(S2)

S2)开车门

P(S1)关车门

启动车辆V(S1)

相关主题
相关文档
最新文档