文章
95
粉丝
50
获赞
1
访问
12.3k

评分及理由
(1)信号量定义及初始化(满分2分)
学生答案中定义了lock=1、bowl=m、chopsticks=2三个信号量。其中bowl=m正确表示了碗的数量,但chopsticks=2错误(应为n根筷子),lock信号量的使用不符合题目要求(标准答案通过限制碗的数量来防止死锁)。扣1分。
(2)资源获取顺序(满分3分)
学生答案中的资源获取顺序为:先拿碗后取筷子,这个顺序与标准答案一致。但是使用lock信号量将整个取餐具过程原子化,虽然能防止死锁但会降低并发度,不符合"使尽可能多的哲学家同时就餐"的要求。扣1分。
(3)死锁处理(满分3分)
学生答案通过lock=1的信号量来破坏请求和保持条件,这种方法虽然能防止死锁,但是效率低下,同一时间只能有一位哲学家就餐,没有充分利用m个碗和n-1个并发就餐的可能性。标准答案通过限制碗的数量为min(m,n-1)来既防止死锁又提高并发度。扣2分。
题目总分:1+2+1=4分
登录后发布评论
暂无评论,来抢沙发