x86-64 Linux 内核中上下文切换时的执行状态是如何保存的?

x86-64 Linux 内核中上下文切换时的执行状态是如何保存的?

由于TSS不存储x86-64中寄存器的值,那么当上下文切换发生时,这些寄存器的值是如何保存的呢?

答案1

通用寄存器大多保存在堆栈中;看PUSH_REGSstruct pt_regs。要查找实际用途,请查找PUSH_AND_CLEAR_REGSPOP_REGS

其余的CPU状态存储在thread_struct

Linux 尽可能避免 TSS(早期的 32 位 x86 版本使用它,但很久以前就改变了)。

相关内容