文章

203

粉丝

40

获赞

1

访问

11.5k

头像
2025年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年9月11日 17:16
阅读数 231

semaphore empty = 0; //需要填土的坑

semaphore water = 0;// 需要浇水

semaphore full = 3; //可挖的树坑数量

semaphore fe = 1; //铁锹

cobegin{

P_A(){

while(1){

p(full);

p(fe);

甲挖坑;

v(fe);

v(empty);

}

}

P_B(){

while(1){

p(empty);

p(fe);

乙放树苗;

乙埋土;

v(full);

v(fe);

v(water);

}

}

P_C(){

while(1){

p(water);

丙拿桶浇水;

}

}

}coend


评分及理由

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

得分:2分。理由:学生定义了四个信号量:empty(初值0,表示需要填土的坑)、water(初值0,表示需要浇水)、full(初值3,表示可挖的树坑数量,正确反映了“树坑数量小于3时甲才可以挖坑”的约束)、fe(初值1,表示铁锹互斥)。信号量定义与标准答案等效(full对应sk,fe对应mutexT),且初值设置正确,符合题目要求。

(2)甲(挖坑)进程同步逻辑(满分2分)

得分:2分。理由:甲先wait(full)检查可挖坑数量,再wait(fe)获取铁锹,挖坑后释放铁锹signal(fe),并signal(empty)通知乙有坑可用。逻辑与标准答案一致,且满足互斥和同步条件。

(3)乙(放树苗和填土)进程同步逻辑(满分2分)

得分:2分。理由:乙先wait(empty)等待有坑可用,再wait(fe)获取铁锹(填土需用铁锹),执行放树苗和填土操作后,signal(full)增加可挖坑数量(相当于释放一个坑位),signal(fe)释放铁锹,signal(water)通知丙浇水。逻辑正确,且注意了铁锹的互斥使用。

(4)丙(浇水)进程同步逻辑(满分1分)

得分:1分。理由:丙wait(water)等待浇水信号,然后浇水。水桶只有一个但无需互斥信号量(因为浇水时水桶独占,且题目未要求互斥),学生未定义水桶信号量是...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发