文章

119

粉丝

0

获赞

1

访问

9.9k

头像
2014年计算机学科专业基础综合试题 - 第47题回答
操作系统
发布于2025年8月20日 16:48
阅读数 58


评分及理由

(1)信号量定义及初值(满分2分)

得分:2分

理由:学生定义了四个信号量,含义和初值正确。full=0表示初始产品数为0,empty=1000表示初始空位数为1000,mutex1=1用于缓冲区互斥,mutex2=1用于控制消费者连续取10次产品的互斥,与标准答案一致。

(2)生产者进程实现(满分3分)

得分:3分

理由:生产者进程正确使用P(empty)检查空位,P(mutex1)实现互斥访问缓冲区,放入产品后V(mutex1)释放锁,V(full)增加产品计数。同步和互斥操作完整正确。

(3)消费者进程实现(满分3分)

得分:1分

理由:消费者进程使用P(mutex2)控制连续取10次产品的互斥,循环结构正确。但存在逻辑错误:在循环内部,应先P(full)检查产品数量,再P(mutex1)获取缓冲区互斥锁。学生代码中先P(mutex1)再P(full),这可能导致死锁(例如当缓冲区无产品时,消费者持有mutex1锁等待full,但生产者无法获取mutex1锁来放入产品)。标准答案中先执行P(full)再P(mutex2)(此处mutex2相当于标准答案的mutex2,用于单次互斥),但学生将单次互斥锁误写为mutex1(实际应为mutex2),且顺序错误。扣2分:1分用于互斥锁顺序错误,1分用于互斥锁混淆(但根据误写规则,mutex1和mutex2可能因识别错误混淆,不额外扣分,但顺序错误是逻辑问题,必须扣分)。此外,消费者代码中“消费一个产品”应在释放锁之后执行,但学生代码中写在临界区内,这不会导致错误但降低效率,不扣分。

题目总分:2+3+1=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发