我很困惑为什么中断处理程序不能休眠?我对同一问题有两种看法:-
中断处理程序不可调度?因为它没有task_struct。
如果处理程序休眠,则系统可能会挂起,因为系统时钟中断被屏蔽并且无法调度休眠进程。
中断处理程序是可调度的吗?
但虽然较低优先级的系统时钟中断
被这些更高优先级的中断屏蔽,
他们不能被安排吗?
请给我一个很好的例子。
当中断发生时,处理器进入异常状态(中断上下文)。
当发生这种情况时,调度程序将被禁用,直到处理器退出此状态。如果您将一个任务置于睡眠状态,该任务将进入等待队列并告诉调度程序将另一个任务出队。如果它发生在中断上下文中,则在我们完成此上下文之前没有调度程序,并且处理器会挂起,因为我们从未完成中断。到底发生什么取决于处理器。
一种解决方案是在线程中运行实际的中断代码 - 这称为线程中断,这是实时补丁中使 Linux 成为“硬实时”的配置之一
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)