文章

327

粉丝

40

获赞

2

访问

40.2k

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

CoBegin{
semaphore a_done = 0;//操作A完成
semaphore c_done = 0;//操作C完成
semaphore e_done = 0;//操作E完成

T1(){

A执行完成;
signal(a_done);
wait(c_done);
E执行完成;
signal(e_done);
F执行完成;
}

T2(){
B执行完成;
wait(a_done);
C执行完成;
signal(c_done);
wait(e_done);
D执行完成;

}



}
CoEnd

 


评分及理由

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

学生定义了三个信号量a_done、c_done、e_done,初值均为0,符合同步需求。但标准答案中需要更精细的信号量控制(如A->C和C->E的独立控制),学生简化版本可能覆盖主要约束,但未完全匹配标准拓扑关系。扣1分,因为信号量数量不足可能导致同步关系描述不精确。

得分:1分

(2)T1线程同步操作(满分3分)

T1中:A执行后signal(a_done)正确;但wait(c_done)在E之前正确等待C完成;E执行后signal(e_done)用于通知D,但F操作未等待E完成(学生代码中F直接执行,未等待e_done),这里遗漏了E->F的同步约束。扣1分,因为F应在E完成后执行,但未用信号量保证。

得分:2分

(3)T2线程同步操作(满分3分)

T2中:B执行后无信号操作(正确,因B无依赖);wait(a_done)等待A完成(正确);C执行后signal(c_done)通知E(正确);但wait(e_done)在D之前等待E完成(错误,因为D应在C完成后立即执行,无需等待E)。根据约束,D只依赖C完成,不依赖E,学生代码错误添加了D对E的依赖。扣2分,因为逻辑错误导致D执行顺序违反题目约束。

得分:1分

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发