文章
141
粉丝
0
获赞
3
访问
17.8k

评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了chopstick数组信号量(初值1)和bowl(初值m),但缺少对可用进餐名额信号量的正确定义。标准答案中应使用bowls信号量(初值为min(n-1, m))来限制同时进餐的哲学家数量,而学生定义了M = min{bowl, n}(其中bowl为m),但n应为n-1(因为最多允许n-1人同时进餐)。此外,学生将M初值设为min(m, n),但n错误(应为n-1),且未正确关联碗的数量(bowl变量未在信号量中使用)。但部分正确(定义了筷子信号量),故扣1分。
(2)P、V操作顺序(满分4分)
得分:2分
理由:学生操作顺序为P(M) -> P(筷子) -> 进餐 -> V(M) -> V(筷子)。该顺序能避免死锁(因先限制进餐人数),但存在以下问题:① M的V操作在释放筷子之前,这可能导致其他哲学家过早获得进餐名额但无法获取筷子,但实际影响较小;② 标准答案中V(bowls)应在释放筷子之后,但学生顺序相反(先V(M)后V(筷子)),这不符合资源释放的典型顺序(但不会导致错误)。主要错误在于M的初值定义错误(min(m, n)而非min(m, n-1)),导致同步逻辑不精确。因思路正确(通过信号量限制进餐人数)且避免了死锁,但实现有缺陷,扣2分。
(3)进程结构及完整性(满分2分)
得分:1分
理由:学生给出了哲学家进程的基本结构(循环、思考、进餐),但存在细节错误:① 进程编号错误(写为P1()而非哲学家i);② 取筷子时使用固定模5(应为%n),但n≥3,识别中可能误写(根据上下文判断为误写,不扣分);③ 思考位置在操作之后(标准答案在循环开头),但不影响正确性。因整体结构完整但有个别误写,扣1分。
题目总分:1+2+1=4分
登录后发布评论
暂无评论,来抢沙发