一尘不染

为什么拿着自旋锁无法入睡?

linux

在linux内核中,为什么在按住自旋锁的同时无法入睡?


阅读 251

收藏
2020-06-03

共1个答案

一尘不染

示例:您的驱动程序正在执行,并且刚拿出一个锁来控制对其设备的访问。保持锁定状态时,设备会发出一个中断,这会使您的中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁。在中断处理程序中取出自旋锁是一件合法的事。这是自旋锁操作无法hibernate的原因之一。但是,如果中断例程与最初取出锁的代码在同一处理器中执行,会发生什么情况?当中断处理程序旋转时,非中断代码将无法运行以释放锁定。该处理器将永远旋转。

资料来源:http :
//www.makelinux.net/ldd3/chp-5-sect-5.shtml

2020-06-03