操作系统设计/进程/上下文切换
外观
< 操作系统设计
上下文切换是在 CPU 需要开始执行新的进程时,存储活动进程状态的过程。例如,进程 A 以及其地址空间和堆栈当前正在由 CPU 执行,并且有一个系统调用跳转到更高优先级的进程 B;CPU 需要记住进程 A 的当前状态,以便它可以暂停其操作,开始执行新进程 B,并在完成后返回到先前执行的进程 A。
上下文切换是资源密集型的,大多数操作系统设计人员试图减少对上下文切换的需求。它们可以根据 CPU 架构由软件或硬件控制。
上下文切换可以与进程切换、进程内的线程切换或寄存器切换相关。上下文切换的主要需求出现在 CPU 需要在用户模式和内核模式之间切换时,但一些操作系统设计可能会避免它。
一种常见的上下文切换方法是为每个可切换实体(线程/进程)使用一个单独的堆栈,并使用堆栈来存储上下文本身。这样,上下文本身仅仅是堆栈指针。例如,
pusha ;push all registers
mov OLD_ESP, SAVED_LOCATION
mov NEW_ESP, esp
popa
这里上下文切换的行为是通过将堆栈指针更改为一个新的位置来完成的,并且寄存器本身存储在堆栈上。