操作系统
2013-45
某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
cobegin
参观者进程 i:
{
...
进门;
...
参观;
...
出门;
...
}
coend请添加必要的信号量和 P、V(或 wait()、signal())操作,以实现上述过程中的互斥与同步。
要求写出完整的过程,说明信号量的含义并赋初值。
答案
(1) 信号量含义及初值:
- mutex:互斥信号量,用于控制出入口的互斥访问,初值为1。
- empty:同步信号量,表示博物馆可容纳的最大人数(空位数),初值为500。
(2) 进程代码:
cobegin
参观者进程i:
{
P(empty); // 申请空位
P(mutex); // 申请出入口互斥锁
进门;
V(mutex); // 释放出入口互斥锁
参观;
P(mutex); // 再次申请出入口互斥锁,准备出门
出门;
V(mutex); // 释放出入口互斥锁
V(empty); // 释放一个空位
}
coend