+ -
当前位置:首页 → 问答吧 → 自选锁和信号量的问题

自选锁和信号量的问题

时间:2010-07-15

来源:互联网

本帖最后由 unbutun 于 2010-07-15 22:12 编辑

自旋锁的加锁和解锁之间的代码可以存在调度?


在内核中防止多核进程上下文访问同一个共享资源是不是可以用信号量?


自旋锁是不是只有在中断上下文才有意义?其它的情况是不是信号量更好?

为什么在单核中自旋锁里面是空,难道单核上就不要处理竞争了吗?
(此问如果在上面是自旋锁的加锁和解锁之间不存在调度的话,就没问题了,也就是说自旋锁加解锁之间是原语操作就没问题了)


以上针对的是linux 2.6内核,非其它操作系统

作者: unbutun   发布时间: 2010-07-15



QUOTE:
自旋锁的加锁和解锁之间的代码可以存在调度?

回复 unbutun


    如果内核是可抢占的,那么自旋锁的lock第一步做的事情就是关闭抢占,so,不能schedule。。。

作者: kgn28   发布时间: 2010-07-15



QUOTE:
回复  unbutun


    如果内核是可抢占的,那么自旋锁的lock第一步做的事情就是关闭抢占,so,不能sche ...
kgn28 发表于 2010-07-15 22:50




    主动schedule也不行吧? 不会死锁吗?

作者: unbutun   发布时间: 2010-07-16

回复 unbutun


    禁用抢占还要schedule,这个本身就是错误的做法,因为禁用抢占目的就是不会被schedule啊。

作者: kgn28   发布时间: 2010-07-16

接着问下面的东西


为什么在单核中自旋锁里面是空,难道单核上就不要处理竞争了吗?
(此问如果在上面是自旋锁的加锁和解锁之间不存在调度的话,就没问题了,也就是说自旋锁加解锁之间是原语操作就没问题了)


以上针对的是linux 2.6内核,非其它操作系统

作者: unbutun   发布时间: 2010-07-17

单核上没有多个处理,不存在处理器竞争

作者: 0vk0   发布时间: 2010-07-17

回复 unbutun


    是需要处理竞争关系,不过没有必要用自旋锁,用其他的东西呗。你问的问题就好比“为什么中午不吃晚饭?因为晚饭是在晚上吃的。。。“,见此贴:http://linux.chinaunix.net/bbs/thread-1166513-1-1.html。

作者: kgn28   发布时间: 2010-07-17



QUOTE:
回复  unbutun


    是需要处理竞争关系,不过没有必要用自旋锁,用其他的东西呗。你问的问题就好比“ ...
kgn28 发表于 2010-07-17 09:13




    用semphore信号来处理

作者: linux初学三月   发布时间: 2010-07-17

热门下载

更多