文章

85

粉丝

0

获赞

2

访问

3.9k

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


评分及理由

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

得分:1分

理由:学生定义了四个信号量mutex1、mutex2、full和empty,初值设置正确(mutex1=1, mutex2=1, full=0, empty=1000)。但信号量含义描述有误:mutex1应实现生产者与消费者之间的互斥(但实际应针对缓冲区访问),而mutex2应实现消费者连续取10件的互斥(但学生描述为“多个消费者之间互斥”不准确)。标准答案中mutex1用于控制消费者连续取10次,mutex2用于单次缓冲区互斥。含义描述部分错误,扣1分。

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

得分:0分

理由:生产者进程中,学生先执行P(empty)再执行P(mutex1),但mutex1被错误用于生产者与消费者的互斥(实际应为缓冲区互斥)。标准答案中生产者使用mutex2(对应单次缓冲区互斥)进行保护,而学生使用mutex1,且未正确实现缓冲区互斥(因为mutex1在消费者中也被使用,可能导致死锁或互斥不完整)。逻辑错误,扣1分。

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

得分:1分

理由:消费者进程中,学生使用P(mutex2)实现连续取10次的互斥(正确),但内部使用P(mutex1)进行单次缓冲区互斥(错误,因为mutex1在生产者中也被使用,且未专用于缓冲区)。标准答案使用mutex2进行单次互斥。此外,消费者内部循环结构正确(连续取10次),但同步操作P(full)和V(empty)顺序正确。由于单次互斥信号量使用错误(mutex1而非mutex2),扣2分。

(4)同步与互斥整体(满分2分)

得分:0分

理由:学生答案中,生产者与消费者的同步操作(P(empty)/V(full)和P(full)/V(empty))基本正确,但互斥实现存在严重问题:mutex1被同时用于生产者和消费者的缓冲区访问,而mutex2被用于消费者连续取10次的互斥,但标准答案中mutex2应用于单次缓冲区互斥。这会导致多个生产者或消费者同时访问缓冲区(因为mutex1未正确互斥),且消费者连续取10次的互斥(mutex2)可能阻塞其他消费者但未保护缓冲区。逻辑错误,扣2分。

题目总分:1+0+1+0=2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发