文章

412

粉丝

1102

获赞

1722

访问

141w

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

计算机考研408统考历年真题及答案解析
semaphore bowls = min(n-1, m);    // 可用碗数量即可进餐名额数量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(bowls);
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(bowls);
    }
}
CoEnd

如上所述


评分及理由

(1)得分及理由

得分:8分

理由:学生的作答完全符合标准答案中的方法一。正确使用了信号量`bowls`和`chopsticks`,并且通过`P`和`V`操作实现了哲学家进餐问题的同步与互斥。代码逻辑清晰,没有逻辑错误,且能够防止死锁现象的发生。

(2)得分及理由

得分:0分

理由:学生没有提供其他方法的实现,因此无法对其他方法进行评分。

(3)得分及理由

得分:0分

理由:学生没有提供其他方法的实现,因此无法对其他方法进行评分。

题目总分:8+0+0=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发