文章

36

粉丝

0

获赞

0

访问

3.7k

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

semaphore s1=s2=0;	//s1描述A、C之间的同步关系,s2描述C、E之间的同步关系
T1{
    A;
    v(s1);
    p(s2);
    E;
    F;
}

T2{
    B;
    p(s1);
    C;
    v(s2);
    D;
}

 


评分及理由

(1)得分及理由(满分8分)

学生答案中,信号量s1用于控制A和C的顺序(A完成后C才能执行),s2用于控制C和E的顺序(C完成后E才能执行)。这两个信号量正确地实现了跨线程的同步约束:C在A完成后执行(通过s1),E在C完成后执行(通过s2)。

但是,学生答案忽略了B对C的约束(C必须在A和B都完成后执行)。在T2中,B操作后直接执行p(s1),但s1只由A的完成触发,没有考虑B的完成情况。这会导致如果B先于A完成,C可能在A未完成时就开始执行,违反题目要求。

此外,信号量初值声明语法有误(semaphore s1=s2=0;应改为semaphore s1=0, s2=0;),但题目重点在同步逻辑,语法错误不扣分。

扣分点:遗漏B对C的同步约束,属于逻辑错误。根据标准答案,简化后只需两个信号量,但必须确保C等待A和B均完成。学生答案未实现B的同步,扣3分。

得分:8 - 3 = 5分。

题目总分:5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发