文章

7

粉丝

0

获赞

0

访问

763

头像
2025 年 6 月第 1 次 408 月考试卷 - 第45题回答
操作系统
发布于2025年8月22日 23:37
阅读数 105

(1)

P1(){
    wait(emptyA)   // 等待A空位
    wait(mutex)    // 申请互斥访问缓冲区
    // 生产A型产品并放入缓冲区
    signal(mutex)  // 释放互斥锁
    signal(fullA)  // 增加一个A产品
    // 耗时2时间单位
}

P2(){
    wait(emptyB)   // 等待B空位
    wait(mutex)    // 申请互斥访问缓冲区
    // 生产B型产品并放入缓冲区
    signal(mutex)  // 释放互斥锁
    signal(fullB)  // 增加一个B产品
    // 耗时1时间单位
}

C1(){
    wait(fullA)    // 等待A产品
    wait(mutex)    // 申请互斥访问缓冲区
    // 从缓冲区取出A型产品并消费
    signal(mutex)  // 释放互斥锁
    signal(emptyA) // 释放一个A空位
    // 耗时1时间单位
}

C2(){
    wait(fullB)    // 等待B产品
    wait(mutex)    // 申请互斥访问缓冲区
    // 从缓冲区取出B型产品并消费
    signal(mutex)  // 释放互斥锁
    signal(emptyB) // 释放一个B空位
    // 耗时2时间单位
}

(2)

  1. P1(最高优先级)先运行:生产第一个A(耗时2时间单位)。

    • 完成后,缓冲区:A=1, B=0;emptyA=1, emptyB=2, fullA=1, fullB=0。

    • 时间=2。

  2. P1继续(仍最高):生产第二个A(耗时2)。

    • 缓冲区:A=2, B=0;emptyA=0, emptyB=2, fullA=2, fullB=0。

    • 时间=4。

  3. P1想生产第三个A,但wait(emptyA)会阻塞(因为emptyA=0),所以P...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发