文章

203

粉丝

40

获赞

1

访问

11.5k

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

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表示需要浇水的树苗),且缺少对树坑数量限制的同步信号量(标准答案中的sk)。但empty初值3正确,fe初值1正确,因此扣1分。

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

得分:1分

理由:甲先wait(empty)(正确,限制坑数),再wait(fe)获取铁锹(正确,互斥),然后挖坑,之后signal(fe)释放铁锹(正确),但signal(k)(表示可埋土)错误,因为乙需要等待的是可使用的树坑(即empty),而不是直接等待k。标准答案中甲应signal(empty)表示增加一个可用树坑。这里逻辑错误,扣1分。

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

得分:1分

理由:乙先wait(k)(错误,因为k应由甲触发,但甲signal(k)错误,导致这里同步错误),然后wait(fe)获取铁锹(正确),放树苗和填土(正确),之后signal(fe)释放铁锹(正确),但signal(j)(表示可浇水)正确。但乙未释放树坑资源(标准答案中乙应signal(sk)表示可挖坑数增加),这里缺少关键同步,扣1分。

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

得分:1分

理由:丙wait...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发