设公共汽车上,司机和售票员的活动分别如下。司机的活动:启动车辆;正常行车;到站停车。售票员的活动:关车门;售票;开车门。在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。

admin2016-12-23  25

问题 设公共汽车上,司机和售票员的活动分别如下。司机的活动:启动车辆;正常行车;到站停车。售票员的活动:关车门;售票;开车门。在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。

选项

答案在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门让乘客上下车。因此司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步。 在本题中,应设置两个信号量:s1、s2,s1表示是否允许司机启动汽车,其初值为0;s2表示是否允许售票员开门,其初值为0。用P、V原语描述如下: int s1=0: int s2=0: main() { driver(); busman(); } driver() { while(1) { P(s1); 启动车辆; 正常行车; 到站停车; v(s2); busman() while(1) 关车门; v(s1); 售票: P(s2); 开车门; 上下乘客; } }

解析
转载请注明原文地址:https://kaotiyun.com/show/L5jx777K
0

最新回复(0)