文章

267

粉丝

1101

获赞

1683

访问

136w

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

计算机考研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分

理由:学生正确使用了信号量来控制碗和筷子的资源,并且限制了最多允许n-1个哲学家同时用餐,符合题目要求。但是代码中存在一些语法错误和逻辑错误,例如信号量的定义和初始化不完整,取右筷子的写法有误(应为(chop[(i+1)%n]),且碗的信号量名称不一致(bowl和bow)。

(2)得分及理由

得分:2分

理由:学生正确地限制了同时用餐的哲学家数量,并且使用了碗和筷子的信号量来控制资源。但是代码中存在逻辑错误,例如取碗的顺序应该在取筷子之前,且信号量的释放顺序也有问题(max应该在最后释放)。

(3)得分及理由

得分:1分

理由:学生没有完全正确地实现哲学家进餐问题的解决方案。代码中存在多个逻辑错误,例如信号量的定义和初始化不完整,取筷子的顺序和释放顺序不正确,且没有考虑到碗的数量限制。

题目总分:2+2+1=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发