上下文交換

上下文交換(context switch),又稱環境切換,電腦術語,是一個儲存和重建CPU的狀態 (內文),因此令多個進程(process)可以分享單一CPU資源的計算過程。要交換CPU上的進程時,必需先行儲存目前進程的狀態,再將欲執行的進程之狀態讀回CPU中。

 

何時交換?

有三種可能的情況會發生上下文交換,分別爲:

多工

最常見的,在一些排程(scheduling)算法內,其中行程有時候需要暫時離開CPU,讓另一個行程進來CPU運作。在先佔式多工系統中,每一個行程都將輪流執行不定長度的時間,這些時間段落稱爲時間片。如果行程並非自願讓出CPU(例如執行I/O操作時,行程就需放棄CPU使用權),當時限到時,系統將產生一個定時中斷,操作系統將排定由其它的行程來執行。此機制用以確保CPU不致被較依賴處理器運算的行程壟斷。若無定時中斷,除非行程自願讓出CPU,否則該行程將持續執行。對於擁有較多I/O指令的行程,往往執行不了多久,便需要讓出CPU;而較依賴處理器的行程相對而言I/O操作較少,反而能一直持續使用CPU,便形成了壟斷現象。此即Convoy效應。

中斷處理

在接受到中斷(Interrupt)的時候,CPU必須要進行上下文交換。

用戶態或者內核態的交換

當用戶態和內核態交換髮生的時候,並不需要進行上下文交換;並且用戶態和kernel mode的交換本身並不是一個上下文交換。不過,根據操作系統的不同,有時候會在此時進行一次上下文交換的步驟。

上下文交換:具體步驟

在一次交換中,第一個行程的狀態要被紀錄在某個地方,這樣當排程器(scheduler)要回到這個行程時,纔可以重建這個行程並且繼續運算。

這裏所謂“行程的狀態”,包含了這個行程使用的所有暫存器(register),特別是程式計數器;加上所有操作系統可能需要的特定資料。這些資料一般以名爲行程控制表(process control block,PCB)的數據結構儲存起來。

上下文交換:由軟件或硬件實現

上下文交換可分爲主要由軟件實現或由硬件實現。部分中央處理器,比如Intel 80386或同系列更高階的處理器,就具備支持上下文交換的硬件設計。

我們的公共號

    wuguiyunwei.com

wKioL1k_0tGSwluYAACeGDQ6kF0012.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章