有进程 A 和 B,A 在运行,切换进程的时候需要把此刻 A 进程相关的寄存器的值放入系统内核栈或者别的什么地,然后把 B 进程相关的上下文填回寄存器,然而操作系统本身也是一个进程,那在这切换的过程中,操作系统的上下文放在了哪里?
书本没有很好的描述这块,我知道中间有硬件的参与,但是书里只说了 CPU 有切换上下文的能力,所以想各位彦祖验证我的想法是
- 当中断发生时,硬件读取并执行中断处理程序,然后保存 A 进程的寄存器的值到某个存储空间 S
- 硬件把内核进程的上下文信息填回寄存器
- 内核进程把在某个地方的 A 的上下文保存到自己的内核栈
- 切换 TLB 等其他操作
- 内核从自己的内核栈中读取进程 B 的上下文放到某个存储空间 S
- 硬件从存储空间 S 把值填回寄存器