Linux ISR的堆栈在哪里?

我知道一个linux进程有两个独立的堆栈 – 一个在用户空间,另一个在内核空间。 但ISR使用的堆栈在哪里? 是否与进程的内核空间堆栈共享?

在过去,ISR曾经是使用当前进程的堆栈来服务的。 所以,当发生中断时,当前正在执行的进程会将所有数据保存在内核或用户空间堆栈中,并使用自己的内核堆栈开始执行相应的ISR功能。
但是随着ISR堆栈的引入,所有与ISR相关的处理都使用一个名为ISR堆栈的单独堆栈完成。 ISR堆栈在内核空间,因为只有内核线程可以执行中断的ISR处理程序。
用户空间不知道,并坦率地不关心是否在当前进程的内核堆栈或单独的ISR堆栈服务中断。 由于每个CPU都有中断,所以ISR堆栈必须是每个CPU。

回答你原来的问题:如果ISR堆栈存在,它将与进程内核堆栈完全不同。 否则,进程内核堆栈用于处理中断。

ISR堆栈的存在也取决于架构。