文章

69

粉丝

0

获赞

0

访问

10.6k

头像
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分。

题目...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发