Kernel
x86-64 linux核心的上下文切換時如何保存執行狀態?
由於 TSS 不儲存 x86-64 中寄存器的值,所以在上下文切換發生時如何保存這些值?
通用寄存器大多保存在堆棧上;見
PUSH_REGS
和struct pt_regs
。要查找實際用途,請查找PUSH_AND_CLEAR_REGS
和POP_REGS
。CPU 狀態的其餘部分儲存在
thread_struct
.Linux 盡可能避免使用 TSS(早期的 32 位 x86 版本使用它,但很久以前就改變了)。