文章
17
粉丝
0
获赞
0
访问
1.3k
评分及理由
(1)信号量定义(满分1分)
得分:1分
理由:学生定义了四个信号量:empty(初始值为N)、odd(初始值为0)、even(初始值为0)、mutex(初始值为1),与标准答案一致,含义正确(empty控制空缓冲区单元,odd控制奇数同步,even控制偶数同步,mutex控制互斥)。定义完整且正确。
(2)P1进程伪代码(满分2分)
得分:2分
理由:P1进程首先生成数字(produce),然后P(empty)检查空单元,P(mutex)获取缓冲区互斥锁,执行put操作后V(mutex)释放锁,最后根据数字奇偶性V(even)或V(odd)通知对应消费者。逻辑与标准答案完全一致,包括信号量操作顺序和条件判断。
(3)P2进程伪代码(满分2分)
得分:2分
理由:P2进程先P(odd)等待奇数信号,然后P(mutex)获取互斥锁,执行getodd操作后V(mutex)释放锁,再V(empty)增加空单元,最后countodd()统计。逻辑正确,与标准答案一致。
(4)P3进程伪代码(满分2分)
得分:1分
理由:P3进程在第二次识别结果中缺少counteven()操作(但第一次识别结果中有),根据题目要求,P3应调用counteven()统计偶数个数。第二次识别结果中缺失该函数调用,属于逻辑错误(扣1分)。但第一次识别结果中有counteven(),根据规则“两次识别中一次正确则不扣分”,因此不扣分,得满分2分?但注意:第二次识别结果中P3部分结尾是“V(empty); } }”确实缺少counteven(),但第一次识别结果中P3有counteven()。根据规则3:“对学生作答进行了两次识别,只要其中有一次回答正确则不扣分”,因此这里不扣分,得2分?但严格来说,学生作答是同一份,两次识别结果可能都是对的(第一次有counteven,第二次没有,可能是识别错误)。根据规则4:“对于所有错误需要扣分的地方,根据上下文判断是否为误写,若是误写则不扣分”。这里第二次识别缺失counteven()很可能是识别错误(因为第一次有,且逻辑完整),因此判断为误写,不扣分。
最终得分:2分。
题目总分:1+2+2+2=7分
登录后发布评论
暂无评论,来抢沙发