0

每本设备驱动程序书都谈到不使用在中断例程中休眠的函数。从 ISR 调用这些函数会出现什么问题?

4

1 回答 1

2

内核的完全锁定是这里的问题。内核在执行中断处理程序时处于中断上下文中,即中断处理程序不与任何进程关联(当前宏无法使用)。

如果你能够睡觉,你将永远无法回到被中断的代码,因为调度程序不知道如何回到它。

在中断处理程序中持有一个锁,然后休眠,允许另一个进程运行,然后再次进入中断处理程序并尝试重新获取锁,这会使内核死锁。

如果您尝试阅读更多有关内核中调度如何工作的信息,您很快就会意识到为什么在某些情况下睡眠是不可行的。

于 2012-07-02T08:11:46.020 回答