文章
85
粉丝
0
获赞
2
访问
3.8k
评分及理由
(1)信号量定义(满分1分)
得分:1分。理由:学生定义了四个信号量(mutex、empty、even、odd),含义与标准答案一致(mutex用于互斥,empty表示缓冲区空单元数,even和odd分别用于同步偶数与奇数)。定义正确,得满分。
(2)P1进程伪代码(满分2分)
得分:1分。理由:学生代码中,P1先执行P(empty)和P(mutex),然后生成数并放入缓冲区(put()),但存在逻辑错误:在if-else分支中,无论奇偶都执行了put(),但标准答案中put()应在分支之前统一执行;此外,第二次识别代码中出现了冗余的if-else判断(重复判断奇偶),但根据误写规则(识别错误可能性),不扣分。主要错误是V(mutex)的位置:在第一次识别中,V(mutex)在if-else之后,正确;但第二次识别中,V(mutex)被错误地放在if分支内部(只针对偶数情况释放互斥锁),导致奇数情况未释放,这是一个逻辑错误(互斥锁未释放),扣1分。
(3)P2进程伪代码(满分2分)
得分:2分。理由:P2进程先P(odd)等待奇数信号,然后P(mutex)获取缓冲区互斥,执行getodd()取出奇数,再V(mutex)释放互斥锁,V(empty)增加空单元,最后countodd()计数。逻辑与标准答案一致,得满分。
(4)P3进程伪代码(满分2分)
得分:2分。理由:P3进程先P(even)等待偶数信号,然后P(mutex)获取缓冲区互斥,执行geteven()取出偶数,再V(mutex)释放互斥锁,V(empty)增加空单元,最后counteven()计数。逻辑与标准答案一致,得满分。
题目总分:1+1+2+2=6分
登录后发布评论
暂无评论,来抢沙发