设一辆公共汽车上,司机和售票员的活动分别是 :司机:启动车辆,正常行车,到站停车;售票 员:上乘客,

学习 时间:2026-04-08 01:30:20 阅读:1315
设一辆公共汽车上,司机和售票员的活动分别是 :司机:启动车辆,正常行车,到站停车;售票 员:上乘客,设一辆公共汽车上,司机和售票员的活动分别是:司机:启动车辆,正常行车,到站停车;售票员:上乘客,关车门,售票,开车门,下乘客.在汽车不断地到站,停车,行驶的过程中,这两个活动有什么同步关系?并用wait和signal原语操作实现它们的同步

最佳回答

疯狂的荷花

安详的果汁

2026-04-08 01:30:20

第一步:确定进程间的关系。售票员关车门后,要向司机发开车信号,司机接到开车信号后才能启动车辆。在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门,让乘客上下车。因此司机启动车辆的动作必须与售票员的动作取得同步;售票员开车门的动作也必须同司机停车取得同步。  第二步:确定信号量及其值。由于司机与售票员之间要互通消息,司机进程设置一个私有信号量run,用于判断是否关车门,司机能否启动车辆,初值为1。售票员进程设置一个私有信号量stop,用于判断是否停车,售票员是否能够开车门,初值为0  第三步:确定P(wait)、V(signal)操作的位置  司机操作中,是否关门?没关则等待,这是一个P操作,P(run);  司机操作中,设立停车标志,这是一个V操作,V(stop);  售票员操作中,是否停车?没停则等待,这是一个P操作,P(stop);  售票员操作中,设立关门标志,这是一个V 操作,V(run)  lstop ,run:semaphore  run:=1; //是否关车门  stop:=0; //是否停车  Driver:begin cobegin  driver:begin  L1:P(run);  启动车辆;  正常行车;  到站停车;  V(stop);  goto L1;  end;  Conductor:begin  L2:上乘客;  关车门;  V(run);  售票;  P(stop);  开车门;  下乘客;  goto L2;  end;  coend;  end;

最新回答共有2条回答

  • 聪慧的大叔
    回复
    2026-04-08 01:30:20

    第一步:确定进程间的关系。售票员关车门后,要向司机发开车信号,司机接到开车信号后才能启动车辆。在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门,让乘客上下车。因此司机启动车辆的动作必须与售票员的动作取得同步;售票员开车门的动作也必须同司机停车取得同步。  第二步:确定信号量及其值。由于司机与售票员之间要互通消息,司机进程设置一个私有信号量run,用于判断是否关车门,司机能否启动车辆,初值为1。售票员进程设置一个私有信号量stop,用于判断是否停车,售票员是否能够开车门,初值为0  第三步:确定P(wait)、V(signal)操作的位置  司机操作中,是否关门?没关则等待,这是一个P操作,P(run);  司机操作中,设立停车标志,这是一个V操作,V(stop);  售票员操作中,是否停车?没停则等待,这是一个P操作,P(stop);  售票员操作中,设立关门标志,这是一个V 操作,V(run)  lstop ,run:semaphore  run:=1; //是否关车门  stop:=0; //是否停车  Driver:begin cobegin  driver:begin  L1:P(run);  启动车辆;  正常行车;  到站停车;  V(stop);  goto L1;  end;  Conductor:begin  L2:上乘客;  关车门;  V(run);  售票;  P(stop);  开车门;  下乘客;  goto L2;  end;  coend;  end;

上一篇 Mary likes action movies b------ they are interesting.

下一篇 3x²+4-5x²)+(-x³-3+2x²)化简