免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Huntsmen
打印 上一主题 下一主题

[进程管理] 信号量释放时,等待信号量的进程会立即被唤醒吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-25 16:06 |显示全部楼层 |倒序浏览
本帖最后由 Huntsmen 于 2014-02-25 16:13 编辑

假设是UP系统,有2个进程A和B,B的优先级比A的高,但是B因为在等待信号量,所以处于pending状态,进程A有机会执行;

当进程A发送B正在等待的信号量时,B是会被立即唤醒执行,还是需要等A的时间片用完了才可以有机会调度B?

即下面的例子,当进程A发送了信号量之后,是会接着执行operation A-2呢 ?还是先执行operation B-2?

进程A:
……
operation A-1;
发送信号量;
operation A-2;
……


进程B:
……
operation B-1;
等待信号量;
operation B-2;
……

这个是不是要分内核是可抢占和非抢占的,
对于可抢占的,发送信号量之后,就会有一个调度点,所以进程B被唤醒,然后先执行operation B-2;
对于非可抢占的,发送信号量之后,内核只是标记进程B为就绪态,只有等进程A的时间片用完,或者主动释放cpu之后,进程b才能执行;所以这里是先执行operation A-2;

论坛徽章:
0
2 [报告]
发表于 2014-02-26 10:49 |显示全部楼层
回复 4# liuiang
谢谢回复!
还想请教几个问题:
1,假如是关闭内核抢占的,那么是在返回用户态时就被抢占了,还是说返回用户态后也要等时间片用完了才能被抢占?
2,如果是2个内核线程,它们没有用户态,它们之间是如何抢占的呢?
3,内核代码什么地方可以查看系统调度的时间片长度是多少?


   

论坛徽章:
0
3 [报告]
发表于 2014-03-05 00:43 |显示全部楼层
如果2个进程都是SCHED_FIFO,应该是发送信号量之后,就立即执行等待该信号的进程吧

论坛徽章:
0
4 [报告]
发表于 2014-03-05 20:42 |显示全部楼层
回复 11# humjb_1983

就以Linux系统,互斥锁mutex或者semaphore为例吧,A和B都是SCHED_FIFO的实时任务,B优先级比A的高,B在等待mutex/sem,当A释放这个资源的时候,B应该立即激活不?

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP