文章

19

粉丝

0

获赞

0

访问

595

头像
【250518年】408计算机统考真题模拟考试 - 第46题答案笔记
操作系统
发布于2025年5月27日 15:15
阅读数 78

计算机考研408统考历年真题及答案解析
// 初始化信号量
semaphore empty_buckets = 3;   // 空桶数
semaphore full_buckets = 0;    // 满桶数
semaphore water_in_cup = 0;    // 水缸内水量(0~10)
semaphore mutex_buckets = 1;   // 互斥

// 小和尚(提水)
procedure 小和尚提水() {
    while (true) {
        P(empty_buckets); // 等待空桶
        P(mutex_buckets); // 保护变量
        if (water_in_cup < 10) {
            water_in_cup += 1; // 增加水
            V(full_buckets);   // 满桶数增加
        } else {
            // 水缸已满,不能再提水,等到有空桶
            // 这里可以考虑等待后再继续
            V(mutex_buckets);
            V(empty_buckets);
            continue; // 重新等待
        }
        V(mutex_buckets);
    }
}

// 老和尚(取水)
procedure 老和尚取水() {
    while (true) {
        P(full_buckets);  // 等待有满桶
        P(mutex_buckets); // 保护变量
        // 取走一桶水
        water_in_cup -= 1;
        V(empty_buckets); // 空桶加一
        V(mutex_buckets);
        // 老和尚喝水
    }
}

 


评分及理由

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

学生答案中存在以下问题:

  1. 信号量命名不规范,未体现水井和水缸的互斥访问(扣1分)
  2. 缺少水井互斥信号量mutex_wel...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发