为什么在中断上下文中不能休眠
我的理解:
1.执行在中断上下文的代码:
- a)中断的 top half (interrupt handler)和
- b)bottom half(softirq,tasklet等)
2.中断服务程序需要满足的特性:
需要记住 interrupt handler 在执行时是中断了其他的进程或者其他的interrupt handler的。对于interrupt handler(ISR)来讲,快速地执行完毕然后返回到被中断的代码中是很重要的一点。interrupt handler要尽可能快速,从这一点上来讲当然不应该让它sleep。(比如:时钟中断ISR休眠了会发生什么?)

中断上下文的代码需要快速执行并返回,以避免阻塞其他进程或中断。中断服务程序,包括中断处理程序和下半部,都不能休眠,因为它们没有与任何进程关联,无法被重新调度。在中断返回后,可以进行调度,因为此时已经恢复了被中断进程的上下文。探究中断处理中不能睡眠的原因涉及上下文的概念、进程上下文、中断上下文的理解以及内核调度原理。

1442

被折叠的 条评论
为什么被折叠?



