文章

246

粉丝

40

获赞

2

访问

12.6k

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

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,符合同步需求(每个信号量用于表示一个操作的完成状态,初值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和b_done),正确。
- PC需要等待a_done和b_done(即A和B完成)后执行C,然后V操作c_done(表示C完成),正确。
- PD执行D后V操作d_done,正确。
- PE需要等待c_done和d_done(即C和D完成)后执行E,正确。
整体同步逻辑与标准答案一致,虽然信号量命名不同,但功能完全等价,且wait/signal(P/V)操作使用正确。因此得5分。

题目总分:2+5=7分

注意:学生代码中使用了"v"和"p"(小写)而非标准"V"和"P"或"signal"和"wait",但这是常见的写法等价,不扣分。代码格式(如cobegin和coend的括号使用)有小瑕疵,但不影...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发