实验报告
一、实验名称 售票员和汽车司机的进程同步问题
二、实验环境 windows 平台、VC6.0、C++
三、实验内容
创建两个进程模拟售票员和汽车司机的同步行为。 具体内容如下:
1、司机的活动:启动车辆,正常行车,到站停车。
2、售票员活动:关车门,售票,开车门。
3、当发车时间到,售票员关好车门后,司机才能启动车辆,售票员才开始售票。当到站时,司机停稳车后,售票员才能打开车门,车上乘客先下车,然后站牌乘客上车。
四、实验分析与设计
1、理论分析
司机与售票员之间必须协调工作。即售票员把车门关好了司机才能开车,所以售票员关门后应该通知司机可以开车;然而只有当汽车停了之后,售票员才能开门让乘客上下车,因此司机停车后应该通知售票员可以售票。因此,对于司机和售票员这两个进程有必要分别设两个私有信号量。
2、总体设计
司机进程 售票员进程
正常行车 售票
到站停车 P(S2)
V(S2) 开车门
P(S1) 关车门
开车 V
五、算法实现
struct semaphore s1,s2=0,0;
cobegin
void driver(void)
{
while(TRUE){
p(s2);
启动车辆;
正常行车;
到站停车;
V(s1);}
}
void conductor(void)
{
while(TRUE){
上、下乘客;
关车门;
V(s2);
售票;
P(s1);
开车门;
上、下乘客;}
}
coend
(S1)
六、实验结果
七、心得体会
通过本次实验我们认识了进程的产生过程以及同步互斥机制,学会了用编程语言实现P ,V 操作的方法,利用p ,v 操作来改变信号量的值,以实现进程的同步。增强了对操作系统的理解,提高了发现并解决问题和理论联系实践的能力。实验让我们受益匪浅,为我今后的学习乃至工作打下良好的基础。
实验报告
一、实验名称 售票员和汽车司机的进程同步问题
二、实验环境 windows 平台、VC6.0、C++
三、实验内容
创建两个进程模拟售票员和汽车司机的同步行为。 具体内容如下:
1、司机的活动:启动车辆,正常行车,到站停车。
2、售票员活动:关车门,售票,开车门。
3、当发车时间到,售票员关好车门后,司机才能启动车辆,售票员才开始售票。当到站时,司机停稳车后,售票员才能打开车门,车上乘客先下车,然后站牌乘客上车。
四、实验分析与设计
1、理论分析
司机与售票员之间必须协调工作。即售票员把车门关好了司机才能开车,所以售票员关门后应该通知司机可以开车;然而只有当汽车停了之后,售票员才能开门让乘客上下车,因此司机停车后应该通知售票员可以售票。因此,对于司机和售票员这两个进程有必要分别设两个私有信号量。
2、总体设计
司机进程 售票员进程
正常行车 售票
到站停车 P(S2)
V(S2) 开车门
P(S1) 关车门
开车 V
五、算法实现
struct semaphore s1,s2=0,0;
cobegin
void driver(void)
{
while(TRUE){
p(s2);
启动车辆;
正常行车;
到站停车;
V(s1);}
}
void conductor(void)
{
while(TRUE){
上、下乘客;
关车门;
V(s2);
售票;
P(s1);
开车门;
上、下乘客;}
}
coend
(S1)
六、实验结果
七、心得体会
通过本次实验我们认识了进程的产生过程以及同步互斥机制,学会了用编程语言实现P ,V 操作的方法,利用p ,v 操作来改变信号量的值,以实现进程的同步。增强了对操作系统的理解,提高了发现并解决问题和理论联系实践的能力。实验让我们受益匪浅,为我今后的学习乃至工作打下良好的基础。