文章

60

粉丝

6

获赞

0

访问

6.5k

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

计算机考研408统考历年真题及答案解析
(1)信号量定义​​
semaphore mutex_well = 1;   // 水井互斥(一次仅一个桶取水)
semaphore mutex_tank = 1;   // 水缸操作互斥(入水/取水不可同时进行)
semaphore empty = 10;       // 水缸剩余空位(初始可容纳10桶)
semaphore full = 0;         // 水缸当前水量(初始为0)
semaphore bucket = 3;       // 可用水桶数量(总共有3个)
​​(2)小和尚打水入缸算法​​
void young_monk() {
    while (true) {
        P(empty);           // 等待水缸有空位
        P(bucket);          // 申请一个水桶
        P(mutex_well);      // 占用水井
        从井中打水();        // 临界区:取水操作
        V(mutex_well);      // 释放水井
        P(mutex_tank);      // 申请操作水缸
        将水倒入缸中();      // 临界区:入水操作
        V(mutex_tank);      // 释放水缸
        V(bucket);          // 归还水桶
        V(full);            // 通知水量增加
    }
}
​​(3)老和尚从缸取水算法​​
void old_monk() {
    while (true) {
        P(full);            // 等待水缸有水
        P(bucket);          // 申请一个水桶
        P(mutex_tank);      // 申请操作水缸
        从缸中取水();        // 临界区:取水操作
        V(mutex_tank);      // 释放水缸
        V(bucket);          // 归还水桶
        V(em...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发