文章

85

粉丝

0

获赞

2

访问

3.8k

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


评分及理由

(1)信号量定义(满分1分)

得分:1分。理由:学生定义了四个信号量(mutex、empty、even、odd),含义与标准答案一致(mutex用于互斥,empty表示缓冲区空单元数,even和odd分别用于同步偶数与奇数)。定义正确,得满分。

(2)P1进程伪代码(满分2分)

得分:1分。理由:学生代码中,P1先执行P(empty)和P(mutex),然后生成数并放入缓冲区(put()),但存在逻辑错误:在if-else分支中,无论奇偶都执行了put(),但标准答案中put()应在分支之前统一执行;此外,第二次识别代码中出现了冗余的if-else判断(重复判断奇偶),但根据误写规则(识别错误可能性),不扣分。主要错误是V(mutex)的位置:在第一次识别中,V(mutex)在if-else之后,正确;但第二次识别中,V(mutex)被错误地放在if分支内部(只针对偶数情况释放互斥锁),导致奇数情况未释放,这是一个逻辑错误(互斥锁未释放),扣1分。

(3)P2进程伪代码(满分2分)

得分:2分。理由:P2进程先P(odd)等待奇数信号,然后P(mutex)获取缓冲区互斥,执行getodd()取出奇数,再V(mutex)释放互斥锁,V(empty)增加空单元,最后countodd()计数。逻辑与标准答案一致,得满分。

(4)P3进程伪代码(满分2分)

得分:2分。理由:P3进程先P(even)等待偶数信号,然后P(mutex)获取缓冲区互斥,执行geteven()取出偶数,再V(mutex)释放互斥锁,V(empty)增加空单元,最后counteven()计数。逻辑与标准答案一致,得满分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发