Linux内核如何从内核堆栈切换到中断堆栈?

Linux内核如何从内核堆栈切换到中断堆栈?

当用户模式任务被中断时会发生什么?我知道CPU通过引用TSS切换到内核模式堆栈。但是内核何时以及如何切换到 IRQ 堆栈呢?

答案1

在 x86_64 上,内核代码在中断时切换到中断堆栈。每个CPU有一个中断堆栈。如果在用户模式下运行时发生中断,实际上会发生两次堆栈切换:首先从该线程/进程的用户堆栈到内核堆栈(这是由硬件自动完成的),然后切换到中断堆栈。看https://www.kernel.org/doc/Documentation/x86/kernel-stacks

相关内容