- 37
- 0
- 约5.71千字
- 约 10页
- 2018-02-20 发布于重庆
- 举报
福州大学,操作系统,pv操作,理发师问题
理发师问题
一个理发师,一把理发椅,n把等候理发的顾客椅子。
(1)如果没有顾客则理发师便在理发椅上睡觉
(2)当有一个顾客到达时,首先看理发师在干什么,
如果理发师在睡觉,则唤醒理发师理发;
如果理发师正在理发,则查看是否有空的顾客椅子可坐,
如果有,坐下等待,如果没有,则离开。
(3)理发师为一位顾客理完发后,查看是否有人在等待,
如果有则唤醒下一位顾客理发,没有则理发师去睡觉
customers=0; //顾客等待服务的信号量
barber=0; //理发师等待顾客的信号量
mutex=1; //互斥信号量
waiting=0; //等待理发的顾客数
CHAIRS=n; //表示椅子的总数为n
process barber
begin
while true do
begin
p(customers); //顾客数为0,则入睡
P(mutex); //进入临界区
waiting := waiting - 1; //减少顾客数
V(barber); //理发师准备理发
V(mutex);
Cut_hair();
End;
End;
process customer
begin
P(mutex); //进入临界区
if(waiting CHAIRS)
begin
waiting :=
原创力文档

文档评论(0)