文章

246

粉丝

40

获赞

2

访问

12.6k

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

(1)

第一个错误是 退出区 lock = true; 因为lock是共享变量,false代表可以进入临界区,应该设置为false,否则其他线程会一直无法进入临界区

第二个错误是 进入区的 if(key == true) 应该改为 while(key == true),否则不满足忙则等待,所有进程都能走到临界区,无法实现互斥访问

(2)

不可以,因为newSwap()这个方法不是原子性的,当多个进程并发访问的时候,可能会得到相同的lock = false的值,有可能会同时进入临界区。而swap指令是原子性的指令,不同进程不会同时得到lock


评分及理由

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

学生正确指出了两处错误:退出区的"lock = TRUE"应改为"lock = FALSE",以及进入区的"if (key == TRUE)"应改为"while (key == TRUE)"。理由充分,与标准答案一致。但学生未明确说明修改后的语句(如"swap key, lock"本身是否需要修改),不过根据上下文,学生隐含认可该语句正确。因此扣0.5分(未明确说明所有语句的正确性)。得3.5分。

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

学生正确回答"不可以",并指出原因:newSwap()不是原子操作,可能导致多个进程同时进入临界区。理由与标准答案一致(并发执行时无法保证原子交换)。但未详细举例说明(如标准答案中的执行序列),不过核心观点正确。因此扣0.5分(未展开说明)。得2.5分。

题目总分:3.5+2.5=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发