当用户模式任务被中断时会发生什么?我知道CPU通过引用TSS切换到内核模式堆栈。但是内核何时以及如何切换到 IRQ 堆栈呢?
答案1
在 x86_64 上,内核代码在中断时切换到中断堆栈。每个CPU有一个中断堆栈。如果在用户模式下运行时发生中断,实际上会发生两次堆栈切换:首先从该线程/进程的用户堆栈到内核堆栈(这是由硬件自动完成的),然后切换到中断堆栈。看https://www.kernel.org/doc/Documentation/x86/kernel-stacks
当用户模式任务被中断时会发生什么?我知道CPU通过引用TSS切换到内核模式堆栈。但是内核何时以及如何切换到 IRQ 堆栈呢?
在 x86_64 上,内核代码在中断时切换到中断堆栈。每个CPU有一个中断堆栈。如果在用户模式下运行时发生中断,实际上会发生两次堆栈切换:首先从该线程/进程的用户堆栈到内核堆栈(这是由硬件自动完成的),然后切换到中断堆栈。看https://www.kernel.org/doc/Documentation/x86/kernel-stacks