文章
6
粉丝
93
获赞
0
访问
88
评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了empty=1000(正确)、mutex=1(正确,但缺少对消费者连续取10件的控制信号量),但CP信号量含义不明确(应表示产品数量,但初值应为0,学生未明确写出初值,识别中可能误写)。标准答案需要两个互斥信号量(mutex1和mutex2)和一个同步信号量(full),但学生使用了CP(类似full)和empty,且缺少控制连续取的信号量。扣1分。
(2)生产者进程实现(满分1分)
得分:1分
理由:生产者进程正确使用P(empty)和P(mutex)进行缓冲区和互斥访问,并执行V(CP)(相当于V(full)),同步和互斥逻辑正确,不扣分。
(3)消费者进程实现(满分5分)
得分:1分
理由:消费者进程试图实现连续取10件,但存在严重逻辑错误:①在if(count>=10)中直接使用P(mutex)但未释放,导致死锁;②else分支中再次P(mutex)会导致重复加锁;③V(mutex)在for循环内多次释放,破坏互斥;④缺少对缓冲区互斥的正确管理(应用单独互斥信号量保护单次取操作);⑤未实现“一个消费者连续取10件后其他消费者才能取”的语义(应用信号量mutex1控制)。扣4分。
题目总分:1+1+1=3分
总分计算:信号量部分得1分,生产者得1分,消费者得1分(因基本思路存在但错误较多),其余部分扣分。
登录后发布评论
暂无评论,来抢沙发