文章

50

粉丝

0

获赞

0

访问

2.2k

头像
2025 年 6 月第 1 次 408 月考试卷 - 第45题回答
操作系统
发布于2025年9月14日 17:25
阅读数 14

(1)

P1{
P(mutex);
P(emptyA);
V(fullA);

V(mutex);
}
 

P2{

P(mutex);
P(emptyB);
V(fullB);

V(mutex);
}
C1{

P(mutex);
P(fullA)
V(emptyA)
V(mutex)

}
 

C2{

P(mutex);
P(fullB)
V(emptyB)
V(mutex)

}
(2)总耗时18 个时间单位


评分及理由

(1)得分及理由(满分5分)

学生答案中,各进程的同步互斥操作伪代码存在多处逻辑错误:

  • P1和P2进程中缺少生产产品的操作(生产耗时未体现),且V(fullA)和V(fullB)操作位置错误(应在放入产品后执行,但学生代码中未体现放入操作)。
  • C1和C2进程中缺少消费产品的操作(消费耗时未体现),且V(emptyA)和V(emptyB)操作位置错误(应在取出产品后执行,但学生代码中未体现取出操作)。
  • 所有进程的P(mutex)操作均放在P(emptyA)/P(emptyB)或P(fullA)/P(fullB)之前,这可能导致死锁(例如当缓冲区满时,生产者先获取mutex再申请空位,若空位不足则阻塞并持有mutex,导致消费者无法进入缓冲区消费)。标准答案中应先检查资源信号量(emptyA/emptyB或fullA/fullB)再获取互斥锁,以避免死锁。
  • 代码未体现循环结构(repeat...until),无法完成3次生产和消费。

因此,该部分答案不符合同步互斥的正确逻辑,扣分严重。但学生基本使用了信号量(尽管顺序错误),给予部分分数。得分:1分(满分5分)。

(2)得分及理由(满分2分)

学生答案中直接给出总耗时18个时间单位,与标准答案一致。虽然第(1)部分代码错误,但耗时计算结果正确,因此不扣分。得分:2分(满分2分)。

题目总分:1+2=3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发