文章
986
粉丝
5
获赞
20
访问
246.4k

评分及理由
(1)得分及理由(满分8分)
学生答案存在多处逻辑错误和缺失,与标准答案相比,主要问题如下:
bowl=rand()%n; 将碗的数量设为随机值,这完全不符合题目要求(碗的数量为 m,且需与 n-1 比较取最小值以确保无死锁)。第二次识别中,bowl = n - 1; 虽然限制了数量,但未考虑 m 的限制(即碗的实际数量 m 可能小于 n-1),且未使用信号量 P/V 操作来初始化碗的信号量(标准答案应为 semaphore bowls = min(n-1, m);)。p(bowl) 和 v(bowl),但碗的信号量初始化方式错误(未定义为信号量并赋初值,且未考虑 m)。Process 哲学家i())。第一次识别中 CoBegin 和 CoEnd 位置错误(放在了循环内),第二次识别则完全缺失进程结构。综上,学生答案未能正确实现“防止死锁且使尽可能多哲学家同时就餐”的目标,核心逻辑(碗与筷子的同步互斥)存在严重错误。但考虑到部分正确点:使用了筷子信号量数组,并进行了 P/V 操作(尽管未完全正确),且第二次识别中尝试用碗信号量限制并发,给予少量分数。
得分:2分(满分8分)。
题目总分:2分
登录后发布评论
暂无评论,来抢沙发