文章

189

粉丝

0

获赞

1

访问

34.2k

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


评分及理由

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

学生定义了三个信号量:tie(铁锹互斥,初值1)、m(控制乙丙顺序,初值0)、full(坑数量,初值0)。与标准答案相比,缺少一个限制挖坑数量的信号量(标准答案中的sk=3),但学生通过if(full<3)条件判断来实现“树坑数量小于3时甲才可以挖坑”,这是一种可行的思路,且符合题目“定义尽可能少的信号量”的要求。信号量作用描述基本正确。但full初值为0,甲初始时无法进入if条件(因为full<3成立,但full是信号量,不能直接与3比较,这里存在逻辑错误,见下一部分)。此处给1分(满分2分)。

(2)同步互斥逻辑(满分约4分)

学生代码中:
- 甲:通过if(full<3)判断,但full是信号量,不能直接作为整数比较,这是严重逻辑错误,会导致甲无法开始工作(因为full初值为0,P(full)未执行,full值始终为0,但比较操作不合法)。应使用一个计数信号量或变量来记录已挖坑数。此处扣2分。
- 乙:P(full)等待坑,P(tie)取铁锹,填土,V(tie)放铁锹,V(m)通知丙。逻辑正确,但缺少“放树苗”动作描述(题目要求乙放树苗入坑并填土),此处可视为简略表述,不扣分。
- 丙:P(m)等待乙完成,浇水。逻辑正确。
- 互斥:铁锹使用通过tie信号量互斥,正确。
- 同步:甲->乙通过full,乙->丙通过m,基本正确,但甲->乙的同步因full使用错误而失效。
此处给1分(满分4分)。

(3)代码规范与完整性(满分约1分)

代码结构基本完整,有循环和PV操作,但存在语法错误(如if(full<3)对信号量的错误使用)和多余符号(如第一次识别结果中的V(mutex)等,可能是识别错误,根据规则不扣分)。给0.5分。

题目总分:1+1+0.5=2.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发