文章

327

粉丝

40

获赞

2

访问

39.7k

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

(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)(理由正确)

两个错误都正确识别并给出了正确修改,扣0分。

得分:4分

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

学生回答:

  • 正确指出"不可以"(1分)
  • 正确说明原因是newSwap()不是原子性的(1分)
  • 正确说明swap指令是原子性的(1分)

虽然学生没有像标准答案那样详细分析并发执行的具体时序问题,但核心要点都已涵盖,理由充分正确。

得分:3分

题目总分:4+3=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发