文章
75
粉丝
0
获赞
0
访问
15.1k

评分及理由
(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分
登录后发布评论
暂无评论,来抢沙发