操作系统综合题之“用记录型信号量机制的wait操作和signal操作写出三个进程的同步代码(水果进箱问题-代码补充)”
1.问题:假设一个水果赛选系统由三个进程A、B、C组成。进程A每次取一个水果,之后存放在货架F上,F的容量为每次只能存放一个水果。若货架上存放的是苹果则让进程B取出,并存放到苹果箱中;若货架上存放的是菠萝则让进程C取出后,将其存放到菠萝框中
(1)列出所需的信号量并初始化
(2)请用记录型信号量机制的wait操作和signal操作写出三个进程的同步代码
2.答案
答:
(1)var e,e1,e2:semaphore;
e.value = 1;
e1.value = 0 ;
e2.value = 0;
(2)
A:
Begin
Repeat
wait(e);
去一个水果,存放在货架F上;
signal(e1) or signal(e2);
Until false;
End
--------------------------------------------------------
B:
Begin
Repeat
wait(e1);
从货架上取出苹果,并存放到苹果箱中;
signal(e);
Until false;
End
---------------------------------------------------------
C:
Begin
Repeat
wait(e2);
从货架上取出菠萝,并存放到菠萝箱中;
signal(e);
Unitl false;
End
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com