急!操作系统问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:44:21
1.桌上有一个空盘子,只允许放一个水果。爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时,一次只能放一只水果,试用wait、signal操作实现爸爸、儿子、女儿3个并发进程的同步。

2.设公共汽车上,司机和售票员的活动分别是:
司机的活动:启动车辆、正常行车、到站停车;售票员的活动:关车门、售票、开车门。在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?请填写相应是wait、signal操作以保证进程能够正确地并发执行。

同步关系
设信号量e(表示盘子为空),a(表示盘子里是苹果),o(表示盘子里是桔子)
int e=1,a=o=0;
main()
{father();
//son();
//daughter();/*三个为并发进程*/
}
father()
{while(1)
{ 洗水果
wait(e)
把水果放入盘子
if(水果是苹果)signal(a)
else signal(o)
}
}

son()
{while(1)
{wait(o)
从盘子里取桔子
signal(e)
吃桔子}
}

daughter()
{while(1)
{wait(a)
从盘子里取苹果
signal(e)
吃苹果}
}

没有认真看过,不过我也不想看这种无聊的事!