免费注册 查看新帖 |

Chinaunix

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

请教一个spin_lock问题 [复制链接]

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
31 [报告]
发表于 2011-05-24 19:47 |只看该作者
回复 27# flw2

spin_lock不就是对付其它CPU的么。。。。

论坛徽章:
0
32 [报告]
发表于 2011-05-24 23:49 |只看该作者
回复  wangzhen11aaa


    类似的总结我也在网上搜到过。
    我问的问题就是质疑这句 “如果只要和其 ...
gqbfree 发表于 2011-05-12 12:22


正如LS某个童鞋所言,被中断是应该而且必须的,你想想系统调用伺服程序执行和I/O中断处理哪个更迫切更重要呢,你多等一会(非常小的一会)又何妨!但是中断没你想象的那么频繁,在两次中断之间足够你处理N条指令了。此外,如果一概使用spin_lock_irq不仅浪费,而且降低了系统I/O吞吐性能。

    ps:回到家,可以用中文了。舒坦!

评分

参与人数 1可用积分 +5 收起 理由
amarant + 5 欢迎回到地球

查看全部评分

论坛徽章:
0
33 [报告]
发表于 2011-05-25 21:15 |只看该作者
借这个话题再问一个关于spin_lock的小问题,
书上说持有spin lock的进程不能休眠,
这是否是因为spin_lock禁止了内核抢占,所以
如果休眠了,则无法调度到其他进程,所以持有
spin lock的进程无法被唤醒,所以就产生死锁了

论坛徽章:
0
34 [报告]
发表于 2011-05-25 22:39 |只看该作者
借这个话题再问一个关于spin_lock的小问题,
书上说持有spin lock的进程不能休眠,
这是否是因为spin_loc ...
alexhak2004 发表于 2011-05-25 21:15



    不准确。
  对于SMP,假设持有在CPU1上持有spin lock的内核执行路径如果因为某个调用函数而睡眠,则虽然此时已把抢占disabled ,但是在CPU1如果有interrupt 到来(抢占disabled但不等于关中断),进而在此中断处理内核执行路径中,如果获得spin lock的话(此操作在中断处理中经常发生),则此CPU1则会一直Spin,从而导致死锁。

论坛徽章:
0
35 [报告]
发表于 2011-05-26 09:14 |只看该作者
同意楼上,除了防止死锁外,spin lock不能睡眠的原因还有一个,在中断处理程序中使用spinlock保护数据时,由于在中断上下文而不能进行调度(调度指用一个task替换另外一个task),中断上下文中的current所代表的task是不能代替该中断上下文的。

论坛徽章:
0
36 [报告]
发表于 2011-05-27 12:39 |只看该作者
按照您的意思,spin_lock_irq就没有存在的意义喽?
wtz_wh 发表于 2011-05-24 19:40



中断和任务存在共享资源时,spin_lock_irq是要在任务代码用上的。 否则中断抢占CPU后,就一直spin_lock,死锁了

论坛徽章:
0
37 [报告]
发表于 2011-05-28 09:45 |只看该作者
回复 34# alexbuaa

我没有说清楚,我说的是占有spin_lock的是一个进程,同时本地中断也是disabled。
因为如果不disable本地中断,即使持有锁的这个进程不休眠,也会造成死锁

论坛徽章:
0
38 [报告]
发表于 2011-05-29 10:10 |只看该作者
回复 31# tempname2


    理解严重错误

论坛徽章:
0
39 [报告]
发表于 2011-05-30 11:14 |只看该作者
回复 38# flyfrogs


    不对吗,我的理解也是spin_lock是用来对付smp的。

论坛徽章:
0
40 [报告]
发表于 2011-05-30 11:37 |只看该作者
呵呵,在单cpu非强占内核上spinlock啥事不干,在单cpu强占内核上仅仅是禁止抢占而已,只有在多cpu上才会spin,说它是用来对付smp也大致没错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP