文章
167
粉丝
0
获赞
0
访问
10.9k

评分及理由
(1)信号量含义和初值(满分2分)
得分:2分
理由:学生定义了四个信号量,empty初值1000表示缓冲区空位数,full初值0表示产品数,mutex1初值1用于缓冲区互斥,mutex2初值1用于控制消费者连续取10件产品的互斥,这些含义和初值都正确。
(2)生产者进程实现(满分3分)
得分:3分
理由:生产者进程先P(empty)判断是否有空位,再P(mutex1)互斥访问缓冲区,然后放入产品,最后V(mutex1)释放互斥锁和V(full)增加产品计数,这些操作顺序正确,实现了生产者之间的互斥和生产者与消费者之间的同步。
(3)消费者进程实现(满分3分)
得分:2分
理由:消费者进程使用mutex2控制连续取10件产品的互斥是正确的,在循环内先P(full)判断是否有产品,再P(mutex1)互斥访问缓冲区,然后取产品,最后V(mutex1)释放互斥锁和V(empty)增加空位数,这些操作顺序正确。但是,循环条件"while (n < 10)"会导致消费者连续取10件产品,这与题目要求的"从缓冲区连续取出10件产品"相符,但标准答案使用的是for循环,这只是实现方式的差异,思路正确不扣分。不过,学生在循环内没有进行产品消费的操作,这是一个小的逻辑缺陷,扣1分。
题目总分:2+3+2=7分
登录后发布评论
暂无评论,来抢沙发