1、操作系统PV原语P(sem)的意思是sem-=1; 如果此时sem=0,说明本次资源请求可以满足,p操作可以返回,执行该进程下面的语句;如果此时sem0,说明没有其他进程在等待该资源,v操作可以返回;如果sem=0,说明未加1前sem=0时表示剩余资源的数量,Sem=6则离开否则 顾客数+1 申请等待椅 申请理发椅 释放等待椅 发现有人坐到理发椅并准备好,就开始理发,告知理发完毕 释放理发椅 离开(顾客数-1) 定义全局变量waiting,用于统计顾客人数,初值为0;定义信号量mutex,对waiting进行操作时起互斥作用,初值为1;定义信号量bchair表示理发椅个数,初值为1;定义信号量
2、wchair表示等待椅个数,初值为5;定义信号量ready表示顾客坐到理发椅后准备好理发,初值为0;定义信号量finish表示理发完毕,初值为0。Barber():BeginL1: P(ready) 理发 V(finish)Goto L1EndCustomers():Begin L1: /这里用死循环表示不断有顾客来P(mutex)If (waiting西V(count)P(meast)easten=easten-1if (easten =0) then v(mwest) /桥上没有从东往西的人,则允许西桥头的人上桥v(meast)end另一端程序如下,与之类似westtoeast():beginP(wait) P(mwest) westen=westen+1 if (westen =1) then p(meast) v(mwest)v(wait)p(count)西-东v(count)P(mwest