文章
21
粉丝
0
获赞
2
访问
1.1k
评分及理由
(1)信号量定义得分及理由(满分2分)
得分:2分
理由:学生定义了三个信号量mutex、full和empty,含义和初值正确(mutex=1用于互斥,full=0表示产品数量,empty=1000表示空位数)。信号量定义完整且初值正确,符合题目要求。
(2)生产者进程实现得分及理由(满分3分)
得分:3分
理由:生产者进程实现正确。先P(empty)判断空位,再P(mutex)互斥访问缓冲区,放入产品后更新rear指针,然后V(mutex)释放互斥锁,最后V(full)增加产品计数。同步和互斥操作顺序正确,与标准生产者模型一致。
(3)消费者进程实现得分及理由(满分3分)
得分:0分
理由:消费者进程存在严重逻辑错误:
1. 在进入循环前连续执行10次P(full),这会导致死锁。如果缓冲区产品不足10个,进程会阻塞在P(full)上,但其他消费者无法获取mutex来取产品。
2. 使用"取走head→(head+10)%1000里的10件产品"的批量操作方式,不符合题目要求的"连续取出10件产品"的进程同步要求(题目要求的是单个消费者连续取10次,期间其他消费者不能取)。
3. 批量操作后连续执行10次V(empty),但实际只进行了一次互斥访问,无法保证操作的原子性。
4. 缺少控制消费者连续取10件的互斥机制(如标准答案中的mutex1)。
题目总分:2+3+0=5分
登录后发布评论
暂无评论,来抢沙发