文章

61

粉丝

0

获赞

0

访问

1.5k

头像
2020年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年11月13日 16:22
阅读数 25


评分及理由

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

学生作答中使用了4个信号量mutexA、mutexB、mutexC、mutexD,初值均为0,这与标准答案中每个同步关系对应一个信号量的思路一致。虽然信号量命名不同(标准答案使用S_AC等更明确的命名),但这是允许的,不扣分。

在同步逻辑上:

  • 操作A完成后执行V(mutexA),操作B完成后执行V(mutexB)
  • 操作C需要P(mutexA)和P(mutexB)后才能执行,执行后V(mutexC)
  • 操作D完成后执行V(mutexD)
  • 操作E需要P(mutexC)和P(mutexD)后才能执行

这完全符合题目要求的同步关系:C必须在A和B完成后执行,E必须在C和D完成后执行。

主要问题:

  1. 代码结构不规范,将所有操作放在一个process()的while循环中,这在实际并发执行中是不正确的,应该使用cobegin/coend或类似结构让各操作并发执行。
  2. 存在多余的while(1)循环,这会导致操作重复执行,不符合题目要求的一次性执行。

考虑到核心同步逻辑完全正确,信号量设置和使用也正确,但代码结构存在明显问题,扣2分。

得分:5分

题目总分:5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发