Chinaunix
标题:
中断不能休眠却可以被抢占?
[打印本页]
作者:
ice2000feng
时间:
2012-07-25 10:19
标题:
中断不能休眠却可以被抢占?
看LKD,说 中断上下文(中断处理程序,下半部)是不能睡眠的。但却说中断却可以被另外一个中断处理程序所打断,那岂不是说中断可以被抢占了,那被打断的中断处理程序处于什么状态呢?它是不是就处于睡眠状态了呢?
作者:
omycle
时间:
2012-07-25 11:32
发生了中断嵌套,跟抢占没有关系
中断能否嵌套,需要根据具体的平台。
作者:
wait_rabbit
时间:
2012-07-25 11:44
中断没有所谓的"状态",新产生的中断寄生在当前中断之上,等运行完毕,再回到当前中断而已.
作者:
tempnamett
时间:
2012-07-25 13:32
回复
1#
ice2000feng
中断不能睡眠是linux设计策略问题,不是不能实现。中断嵌套是为了保证中断的实时响应,嵌套过程中会记录状态,不过嵌套的中断都在中断上下文中。
作者:
kgn28
时间:
2012-07-25 19:48
本帖最后由 kgn28 于 2012-07-25 19:48 编辑
睡眠是调度的概念,调度又是以running的process为单位的,所以既然中断上下文是属于某一个进程的(因为该中断是在当前被中断进程的内核栈中运行的),因此再来一个中断还是在该进程的栈中运行,同抢占没关系。这个叫做kernel control path,至于为什么中断的path不能被挂起,这是因为中断必须被处理,否则挂起一段时间之后外设的状态已经改变了,无法被恢复~~
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2