Linux ISR的堆栈在哪里

Lun*_*oms 3 linux operating-system linux-kernel

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

Har*_*man 5

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

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

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