文章

45

粉丝

0

获赞

0

访问

4.7k

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

sem A=0,B=0,C=0,E=0;

void T1(){

do(A);

signal(C);//通知T2可以做C

wait(E);//等待T2做完E

do(F);

}

 

void T2(){

do(B);

wait(C);//等待T1做完A

do(C);

signal(E);//通知T1可以做E

do(D);//接着做D

}


评分及理由

(1)信号量定义部分得分及理由(满分2分)

学生定义了四个信号量A、B、C、E,初值均为0。但信号量命名不规范(应使用描述性名称),且实际只需要两个信号量(控制A→C和C→E的同步关系)。信号量B是多余的,因为B操作在T2中且无需等待其他线程。信号量E的命名易与操作E混淆。扣1分。

得分:1分

(2)线程T1代码部分得分及理由(满分3分)

学生代码中T1执行A后signal(C)正确(通知C可执行),但缺少E操作(题目要求T1执行A、E、F),仅直接wait(E)后执行F,漏掉了E操作本身。逻辑错误严重,扣2分。信号量使用顺序基本正确但缺失关键操作。

得分:1分

(3)线程T2代码部分得分及理由(满分3分)

学生代码中T2执行B后wait(C)正确(等待A完成),执行C后signal(E)正确(通知E可执行),但D操作应在C之后执行,而代码中D在signal(E)后直接执行,未受约束(实际D和E应并行,但学生代码未体现D对C的依赖)。此处D的执行顺序未严格同步,扣1分。另外,线程T2未执行操作E(题目要求T2执行B、C、D),但学生代码中signal(E)仅用于通知,未执行E操作,这是题目分配正确,不扣分。

得分:2分

题目总分:1+1+2=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发