进程同步问题习题答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程同步练习

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)

相关文档
最新文档