公交车司机与售票员问题优质整理

April 17, 2021, 9:42 a.m. 文档页面

【文章导读】【例】设公共汽车上,司机和售票员的活动分别是: 司机的活动: 售票员的活动: 启动车辆; 关车门; 正常行车; 售 票; 到站停车; 开车门; 在汽车不断地到站、停车、行驶过程中

文章介绍图片

  

【正文内容】

【例】设公共汽车上,司机和售票员的活动分别是: 司机的活动:售票员的活动: 启动车辆;关车门; 正常行车;售票; 到站停车;开车门; 在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。 解:在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门让乘客上下车。因此司机启动车辆的动作必须与售票员关车门的动作取得同步:售票员开车门的动作也必须与司机停车取得同步。 在本题中,应设置两个信号量:s1、s2。

s1表示是否允许司机启动汽车,其初值为0;s2表示是否允许售票员开门,其初值为0。用P、V原语描述如下: 我们来分析这个过程,我们把S1和S2的初值都设为0。我们来分析分析: 1、P(S1):S1=S11=1,那么司机进程就被暂停,等会售票员进程,售票员关车门。 2、V(S1):S1=S1+1=0,激活了司机进程,那么司机就开始启动车辆、正常行驶、到站停车,当然售票员也有可能同时在售票。 3、P(S2):S2=S21,售票员在售票之后的进程就被暂停,等待司机进程。这样就避免了售票员售票之后就开车门了。因为这是不允许的。 4、V(S2):S2=S2+1,司机到站停车之后,就激活了售票员P(S2)的进程。

那么售票员进程就开始开车门、上下客的操作。 那么这个进程就完成了。

公务员网址相关推荐  
三九文库 www.999doc.com
备案图标苏ICP备2020069977号