文章

169

粉丝

0

获赞

0

访问

8.3k

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

semaphore  empty=10,mutex=1,num;

cobegin
process 顾客i {

    p(mutex)

    p(empty);

    v(mutex);

 

    p(mutex);
    从取号机获得一个号码;

      v(num);

     v(mutex);
    等待叫号;

   p(mutex);

    v(empty);

   v(mutex);
    获得服务;
}
process 营业员 {
    while (TRUE) {

        p(num);
        叫号;
        为顾客服务;
    }
}
coend


评分及理由

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

学生定义了三个信号量:empty=10(表示空闲座位数,正确)、mutex=1(互斥信号量,正确)、num(未赋初值,错误)。缺少关键信号量:用于同步顾客等待叫号和营业员叫号的信号量(如标准答案中的full或service_i),且num未赋初值(应为0)。扣1分。

得分:1分(满分2分)

(2)顾客进程实现(满分3分)

学生代码中:
- 使用P(mutex)和P(empty)保护座位资源,但顺序错误(应先P(empty)再P(mutex),否则可能死锁)。扣0.5分。
- 取号机部分:使用P(mutex)保护取号机(正确),但未专门定义取号机互斥信号量(标准答案中为machine),这里用mutex代替可能与其他互斥操作冲突(逻辑错误)。扣1分。
- 缺少对座位计数的同步操作(如V(full)),导致营业员无法感知有顾客等待。扣1分。
- 等待叫号部分:错误使用P(mute...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发