文章

212

粉丝

0

获赞

0

访问

28.4k

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


评分及理由

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

得分:1分

理由:学生定义了四个信号量:铁锹=1、水桶=1、坑=0、新树苗=0。其中“铁锹”和“水桶”作为互斥信号量,初值正确。“坑”和“新树苗”作为同步信号量,初值设置基本符合同步逻辑(坑初始为0表示无可用的坑,新树苗为0表示无可浇水的树苗)。但是,题目要求“当树坑数量小于3时,甲才可以挖树坑”,这需要一个计数信号量来控制最大并发挖坑数(标准答案中的sk=3)。学生的方案中用整型变量“坑”和if条件判断来实现此限制,这不符合使用信号量进行同步的典型PV操作范式,且存在竞态条件(对共享变量“坑”的读写未加保护)。因此,在信号量设计上缺失了关键的限制挖坑数量的信号量,扣1分。

(2)进程(甲、乙、丙)同步互斥逻辑(满分约5分)

得分:2分

理由:
1. 甲进程:使用if(坑>3)判断,逻辑与题目要求“坑数量小于3”相反,这是一个明显的逻辑错误。并且,对共享变量“坑”的判断和修改(坑++)没有放在互斥保护中,存在数据不一致风险。挖坑动作使用了P/V操作保护铁锹,正确。
2. 乙进程:逻辑问题严重。首先,判断条件if(坑>=1)可以接受,表示有坑可用。但执行流程中,在“放树苗”和“填土”之间又进行了一次P(铁锹),这会导致死锁,因为此时铁锹信号量已被乙进程持有,再次P操作会导致阻塞。此外,对“坑--”的操作同样未受保护。
3. 丙进程:逻辑基本正确,先等待新树苗信号,再互斥使用水桶浇水。
总体来看,甲、乙两个关键进程的逻辑存在严重错误(条件判断错误、死锁风险、共享变量未保护),同步关系未能正确建立。丙进程逻辑正确。因此,此部分扣3分。

题目总分:1+2=3分

题目总分:3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发