文章

63

粉丝

0

获赞

0

访问

13.4k

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

semaphore mutex = 1;  // 对铁锹的使用需要互斥
semaphore pits  = 3;  // 甲还能挖洞的数量
sempahore empty = 0;  // 可以使用的树坑数量
sempahore water = 0;  // 需要浇水的水苗数量

甲() {
    while (1) {
        wait(pits);     // 最多只能挖三个未被乙使用的坑
        wait(mutex);    // 占用铁锹
        挖树坑;
        signal(mutex);  // 释放铁锹
        V(empty);       // 通知乙可以放树苗和填土了
    }
}

乙() {
    while (1) {
        wait(empty);     // 等待到有树坑为止
        wait(mutex);     // 占用铁锹
        放树苗、填土;
        signal(mutex);   // 释放铁锹
        signal(pits);    // 通知甲可以继续挖坑了
        signal(waiter);  // 通知丙可以浇水了
    }
}

丙() {
    while (1) {
        wait(water);
        浇水;
    }
}

评分及理由

(1)信号量定义得分及理由(满分2分)

得分:1分

理由:学生定义了4个信号量,与标准答案一致,功能正确。但存在两个拼写错误:sempahore 应改为 semaphorewaiter 应改为 water。由于信号量功能定义正确,扣1分。

(2)甲进程代码得分及理由(满分2分)

得分:2分

理由:甲进程逻辑完全正确,通过wait(pits)控制挖坑数量不超过3,使用mutex正确保护铁锹资源,signal(empty)通知乙进程,与标准答案一致。

(3)乙进程代码得分及理由(满分2分)

得分:1分

理由:乙进程整体逻辑正确,但存在一个拼写错误:signal(waiter) 应改为 signal(water)。由于这是明显的拼写错误但逻辑正确,扣1分。

(4...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发