文章

6

粉丝

93

获赞

0

访问

86

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


评分及理由

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

得分:1分

理由:学生定义了empty(初值1000或100,识别有误,但根据上下文应为1000)、mutex(初值1)和CP(初值0,应为full,但含义类似)。缺少控制消费者连续取10件的互斥信号量(如mutex1)。其中empty初值正确(缓冲区容量),但CP(应代表full)初值应为0而非未说明初值(识别中未明确,但根据代码推断为0,正确)。但缺少关键信号量,扣1分。

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

得分:1分

理由:生产者代码正确:先P(empty)检查空位,再P(mutex)互斥访问缓冲区,放入产品后V(mutex)释放锁,V(CP)(即V(full))增加产品计数。符合同步和互斥要求。

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

得分:2分

理由:消费者代码存在严重逻辑错误:①使用if(Count>=10)判断条件,但Count是共享变量,未受互斥保护(虽然外部有P(mutex),但条件判断在P(mutex)之前),可能导致多个消费者同时进入临界区,违反互斥;②连续取10件的逻辑未实现“一个消费者连续取10件后其他消费者才能取”的要求,因为if条件可能被多个消费者同时满足;③缺少对连续取10件的互斥控制(如标准答案的mutex1)。但代码中尝试用for循环取10次,且内部有P(CP)和V(empty)同步操作,部分思路正确。扣3分(逻辑错误扣2分,缺少信号量扣1分)。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发