某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。

某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
cobegin
参观者进程i:
{ …
进门;

参观;

出门;

}
coend
请添加必要的信号量和P、V(或wait()、signal())操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
解题过程具体如下:

semaphore mutex=1;//互斥的来使用出入口
semaphore empty=500;//博物馆中的空位数
 
void visitor()
{
    while(true)
    {
        p(empty) ;		//当博物馆还有空位的时才能进入博物馆
 
        p(mutex);
        进门;			//进门操作是互斥的,一次只允许一个人进去,所以用PV操作包起来
        v(mutex);
        
 		参观;
 		
        p(mutex);
        出门; 			//这个操作也是互斥的,一次只允许一个人出去
        v(mutex);
 
        v(empty);		//出门后释放一个空位
    }
 
}

你可能感兴趣的:(操作系统练习题,操作系统)