B[k]:=product; k:=(k十1)mod n; V(full); go to L1 end; 消费者进程: begin
L2:P(full);
take a product from B[t];
t:=(t+1)mod n;
V(empty);
consume;
go to L2
end
13.VAR:
S1,S2 :Semaphore;{初值为0,实现理发师与顾客的同步} Mutex:Semaphore:{初值为1,实现对waiting的互斥} waiting:INTEGER:{初值为0,等待的顾客数} 理发师进程 REPEAT P(S1) {若无顾客,则睡觉 } P(mutex) Waiting:=waiting-1 V(S2); (唤醒一个等待的客户) V(mutex)
理发
Until FALSE
顾客进程
P(mutex)
IF(waiting<N) (还有空的椅子)
THEN BEGIN
Waiting:=-waiting+1 ;(等待顾客数加1) V(mutex);
V(S1) {通知理发师}
P(S2) {若无理发师,挂起}
坐下理发
END
ELSE V(mutex)
14. 取号的互斥信号量 mutex,叫号的互斥信号量mutex1柜台人员和顾客进程的同步信号量为 S1,S2, 初值分别为n,0
柜台人员进程:
P(S2) (无顾客则等待)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库操作系统试题库(及其答案),让你完美掌握操作系统(13)在线全文阅读。
相关推荐: