文章

63

粉丝

0

获赞

0

访问

13.4k

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

semaphore A = B = C = D = 0; // 实现前驱关系的信号量
CoBegin{
  A{
    完成操作A;
    V(A); // 通知操作A完成
  }

  B{
    完成操作B;
    V(B); // 通知操作B完成
  }

  C{
    P(A); // 等待操作A完成
    P(B); // 等待操作B完成
    完成操作C;
    V(C); // 通知操作C完成
  }

   D{
    完成操作D;
    V(D); // 通知操作D完成
  }

  E{
   P(C);// 等待操作C完成
   P(D); // 等待操作D完成
   完成操作E;
   }
}CoEnd

 


评分及理由

(1)信号量定义部分(满分1分)

得分:0.5分

理由:学生定义了4个信号量A、B、C、D,初值均为0,这基本正确。但写法"semaphore A = B = C = D = 0"在语法上不够规范,应该分别定义每个信号量。考虑到信号量数量和初值设置正确,扣0.5分。

(2)进程A、B、D的实现(满分2分)

得分:2分

理由:进程A、B、D的实现完全正确,都是先执行操作,然后通过V操作通知后续进程,符合要求。

(3)进程C的实现(满分2分)

得分:2分

理由:进程C通过P(A)和P(B)等待A和B完成,然后执行C操作,最后V(C)通知E进程,逻辑完全正确。

(4)进程E的实现(满分2分)

得分:2分

理由:进程E通过P(C)和P(D)等待C和D完成,然后执行E操作,逻辑完全正确,实现了E必须在C和D完成后执行的约束。

题目总分:0.5+2+2+2=6.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发