文章

281

粉丝

40

获赞

2

访问

24.2k

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

semaphore a_done = 0;//a已完成

semaphore c_done = 0;//c已完成

cobegin{

T1(){

A执行完成;

v(a_done);

p(c);

E执行完成

F执行完成

}

T2(){

B执行完成;

p(a);

C执行完成;

v(c_done);

D执行完成;

}

}coend

 


评分及理由

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

学生定义了两个信号量a_done和c_done,初值均为0,符合同步需求(a_done用于等待A完成,c_done用于等待C完成)。但信号量命名存在笔误(例如c_done写为c,但上下文中未统一),且未明确说明所有必要同步关系(如B和C之间虽在同一线程但需隐含等待,但学生未处理B的完成信号)。扣1分,理由:信号量数量不足(缺少对B的隐式同步考虑,但标准答案简化后仅需两个信号量,此处可不扣分),但命名不规范(如p(c)应为p(c_done))导致可读性差。得1分。

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

T1中执行A后v(a_done)正确,但执行E前应等待C完成(即p(c_done)),学生写为p(c)(应为p(c_done)),存在明显错误(信号量名称错误)。此外,F应在E完成后执行,但学生未用信号量控制(E和F在同一线程,理论上可不处理,但标准答案简化版中未显式同步,此处不扣分)。扣2分,理由:关键同步操作p(c_done)误写为p(c),导致逻辑错误。得1分。

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

T2中执行B后未提供任何同步操作(B完成后需通知C,但B和C在同一线程,可不处理),执行C前应等待A完成(即p(a_done)),学生写为p(a)(应为p(a_done)),存在信号量名称错误。执行C后v(c_done)正确。D的执行无需同步(在同一线程)。扣2分,理由:p(a_done)误写为p(a),导致等待错误;B的完成虽无需信号量,但名称错误影响逻辑。得1分。

题目总分:1+1+1=3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发