文章

100

粉丝

0

获赞

0

访问

10.6k

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

semaphore bowl = m; //碗的数量

semaphore chopstick[n]={1}; //筷子的使用情况

semaphore mutex = 1;//互斥使用筷子

process 哲学家 i{

while(true){

p(mutex);

p(chopstick[i]);

p(chopstick[(i+1)%n]);

p(bowl);

就餐;

v(mutex)

v(bowl);

v(chopstick[i]);

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

思考

}

}


评分及理由

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

得分:1分。理由:学生定义了bowl(初值m)和chopstick数组(初值均为1),这部分正确;但额外定义了mutex(初值1)用于互斥,这是不必要的,因为标准解法中不需要额外的互斥锁,且mutex的使用会导致性能下降(可能限制并发)。扣1分。

(2)P、V操作顺序部分(满分4分)

得分:2分。理由:学生先申请筷子再申请碗(P(chopstick)在P(bowl)之前),而标准答案先申请碗再申请筷子。这种顺序可能引发死锁:例如所有哲学家都先拿到一根筷子,但碗不足时,会相互等待导致死锁。此外,mutex的P操作包裹了筷子申请,但未包裹碗申请,这破坏了资源请求的原子性,可能加剧死锁风险。扣2分(顺序错误扣1分,mutex使用不当扣1分)。

(3)释放资源部分(满分2分)

得分:1分。理由:学生释放资源的顺序(先V(mutex)和V(bowl),再V(chopstick))基本正确,但mutex的释放过早(应在释放筷子前释放),且mutex本身是多余的。扣1分(因mutex多余且释放位置不理想)。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发