文章

281

粉丝

40

获赞

2

访问

24.2k

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

(1) 

有两个错误

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

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

(2)

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

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


评分及理由

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

学生指出了两个错误:第一个是进入区的条件判断错误,第二个是退出区的赋值错误。对于第二个错误,学生正确指出退出区应修改为lock = FALSE,得2分。但第一个错误的修改建议存在逻辑问题:学生建议改为while(lock == FALSE) swap key, lock,这会导致线程在lock为FALSE时(即未上锁)执行交换,但交换后key变为FALSE而lock变为TRUE,此时while条件lock == FALSE不再成立,线程会退出循环进入临界区,但此时lock为TRUE(已上锁),其他线程无法进入,这实际上能实现互斥,但逻辑与标准答案不同。然而,标准答案要求使用key作为循环条件(while(key == TRUE)),因为key的初始值为TRUE,通过交换后检查key是否为FALSE来判断是否获得锁。学生的修改虽然能实现互斥,但不符合题目要求(使用swap和key变量),且没有正确理解key的作用(key是局部变量,用于交换和判断),因此扣1分。此外,学生没有明确说明原错误语句(if条件)为何错误(应改为循环而非条件判断),扣1分。本部分得2分(退出区修改正确得2分,进入区修改错误扣2分)。

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

学生正确回答“不可以实现互斥”,并指出原因是swap指令是原子操作而newSwap不具备原子性,得2分。学生补充说明“可能会违反忙则等待的条件”,这虽正确但不够具体(应说明并发执行newSwap可能导致多个线程同时进入临界区),不扣分但不额外加分。本部分得2分(未详细解释原子性破坏的具体后果,扣1分)。

题目总分:2+2=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发