文章

246

粉丝

40

获赞

2

访问

12.6k

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

coBegin{
semaphore mutex_k = 3;//还剩可以挖几个坑
semaphore mutex_t = 1;//铁锹
semaphore a_done = 0;//有多少个坑需要填土
semaphore b_done = 0;//有多少颗树需要浇水 


p_1(){
while(1){
wait(mutex_k);
wait(mutex_t);
挖坑;
signal(mutex_t)
signal(a_done);
}
}


p_2(){
while(1){
wait(a_done);
wait(mutex_t);
放入树苗;
填土;
signal(mutex_t);
signal(mutex_k)
signal(b_done);

}
}

p_3(){
while(1){
wait(b_done);
浇水;
}

}


}CoEnd

 


评分及理由

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

得分:2分

理由:学生定义了四个信号量:mutex_k(初值3,表示可挖坑数量)、mutex_t(初值1,表示铁锹互斥)、a_done(初值0,表示需要填土的坑数)、b_done(初值0,表示需要浇水的树数)。这些信号量的作用和初值均正确,与标准答案等效(mutex_k对应sk,mutex_t对应mutexT,a_done对应empty,b_done对应water)。

(2)甲(p_1)的同步操作(满分2分)

得分:2分

理由:甲先wait(mutex_k)检查可挖坑数(相当于wait(sk)),再wait(mutex_t)获取铁锹互斥,挖坑后释放铁锹并signal(a_done)通知乙(相当于signal(empty))。逻辑正确,与标准答案一致。

(3)乙(p_2)的同步操作(满分2分)

得分:2分

理由:乙先wait(a_done)等待有坑需填土(相当于wait(empty)),再wait(mutex_t)获取铁锹互斥,执行放树苗和填土后释放铁锹,然后signal(mutex_k)增加可挖坑数(相当于signal(sk)),并signal(b_done)通知丙(相当于signal(water))。逻辑正确,与标准答案一致。

(4...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发