程式切換(上下文切換)

Leon_Jinhai_Sun發表於2020-10-18

多工作業系統是怎麼實現執行遠大於CPU 數量的任務個數的?當然,這些任務實際上並不是真的在同時執行,而是因為系統通過時間片分片演算法,在很短的時間內,將CPU 輪流分配給它們,造成多工同時執行的錯覺。

為了控制程式的執行,核心必須有能力掛起正在CPU 上執行的程式,並恢復以前掛起的某個程式的執行。這種行為被稱為程式切換。

什麼叫上下文?

在每個任務執行前,CPU 都需要知道任務從哪裡載入、又從哪裡開始執行,也就是說,需要系統事先幫它設定好CPU 暫存器和程式計數器(Program Counter),這個叫做CPU 的上下文。

而這些儲存下來的上下文,會儲存在系統核心中,並在任務重新排程執行時再次載入進來。這樣就能保證任務原來的狀態不受影響,讓任務看起來還是連續執行。

在切換上下文的時候,需要完成一系列的工作,這是一個很消耗資源的操作。

 

相關文章