文章

75

粉丝

0

获赞

0

访问

15.1k

头像
2026年 408 冲刺预测 3 套卷(二) - 第45题回答
操作系统
发布于2025年12月9日 15:49
阅读数 269


评分及理由

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

学生定义了三个信号量:empty、full、full2,并给出了初值 empty=5, full=0, full2=0。这与标准答案中的 S1(可收集空位)、S2(未分析日志数)、S3(已分析日志数)在功能上是对应的。但标准答案中 S1 初值为 4(因为未分析日志数小于5时可收集,即最多允许4个未分析日志),而学生设置 empty=5,这会导致最多允许5个未分析日志,违反了“小于5”的条件,属于逻辑错误。因此扣1分。本部分得1分。

(2)同步代码逻辑(满分约4分)

收集者进程:P(empty) 后收集,然后 V(full),逻辑正确。
分析者进程:P(full) 后分析,然后 V(empty) 和 V(full2)。这里 V(empty) 的位置有问题:分析完成后应该释放一个“可收集空位”,但标准流程中,空位是在存储完成后才释放的(因为存储完成后才真正腾出空间)。学生在此处 V(empty) 会导致收集者过早获得空位,可能使得系统中同时存在的未分析日志数超过限制(结合 empty=5 会加剧此问题)。这是一个逻辑错误,扣2分。
存储者进程:P(full2) 后存储,但没有 V(empty) 来释放空位,这将导致收集者在收集一定次数后因 empty 耗尽而永远阻塞,系统无法持续运行。这是一个严重的逻辑错误,扣2分。
本部分得0分。

(3)信号量作用说明(满分约1分)

学生说明了 empty 是可收集日志数(对应可收集空位),full 是未分析日志数,full2 是未存储日志数。虽然命名与标准答案不同,但意思基本正确,且初值说明清晰。本部分得1分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发