Chinaunix

标题: linux对死锁的处理? [打印本页]

作者: gp8209    时间: 2007-04-07 11:41
标题: linux对死锁的处理?
请教高手,死锁问题是进程调度的一个重要内容
可是,《linux内核完全注释》(赵炯编著)中对sched.c的分析中,好像没有提到这方面的内容,

不知道linux对死锁是怎么处理的?
作者: puppylove    时间: 2007-04-07 13:14
标题: 回复 #1 gp8209 的帖子
死锁形成的原因是不同进程所持有和申请的锁形成了一个环,出现死锁一般表明程序代码中有bug。
在Linux内核中,为了避免死锁,有几条措施:
1   spin lock获得后不会发生进程调度;
2   获取多把spin lock时,所有进程按照锁的地址大小顺序获取;
3   要使用多个锁的子系统中,对各种锁的使用会形成一个获取顺序的约定,(可参考mm/rmap.c)
4  Linux内核中有一个nmi不可屏蔽中断,如果系统发现关中断时间过长,就会认为发生了死锁,触发这个中断。当然这种措施并不能发现那些未关中断获取的锁导致的死锁。
总而言之,死锁是一种bug,linux内核中并没有什么能够在系统发生死锁之后还能够恢复过来的机制。 不过美国washington大学的Nooks项目好像在这方面有些改进。(参见http://nooks.cs.washington.edu/
作者: gp8209    时间: 2007-04-08 23:37
非常感谢,
我再查查资料,遇到什么问题再请教阿
作者: Solaris12    时间: 2007-04-09 12:15
原帖由 puppylove 于 2007-4-7 13:14 发表于 2楼  

总而言之,死锁是一种bug,linux内核中并没有什么能够在系统发生死锁之后还能够恢复过来的机制。



说得好,系统最好能尽可能的检测到死锁的发生,然后直接panic来个核心转储,这样有利于分析和解决问题。

Solaris就是这样做的,部分死锁就会被内核检测并panic。
作者: puppylove    时间: 2007-04-09 12:53
标题: 回复 #4 Solaris12 的帖子
最近这段时间比较空闲,正在研究Solaris, 有问题的时候希望能够得到指教,谢谢。
作者: Solaris12    时间: 2007-04-10 12:20
原帖由 puppylove 于 2007-4-9 12:53 发表于 5楼  
最近这段时间比较空闲,正在研究Solaris, 有问题的时候希望能够得到指教,谢谢。


好,欢迎技术讨论。关于solaris死锁的debug,我有blog,你可以去看看。

最近intel也在北京和上海招聘OpenSolaris内核开发,相信以后有很多机会找到同道来讨论Solaris开发了。
作者: albcamus    时间: 2007-04-10 12:49
原帖由 Solaris12 于 2007-4-10 12:20 发表于 6楼  


好,欢迎技术讨论。关于solaris死锁的debug,我有blog,你可以去看看。

最近intel也在北京和上海招聘OpenSolaris内核开发,相信以后有很多机会找到同道来讨论Solaris开发了。



intel北京也有?  印象里连linux也是只有上海有职位的, 而且给的还挺扣。
作者: puppylove    时间: 2007-04-10 13:01
标题: 回复 #7 albcamus 的帖子
intel北京这边都是搞研究的吧?好像paper发得比较多。  去年年底的时候得到了一个面试机会,不过后来仔细考虑了一下,觉得想先做几年工程再说,所以放弃了。
作者: Solaris12    时间: 2007-04-11 21:52
原帖由 albcamus 于 2007-4-10 12:49 发表于 7楼  



intel北京也有?  印象里连linux也是只有上海有职位的, 而且给的还挺扣。


我也是听同事说的,正好在招聘版看到有招opensolaris开发,你可以去问问。
作者: Solaris12    时间: 2007-04-11 21:56
原帖由 puppylove 于 2007-4-10 13:01 发表于 8楼  
intel北京这边都是搞研究的吧?好像paper发得比较多。  去年年底的时候得到了一个面试机会,不过后来仔细考虑了一下,觉得想先做几年工程再说,所以放弃了。




http://bbs.chinaunix.net/viewthr ... &extra=page%3D6


我可能还可以推荐另一家公司的OpenSolaris驱动开发的职位,如果有兴趣,可以把简历发给我,邮件在我blog上找。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2