文章

4

粉丝

0

获赞

0

访问

27

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

semaphore SAC = 0;  // 标记“操作A是否完成”,供C等待A
semaphore SBC = 0;  // 标记“操作B是否完成”,供C等待B
semaphore SCD = 0;  // 标记“操作C是否完成”,供D等待C
semaphore SCE = 0;  // 标记“操作C是否完成”,供E等待C
semaphore SEF = 0;  // 标记“操作E是否完成”,供F等待E
T1(){
A();                  // 执行操作A
signal(SAC);          // 发送“A完成”的信号,让C可以等待A
wait(SCE);            // 等待“C完成”的信号,确保E在C之后执行
E();                  // 执行操作E
signal(SEF);          // 发送“E完成”的信号,让F可以等待E
wait(SEF);            // 等待“E完成”的信号,确保F在E之后执行
F();                  // 执行操作F

}

T2(){
执行操作B;
signal(SBC);   // 通知“操作B已完成”,让C可以等待B
wait(SAC);     // 等待“操作A已完成”(确保C在A之后)
wait(SBC);     // 等待“操作B已完成”(确保C在B之后,自己刚signal过,能通过)
执行操作C;
signal(SCD);   // 通知“操作C已完成”,让D可以执行
signal(SCE);   // 通知“操作C已完成”,让E可以执行
wait(SCD);     // 等待“操作C已完成”(自己刚signal过,能通过)
执行操作D;
}

 


评分及理由

(1)信号量定义部分(满分2分)

学生定义了5个信号量(SAC、SBC、SCD、SCE、SEF),每个信号量的初值均为0,且作用描述正确(分别对应A-C、B-C、C-D、C-E、E-F的同步关系)。这部分与标准答案一致,但标准答案中简化后只需两个信号量(S_AC和S_CE),而学生使用了完整版本(未简化)。根据题目要求,思路正确不扣分,且信号量定义和初值设置正确,因此得满分2分...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发