文章

35

粉丝

0

获赞

1

访问

4.6k

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

计算机考研408统考历年真题及答案解析

Semaphore chopstick={1,1,....1}//n个筷子

Semaphore max=n-1//最多允许n-1个哲学家用餐

Semaphore bowl=min(m,n-1)//碗比人少时,保证每个用餐的哲学家都有碗可用

p(max);

p(chop[i]);//取左筷子

p((chop[i]+1)%n);//取右筷子

p(bow);

用餐;

v(chop[i]);

v((chop[i]+1)%n);

v(bowl);

v(max);

思考;


评分及理由

(1)信号量定义(满分2分)

得分:2分

理由:学生正确定义了三个信号量(chopstick、max、bowl),并正确初始化了它们的值。其中,chopstick信号量数组的初始值为1,表示每根筷子初始可用;max信号量的初始值为n-1,表示最多允许n-1个哲学家同时用餐;bowl信号量的初始值为min(m, n-1),表示碗的数量限制。这部分完全符合标准答案的要求。

(2)信号量操作顺序(满分4分)

得分:2分

理由:学生在信号量操作顺序上存在逻辑错误。标准答案中,首先获取碗(bowls),然后获取左右筷子。而学生的代码中,首先获取max信号量,然后获取左右筷子,最后获取bowl信号量。这种顺序可能导致死锁,因为max信号量的限制可能会阻止哲学家获取碗,从而无法释放筷子。此外,学生在获取右筷子时使用了错误的语法((chop[i]+1)%n),应为chopstick[(i+1)%n]。这部分扣2分。

(3)信号量释放(满分2分)

得分:2分

理由:学生在释放信号量时顺序正确,先释放筷子,再释放碗,最后释放max信号量。这部分完全符合标准答案的要求。

题目总分:2+2+2=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发