文章
449
粉丝
0
获赞
0
访问
87.3k

评分及理由
(1)信号量定义得分及理由(满分2分)
得分:2分
理由:学生定义了四个信号量,含义和初值都正确。empty=1000表示缓冲区初始空位数量,full=0表示初始产品数量,mutex1=1用于生产者与消费者互斥访问缓冲区,mutex2=1用于保证消费者连续取10件的互斥,这些定义与标准答案一致。
(2)生产者进程实现得分及理由(满分2分)
得分:2分
理由:生产者进程实现正确。先P(empty)检查缓冲区是否有空位,再P(mutex1)互斥访问缓冲区,放入产品后V(mutex1)释放互斥锁,最后V(full)增加产品计数,完全符合生产者-消费者模型。
(3)消费者进程实现得分及理由(满分4分)
得分:3分
理由:消费者进程基本正确,但存在一个逻辑错误。学生使用mutex2保证一个消费者能连续取10件产品,这符合题目要求。但在循环内部,对full和mutex1的P操作顺序可能导致死锁。标准做法应该是先P(full)检查产品数量,再P(mutex1)获取缓冲区互斥锁。学生的顺序是先P(mutex2)然后循环内先P(full)再P(mutex1),这个顺序在本题环境下不会导致死锁,因为mutex2保护的是整个10次取货过程,而不是单次操作。但严格来说,在单次操作中应该先检查资源再获取互斥锁,这里扣1分。
题目总分:2+2+3=7分
登录后发布评论
暂无评论,来抢沙发