文章

281

粉丝

40

获赞

2

访问

24.2k

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

(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分。但第一个错误的修改建议(将 if 改为 while 并判断 lock)存在逻辑错误:原代码中 key 初始为 TRUE,通过 swap 与 lock 交换值,正确做法应是循环检查 key 是否为 TRUE(即交换后 lock 的旧值),而非直接判断 lock。学生修改为 while(lock == FALSE) 会错误地允许多个线程同时进入临界区(例如当 lock 为 FALSE 时,线程直接进入,违反互斥)。标准答案要求 while(key == TRUE)。因此,第一个错误修改错误,扣2分。本小题得2分(第二个错误正确,第一个错误部分正确但修改错误)。

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

学生正确回答“不可以”,并指出原因是 swap 是原子指令而 newSwap 不具备原子性,得2分。但理由中“可能会违反忙则等待的条件”表述不准确(实际问题是违反互斥,而非忙等),扣1分。本小题得2分。

题目总分:2+2=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发