Aramya Asked: 2022-03-25 18:47:11 +0800 CST2022-03-25 18:47:11 +0800 CST 2022-03-25 18:47:11 +0800 CST x86-64 linux内核的上下文切换时如何保存执行状态? 772 由于 TSS 不存储 x86-64 中寄存器的值,所以在上下文切换发生时如何保存这些值? kernel process 1 个回答 Voted Best Answer Stephen Kitt 2022-03-26T01:13:18+08:002022-03-26T01:13:18+08:00 通用寄存器大多保存在堆栈上;见PUSH_REGS和struct pt_regs。要查找实际用途,请查找PUSH_AND_CLEAR_REGS和POP_REGS。 CPU 状态的其余部分存储在thread_struct. Linux 尽可能避免使用 TSS(早期的 32 位 x86 版本使用它,但很久以前就改变了)。
通用寄存器大多保存在堆栈上;见
PUSH_REGS
和struct pt_regs
。要查找实际用途,请查找PUSH_AND_CLEAR_REGS
和POP_REGS
。CPU 状态的其余部分存储在
thread_struct
.Linux 尽可能避免使用 TSS(早期的 32 位 x86 版本使用它,但很久以前就改变了)。