第 45 题
某博物馆最多可以容纳 500 人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
cobegin
参观者进程 i:
{
...
进门;
...
参观;
...
出门;
...
}
coend
请添加必要的信号量和 P、V(或 wait()、signal())操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
出入口一次仅允许一个人通过,设置互斥信号量 mutex, 初值为 1。博物馆最多可同时容纳 500 人,故设置信号量 empty, 初值为 500。
semaphore empty = 500;
semaphore mutex = 1;
visitor() {
P(empty);
P(mutex);
进门;
V(mutex);
参观;
P(mutex);
出门;
V(mutex);
V(empty);
}
【评分说明】①信号量初值给 1 分,说明含义给 1 分,两个信号量的初值和含义共 4 分。②对 mutex 的 P、V 操作正确给 2 分。③对 empty 的 P、V 操作正确给 1 分。④其他答案,参照①~③的标准给分。