文章

179

粉丝

0

获赞

0

访问

9.1k

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


评分及理由

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

学生答案中指出了两个错误:① 共享变量第一行 "Bool lock = FALSE" 存在错误,应改为 "while (!lock)";② 退出区 "lock = TRUE" 错误,应改为 "lock = FALSE"。

对于第一个错误,学生的修改建议 "while (!lock)" 与标准答案 "while (key == TRUE)" 不一致,但逻辑上等价(因为 key 初始为 TRUE,且通过 swap 与 lock 交换值),思路正确,不扣分。

对于第二个错误,学生正确指出退出区应改为 "lock = FALSE",与标准答案一致。

但学生未明确指出进入区中的 if 语句应改为 while 语句(仅通过 "while (!lock)" 间接涉及),且未完整修正代码。根据标准答案,需要修改两处:① while (key == TRUE) swap key, lock; ② lock = FALSE;。学生只完整修正了第二处,第一处修正不完整,扣2分。

得分:2分

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

学生正确回答 "不可以",并指出原因是 "swap 是原子操作,而 newSwap() 在多线程运行时能导致公共资源访问时被修改,两个操作也修改访问资源时可能出现错误"。

该理由与标准答案一致,即 newSwap() 不是原子操作,可能导致多个线程同时进入临界区。学生答案清晰正确。

得分:3分

题目总分:2+3=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发