文章
119
粉丝
0
获赞
1
访问
9.1k
评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了碗的信号量(pouls,应为bowls)初值为m,正确表示了碗的数量限制。但筷子信号量使用mutex数组,初值为1,正确表示了每根筷子的互斥访问。然而,标准答案中碗的信号量初值应为min(m, n-1),而学生直接使用m,未考虑n-1的限制,这是一个逻辑错误(可能导致死锁或资源分配不合理)。扣1分。
(2)P、V操作使用(满分4分)
得分:3分
理由:学生使用P(pouls)获取碗,然后通过奇偶判断分别申请左右筷子(避免死锁策略正确),最后释放筷子和碗。但释放操作在第一次识别中存在错误(if分支中V(pouls)位置不一致),第二次识别中修正为统一释放,正确。然而,碗的信号量未按min(m, n-1)初始化,但P/V操作顺序正确,扣1分(因初值错误影响整体逻辑)。
(3)防止死锁与最大化就餐(满分2分)
得分:1分
理由:学生通过奇偶性调整筷子申请顺序(奇数先右后左,偶数先左后右),有效防止死锁,符合要求。但碗的资源限制未考虑n-1(最多允许n-1人同时就餐),可能导致资源分配过多(如m>n-1时碗信号量初值应为n-1),这是一个逻辑错误。扣1分。
题目总分:1+3+1=5分
登录后发布评论
暂无评论,来抢沙发