2025年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年12月8日 16:51
阅读数 16
semaphore digCount = 0, digLeft = 3, chan = 1, tree = 0;
甲 ()
{
wait(digLeft);
wait(chan);
挖坑();
signal(chan);
signal(digCount);
}
乙 ()
{
wait(digCount);
wait(chan)
放树苗并填土;
signal(chan);
signal(digLeft);
signal(tree);
}
丙 ()
{
wait(tree);
浇水
}
评分及理由
(1)得分及理由(满分7分)
学生答案整体思路与标准答案一致,正确实现了三人植树过程的同步互斥关系。具体分析如下:
- 信号量定义与初值:学生定义了四个信号量,与标准答案的四个信号量功能对应:
- digLeft(对应标准答案的sk):表示可挖的树坑数量,初值为3,正确。
- chan(对应标准答案的mutexT):用于互斥访问铁锹,初值为1,正确。
- digCount(对应标准答案的empty):表示已挖好、可供乙使用的树坑数量,初值为0,正确。
- tree(对应标准答案的water):表示已种好、可供丙浇水的树苗数量,初值为0,正确。
- 甲、乙、丙三人的流程逻辑正确:
- 甲:先等待可挖坑数(digLeft),再申请铁锹(chan),挖坑后释放铁锹,并通知乙有坑可用(signal(digCount))。
- 乙:先等待有坑可用(digCount),再申请铁锹(chan),放树填土后释放铁锹,增加可挖坑数(signal(digLeft)),并通知丙有树可浇水(signal(tree))。
- 丙:等待有树可浇水(tree),然后浇水。
- 该方案满足了题目所有约束:树坑数量小于3时甲才可挖坑(通过digLeft=3实现);铁锹互斥使用(通过chan实现);流程顺序为挖坑->放树填土->浇水(通过digCount和tree的信号传递实现)。
因此,该答案可得满分7分。
题目...
登录后发布评论
暂无评论,来抢沙发