文章

120

粉丝

0

获赞

0

访问

14.8k

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

semaphore c_mutex=1; //互斥访问C

semaphore a_finish=0;//A是否完成

semaphore b_finish=0//B是否完成

semaphore d_finish=0;//D是否完成

semaphore e_finish=0;//E是否完成

T1(){

执行A;

signal(a_finish);

wait(b_finish);

wait(c_mutex);

执行C;

signal(c_mutex);

执行E;

signal(e_finish);

执行F;

}

T2(){

执行B;

signal (b_finish);

wait(a_finish);

wait(c_mutex);

执行C;

signal(c);

wait(e_finish);

执行D;

}

 

 

 


评分及理由

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

学生定义了多个信号量(a_finish、b_finish、e_finish等),这些信号量的初值设置正确(0),并且命名能够反映其作用(如a_finish表示A完成)。但c_mutex信号量用于互斥是不必要的,因为C操作只需要在A和B完成后执行,不需要互斥访问。不过这部分没有逻辑错误,只是多了一个信号量,因此不扣分。

(2)线程T1代码部分:得分1分(满分3分)

学生在线程T1中执行A、C、E、F,但C操作本应由T2执行(题目中T2执行B、C、D),这里T1错误地执行了C操作,属于逻辑错误(线程分工错误)。另外,T1中wait(b_finish)和wait(c_mutex)的用法不正确:b_finish信号量本应用于通知B完成,但这里T1等待b_finish没有意义(因为B由T2执行);c_mutex用于互斥也不必要。E操作完成后signal(e_finish)正确,但F操作缺少对E完成的等待(应wait(e_finish))。扣分理由:线程分工错误(-1分),不必要的互斥信号量使用(-0.5分),F操作缺少同步(-0.5分)。

(3)线程T2代码部分:得分1分(满分3分)

学生在线程T2中执行B、...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发