为什么中断处理程序 (ISR) 无法休眠?

2024-03-25

我很困惑为什么中断处理程序不能休眠?我对同一问题有两种看法:-

  1. 中断处理程序不可调度?因为它没有task_struct。

  2. 如果处理程序休眠,则系统可能会挂起,因为系统时钟中断被屏蔽并且无法调度休眠进程。

中断处理程序是可调度的吗?
但虽然较低优先级的系统时钟中断
被这些更高优先级的中断屏蔽
,
他们不能被安排吗?

请给我一个很好的例子。


当中断发生时,处理器进入异常状态(中断上下文)。 当发生这种情况时,调度程序将被禁用,直到处理器退出此状态。如果您将一个任务置于睡眠状态,该任务将进入等待队列并告诉调度程序将另一个任务出队。如果它发生在中断上下文中,则在我们完成此上下文之前没有调度程序,并且处理器会挂起,因为我们从未完成中断。到底发生什么取决于处理器。 一种解决方案是在线程中运行实际的中断代码 - 这称为线程中断,这是实时补丁中使 Linux 成为“硬实时”的配置之一

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么中断处理程序 (ISR) 无法休眠? 的相关文章

随机推荐