文章

27

粉丝

12

获赞

0

访问

976

头像
2011年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年8月8日 22:35
阅读数 28

互斥资源:取号机(一次只有一位顾客领号),因此设置互斥信号量 mutex。
同步问题:顾客需要获得空座位等待叫号。营业员空闲时,将选取一位顾客并为其服务。空座位的有、无影响等待顾客的数量,顾客的有无决定了营业员是否能开始服务,因此分别设置信号量empty 和 full 来实现这一同步关系。另外,顾客获得空座位后,需要等待叫号和被服务。这样,顾客与营业员就服务何时开始又构成了一个同步关系,定义信号量 service 来完成这一同步过程。

```c
semaphore empty = 10; // 空座位的数量,初值为10
semaphore mutex = 1;  // 互斥使用取号机
semaphore full = 0;   // 已占座位的数量,初值为0
semaphore service = 0; // 等待叫号

void 顾客i() {
    P(empty);  // 等空位
    P(mutex);  // 申请使用取号机
    从取号机上取号();
    V(mutex);  // 释放取号机
    V(full);   // 通知营业员有新顾客
    P(service); // 等待营业员叫号
    接受服务();
}

void 营业员() {
    while(True) {
        P(full);     // 没有顾客则休息
        V(empty);    // 离开座位
        V(service);  // 叫号
        为顾客服务();
    }
}
```


评分及理由

(1)信号量定义及初值(满分2分)

得分:2分

理由:学生正确定义了所有必要的信号量(empty...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发