每个中断处理程序都需要自旋锁吗?

Jun*_*Jun 10 c linux linux-kernel

在ULK的第5章中,作者声明如下:

"...每个中断处理程序都是相对于自身进行序列化的 - 也就是说,它不能同时执行多个.因此,访问数据结构不需要同步原语"

我不太明白为什么中断处理程序在具有多个内核的现代CPU上"序列化".我想有可能同一个ISR可以同时在不同的内核上运行,对吗?如果是这种情况,如果您不使用自旋锁来保护您的数据,它可能会遇到竞争状态.

所以我的问题是,在一个具有multi-cpus的现代系统中,对于你要编写的每个将要读写一些数据的中断处理程序,是否总是需要自旋锁?

CL.*_*CL. 7

在执行中断处理程序时,内核在中断控制器上显式禁用该特定中断行,因此一个中断处理程序不能同时执行多次.(但是其他中断的处理程序可以同时运行.)