x86_64中的结构thread_struct中没有ip,那么context_switch函数如何切换到新进程的正确ip?
答案 0 :(得分:0)
我认为核心寄存器(特殊寄存器和通用寄存器)保存在被中断的进程的内核堆栈中。每次中断/异常发生时,CPU陷阱到管理员模式(特权模式),内核都会将上下文(一个堆栈帧)保存到已被中断的进程的内核堆栈中。
我认为sp(堆栈指针)寄存器应该保存在thread_struct中,它指向特定进程的内核堆栈的顶部,context_switch将使用sp来恢复准备运行的进程的上下文。