文章
73
粉丝
0
获赞
0
访问
6.4k
评分及理由
(1)信号量初值和含义(满分2分):得分1分。理由:学生定义了四个信号量,但mutex1和mutex2的含义描述不准确。mutex1应表示缓冲区互斥(但标准答案中mutex2用于单次互斥),mutex2用于控制连续取10件(但标准答案中mutex1用于此目的)。empty初值1000和full初值0正确,但含义描述基本正确(空容量和产品数量)。扣1分因为信号量含义分配错误。
(2)生产者进程操作(满分1分):得分0分。理由:生产者进程中,P(empty)和P(mutex)顺序正确,但"生产产品"应在P(empty)之前(标准答案中先生产再P(empty)),且这里mutex用于互斥,但学生代码中生产操作在互斥区内(错误,生产不应在互斥区内),这会导致效率问题但非逻辑错误。主要错误是缺少产品放入缓冲区的操作(代码中写的是"生产产品"在互斥区内,但实际应放入缓冲区),这是一个逻辑错误,扣1分。
(3)生产者与消费者同步操作(满分2分):得分1分。理由:生产者中P(empty)和V(full)同步操作正确,消费者中P(full)和V(empty)同步操作正确,但消费者中"消费产品"应在V(mutex)之后(标准答案中消费在互斥区外),这里学生代码将消费放在互斥区内,这虽不破坏同步但降低并发性,不扣分。扣1分因为生产者缺少放入缓冲区操作(同步依赖缓冲区操作,缺少则同步不完整)。
(4)消费者互斥操作(满分1分):得分1分。理由:学生使用mutex2控制连续取10件产品,P(mutex2)在for循环外,V(mutex2)在循环后,正确实现了连续取10件期间其他消费者阻塞,符合要求。
(5)控制消费者连续取产品数量(满分2分):得分2分。理由:for循环连续取10次,并使用mutex2信号量确保一个消费者连续取10件后其他消费者才能取,正确。
题目总分:1+0+1+1+2=5分
登录后发布评论
暂无评论,来抢沙发