文章

167

粉丝

0

获赞

1

访问

14.8k

头像
2009年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年9月17日 22:43
阅读数 5


评分及理由

(1)信号量定义(满分1分):学生正确定义了四个信号量:empty(初始值N)、mutex(初始值1)、odd(初始值0)、even(初始值0),含义与标准答案一致。得1分。

(2)P1进程实现(满分2分):学生代码中P1先执行P(empty)判断缓冲区空单元,再执行P(mutex)获取缓冲区互斥锁,然后执行put操作,之后释放互斥锁V(mutex),最后根据生成的数奇偶性触发对应信号量(V(odd)或V(even))。逻辑与标准答案完全一致,但注意学生代码中produce(x)在P(empty)之后,而标准答案中produce()在P(empty)之前,但produce操作不涉及共享资源,顺序不影响同步互斥逻辑,因此不扣分。得2分。

(3)P2进程实现(满分2分):学生代码中P2先执行P(odd)等待奇数信号,再执行P(mutex)获取缓冲区互斥锁,然后执行getodd(),之后释放互斥锁V(mutex),最后执行countodd()。但缺少V(empty)释放空单元,这是一个逻辑错误,会导致缓冲区空单元无法回收,生产者可能最终阻塞。扣1分。得1分。

(4)P3进程实现(满分2分):学生代码中P3先执行P(even)等待偶数信号,再执行P(mutex)获取缓冲区互斥锁,然后执行geteven(),之后释放互斥锁V(mutex),最后执行counteven()。同样缺少V(empty)释放空单元,逻辑错误,扣1分。得1分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发