作業系統設計/程序/上下文切換
外觀
< 作業系統設計
上下文切換是在 CPU 需要開始執行新的程序時,儲存活動程序狀態的過程。例如,程序 A 以及其地址空間和堆疊當前正在由 CPU 執行,並且有一個系統呼叫跳轉到更高優先順序的程序 B;CPU 需要記住程序 A 的當前狀態,以便它可以暫停其操作,開始執行新程序 B,並在完成後返回到先前執行的程序 A。
上下文切換是資源密集型的,大多數作業系統設計人員試圖減少對上下文切換的需求。它們可以根據 CPU 架構由軟體或硬體控制。
上下文切換可以與程序切換、程序內的執行緒切換或暫存器切換相關。上下文切換的主要需求出現在 CPU 需要在使用者模式和核心模式之間切換時,但一些作業系統設計可能會避免它。
一種常見的上下文切換方法是為每個可切換實體(執行緒/程序)使用一個單獨的堆疊,並使用堆疊來儲存上下文字身。這樣,上下文字身僅僅是堆疊指標。例如,
pusha ;push all registers
mov OLD_ESP, SAVED_LOCATION
mov NEW_ESP, esp
popa
這裡上下文切換的行為是透過將堆疊指標更改為一個新的位置來完成的,並且暫存器本身儲存在堆疊上。