文章

281

粉丝

40

获赞

2

访问

24.3k

头像
2023年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年9月11日 20:19
阅读数 63

(1) 

有两个错误

第一个错误,if(key == true)这句话错了,需要判断的不是key,是lock。应该修改为if(lock == false)

第二个错误是lock = true,退出区需要把lock 置为false,让其他进程可以进入。应该修改为 lock = false;

(2)

不可以,因为swap指令是原子指令,需要保证原子性,newswap不具备原子性

可能会违反忙则等待的条件


评分及理由

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

学生指出有两个错误,并正确识别了退出区的错误(lock = TRUE应改为lock = FALSE),得2分。但进入区的修改建议(将if(key == TRUE)改为if(lock == false))是错误的,因为标准答案要求使用轮询(while循环)和swap指令实现互斥,而学生的修改不仅未使用轮询,还错误地判断了lock的值(lock为FALSE时应允许进入,但直接判断lock无法保证原子性检查)。此处逻辑错误扣2分。因此,本部分得2分(退出区修改正确,进入区修改错误)。

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

学生正确指出swap指令是原子操作,而newSwap函数不具备原子性,得1分;并提到“可能会违反忙则等待的条件”,这间接反映了互斥可能被破坏,但未详细解释原因(如并发执行newSwap时非原子操作导致多个线程同时进入临界区)。标准答案要求说明原子交换的必要性和并发冲突的具体原因,学生回答不够完整,扣2分。因此,本部分得1分。

题目总分:2+1=3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发