文章

203

粉丝

40

获赞

1

访问

11.5k

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

semaphore k = 0; //可以埋土

semaphore j = 0;// 可以浇水

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

semaphore fe = 1; //铁锹

cobegin{

P_A(){

while(1){

p(emoty);

p(fe);

甲挖坑;

v(fe);

v(k);

}

}

P_B(){

while(1){

p(k);

p(fe);

乙放树苗;

乙埋土;

v(fe);

v(j);

}

}

P_C(){

while(1){

p(j);

丙拿桶浇水;

}

}

}coend


评分及理由

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

得分:1分

理由:学生定义了4个信号量:k(可以埋土,初值0)、j(可以浇水,初值0)、empty(可挖树坑数量,初值3)、fe(铁锹互斥,初值1)。其中empty和fe的初值正确,但k和j的命名和含义不够清晰(标准答案中对应empty和water),且缺少对水桶的互斥访问(浇水时水桶是共享资源,但学生未定义相关信号量)。扣1分。

(2)甲挖坑过程(满分2分)

得分:2分

理由:甲先wait(empty)检查可挖坑数量,再wait(fe)获取铁锹,挖坑后释放铁锹并signal(k)(对应标准答案中的signal(empty)),逻辑正确。虽然信号量命名不同,但思路正确,不扣分。

(3)乙放树苗和填土过程(满分2分)

得分:1分

理由:乙先wait(k)(对应等待可用的树坑),再wait(fe)获取铁锹,执行放树苗和填土后释放铁锹并signal(j)(通知浇水)。但缺少signal(empty)(或类似操作)来增加可挖坑数量(标准答案中乙执行后signal(sk)),这会导致甲最多只能挖3个坑后无法继续,因为empty没有被重置。逻辑错误扣1分。

(4)丙浇水过程(满分1分)

得分:0分

理由:丙等待wait(j)后浇水,但浇水需要使用水桶,而水桶是共享资源(只有1个),学生未定义任何信号量来保证互斥访问(如标准答案中的mutexT用于铁锹,但水桶也需要类似互斥机制)。这里存在逻辑错误:丙浇水时可能与其他进程...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发