3

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

4

1 回答 1

0

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

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

于 2013-03-11T10:01:16.227 回答