文章

438

粉丝

0

获赞

0

访问

76.5k

头像
2025年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年12月7日 17:20
阅读数 6


评分及理由

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

学生定义了四个信号量:tq(铁锹互斥,初值1)、tong(水桶互斥,初值1)、keng(树坑数量,初值0)、tree(新种树苗数量,初值0)。与标准答案相比,缺少对“可挖树坑数量”的限制(标准答案中的sk=3),而学生试图用if(keng <= 3)的条件判断来实现,但keng是信号量,不能直接与整数比较,这是一个逻辑错误。此外,水桶的互斥在标准答案中未单独设置(因为浇水不需要与其他操作互斥,只需等待树苗种好),但学生设置了,虽多余但未导致错误。信号量定义部分存在核心逻辑缺失(缺少对挖坑数量的同步控制),扣1分。得1分。

(2)甲、乙、丙三人的同步互斥流程(满分约5分)

甲:用if(keng <= 3)判断不符合信号量使用规范,无法正确限制挖坑数量(应使用信号量wait/signal操作)。且甲挖坑后只signal(keng),未考虑乙填土后需要释放可挖坑位(即标准答案中的sk)。流程存在逻辑错误,扣2分。

乙:wait(keng)等待坑,然后放树苗,再wait(tq)填土,之后signal(tree)通知丙浇水。这里缺少对填土动作的互斥保护(但铁锹互斥已通过tq实现,基本正确)。主要问题是乙完成后未释放可挖坑位(即未signal(sk)),导致甲挖坑数量限制无法循环。扣1分。

丙:signal(tree)应改为wait(tree),学生误写为signal,这是一个严重逻辑错误,会导致丙无法正确等待树苗种好,且可能使tree信号量值错误增加。扣2分。

此外,学生使用了cobegin/coend表示并发,语法可接受。但整体同步逻辑不完整,存在多处错误。本部分满分5分,扣除5分,得0分。

题目总分:1+0=1分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发