x86_64中的结构thread_struct中没有ip,那么内核如何在新进程中切换到正确的ip?

时间:2013-03-11 08:34:42

标签: linux linux-kernel

x86_64中的结构thread_struct中没有ip,那么context_switch函数如何切换到新进程的正确ip?

1 个答案:

答案 0 :(得分:0)

我认为核心寄存器(特殊寄存器和通用寄存器)保存在被中断的进程的内核堆栈中。每次中断/异常发生时,CPU陷阱到管理员模式(特权模式),内核都会将上下文(一个堆栈帧)保存到已被中断的进程的内核堆栈中。

我认为sp(堆栈指针)寄存器应该保存在thread_struct中,它指向特定进程的内核堆栈的顶部,context_switch将使用sp来恢复准备运行的进程的上下文。