文章

10

粉丝

0

获赞

0

访问

499

头像
2025 年 5 月第 1 次 408 月考试卷 - 第46题回答
操作系统
发布于2025年7月23日 01:18
阅读数 27

semaphore empty = 10; //表示缸还能装多少桶
semaphore full = 0; //表示缸已经装了多少桶
semaphore mutex1 = 1; //表示对井的互斥使用
semaphore mutex2 = 1; //表示对缸的互斥使用
semaphore pail = 3; //表示可用桶数

入水(){
    while(1){
        P(empty);
        P(pail);
        P(mutex1);
        入井打水;
        V(mutex1);
        P(mutex2);
        水入缸;
        V(mutex2);
        V(pail);
        V(full);
    }
}

取水(){
    while(1){
        P(full);
        P(pail);
        P(mutex2);
        入缸取水;
        V(mutex2);
        V(pail);
        V(empty);
    }
}

 


评分及理由

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

得分:6分

理由:

  • 信号量定义正确(empty、full、mutex1、mutex2、pail),与标准答案一致,不扣分。
  • 入水流程基本正确,包括对empty、pail、mutex1、mutex2的P/V操作顺序正确,不扣分。
  • 取水流程存在逻辑错误:缺少对pail的P操作(在取水前应先申请桶),且V(pail)的顺序错误(应在取水后释放桶,而不是在V(empty)之前)。扣2分。
  • 整体思路正确,但取水部分的实现不完整,导致逻辑错误。

题目总分:6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发