为什么在中断上下文中不能休眠

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

为什么在中断上下文中不能休眠
我的理解:
1.执行在中断上下文的代码:

  • a)中断的 top half (interrupt handler)和
  • b)bottom half(softirq,tasklet等)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值