文章

246

粉丝

40

获赞

2

访问

12.9k

头像
2020年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年9月11日 21:17
阅读数 49

semaphore a_done = 0;//A操作完成

semaphore b_done = 0;//B操作完成

semaphore c_done = 0;//C操作完成

semaphore d_done = 0;//D操作完成

cobegin{

PA(){

A操作完成;

v(a_done);

}

PB(){

B操作完成;

v(b_done);

}

PC(){

p(a_done);

p(b_done);

C操作完成;

v(c_done);

}

PD(){

D操作完成;

v(d_done);

}

PE(){

p(c_done);

p(d_done);

E操作完成;

}

}coend

 


评分及理由

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

学生定义了四个信号量:a_done、b_done、c_done、d_done,初值均为0,符合同步需求(每个信号量用于表示一个操作的完成状态)。但标准答案中使用了四个信号量分别对应AC、BC、CE、DE的同步关系,而学生使用a_done、b_done、c_done、d_done,命名不同但功能等价(a_done对应S_AC,b_done对应S_BC,c_done对应S_CE,d_done对应S_DE),初值设置正确。因此不扣分。
得分:2分

(2)同步操作实现(满分5分)

学生代码中:
- PA和PB分别执行A和B后V(a_done)和V(b_done),正确。
- PC中P(a_done)和P(b_done)等待A和B完成,然后执行C并V(c_done),正确。
- PD执行D后V(d_done),正确。
- PE中P(c_done)和P(d_done)等待C和D完成,然后执行E,正确。
整体同步逻辑完全正确,与标准答案功能一致(仅信号量命名不同,但语义等价)。因此不扣分。
得分:5分

题目总分:2+5=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发