2013 操作系统 同步问题设计 解答题
第 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 分。④其他答案,参照①~③的标准给分。