文章

158

粉丝

0

获赞

0

访问

29.5k

头像
2024年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年11月23日 18:38
阅读数 119


评分及理由

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

学生回答"是临界区,同时写入B发生冲突,出现混乱",正确指出了多个进程同时执行C1会导致数据冲突和不一致,与标准答案一致。得2分。

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

学生使用了三个信号量:empty=1、mutex=1、full=0,符合"尽可能少的信号量"要求。P1和P2的代码逻辑正确:

  • P1先检查缓冲区是否为空(P(empty)),然后获取互斥锁(P(mutex)),执行C1后释放互斥锁(V(mutex)),最后标记缓冲区已满(V(full))
  • P2先等待缓冲区满(P(full)),然后获取互斥锁(P(mutex)),执行C2后释放互斥锁(V(mutex)),最后标记缓冲区为空(V(empty))

这种实现正确解决了同步和互斥问题。得3分。

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

学生使用了两个信号量:empty=1、mutex=1。但是这里存在逻辑错误:

  • 题目要求B初始不为空,且执行C3时要求B非空
  • 学生代码中P1和P2都先执行P(empty),这意味着只有当empty=1(即缓冲区为空)时才能执行C3,这与题目要求"B非空时才能执行C3"相矛盾
  • 正确的做法应该只需要一个互斥信号量mutex,不需要empty信号量

由于逻辑错误,扣1分。得2分。

题目总分:2+3+2=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发