文章

183

粉丝

0

获赞

0

访问

11.4k

头像
2024年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月5日 16:50
阅读数 45


评分及理由

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

得分:2分

理由:学生正确指出C1是临界区,并给出了正确的原因(P1和P2不能同时执行C1写操作,需要互斥)。这与标准答案的核心观点一致。

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

得分:1分

理由:学生定义了正确的信号量(mutex和empty),并设置了合理的初值(mutex=1,empty=0)。但在同步逻辑上存在严重错误。题目要求B为空时才能执行C1,B非空时才能执行C2。学生的代码中,P1先等待empty信号量(初值为0),这将导致P1立即阻塞,无法执行C1写入数据,整个流程无法启动。正确的同步逻辑应是:P1先检查缓冲区是否为空(可能需要一个信号量如empty,但初值应为1表示空),写入后通知P2缓冲区非空(如signal(full))。学生的代码逻辑颠倒了,导致死锁或无法满足题目要求。因此扣除大部分分数。

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

得分:2分

理由:学生正确识别出只需要一个互斥信号量(mutex=1)来保护对缓冲区的修改操作C3,并给出了P1和P2的正确互斥框架(wait(mutex)执行操作signal(mutex))。这是一个正确的解决方案。但存在以下瑕疵:1. 学生作答中P1和P2的函数内执行的操作写成了“执行C1”和“执行C2”,而题目要求是执行C3,这可能是识别错误或笔误。根据“禁止扣分”原则,若判断为误写则不扣分。2. 学生代码中包含了不必要的while(1)循环,题目只要求各执行一次,但此额外信息不影响核心逻辑正确性,不扣分。因此扣1分,主要因为代码中操作名称与题目要求不完全一致(C1/C2 vs C3),但考虑到可能是识别问题,且互斥逻辑正确,给予2分。

题目总分:2+1+2=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发