上下文交換:具體步驟

上下文交換:具體步驟

上下文交換(context switch),又稱環(huán)境切換,電腦術(shù)語(yǔ),是一個(gè)儲(chǔ)存和重建CPU的狀態(tài) (內(nèi)文),因此令多個(gè)進(jìn)程(process)可以分享單一CPU資源的計(jì)算過(guò)程。要交換CPU上的進(jìn)程時(shí),必需先行儲(chǔ)存目前進(jìn)程的狀態(tài),再將欲執(zhí)行的進(jìn)程之狀態(tài)讀回CPU中。

?

何時(shí)交換?

有三種可能的情況會(huì)發(fā)生上下文交換,分別為:

多工

最常見(jiàn)的,在一些排程(scheduling)算法內(nèi),其中行程有時(shí)候需要暫時(shí)離開(kāi)CPU,讓另一個(gè)行程進(jìn)來(lái)CPU運(yùn)作。在先占式多工系統(tǒng)中,每一個(gè)行程都將輪流執(zhí)行不定長(zhǎng)度的時(shí)間,這些時(shí)間段落稱為時(shí)間片。如果行程并非自愿讓出CPU(例如執(zhí)行I/O操作時(shí),行程就需放棄CPU使用權(quán)),當(dāng)時(shí)限到時(shí),系統(tǒng)將產(chǎn)生一個(gè)定時(shí)中斷,操作系統(tǒng)將排定由其它的行程來(lái)執(zhí)行。此機(jī)制用以確保CPU不致被較依賴處理器運(yùn)算的行程壟斷。若無(wú)定時(shí)中斷,除非行程自愿讓出CPU,否則該行程將持續(xù)執(zhí)行。對(duì)于擁有較多I/O指令的行程,往往執(zhí)行不了多久,便需要讓出CPU;而較依賴處理器的行程相對(duì)而言I/O操作較少,反而能一直持續(xù)使用CPU,便形成了壟斷現(xiàn)象。此即Convoy效應(yīng)。

中斷處理

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

用戶態(tài)或者內(nèi)核態(tài)的交換

當(dāng)用戶態(tài)和內(nèi)核態(tài)交換發(fā)生的時(shí)候,并不需要進(jìn)行上下文交換;并且用戶態(tài)和kernel mode的交換本身并不是一個(gè)上下文交換。不過(guò),根據(jù)操作系統(tǒng)的不同,有時(shí)候會(huì)在此時(shí)進(jìn)行一次上下文交換的步驟。

上下文交換:具體步驟

在一次交換中,第一個(gè)行程的狀態(tài)要被紀(jì)錄在某個(gè)地方,這樣當(dāng)排程器(scheduler)要回到這個(gè)行程時(shí),才可以重建這個(gè)行程并且繼續(xù)運(yùn)算。

這里所謂“行程的狀態(tài)”,包含了這個(gè)行程使用的所有暫存器(register),特別是程式計(jì)數(shù)器;加上所有操作系統(tǒng)可能需要的特定資料。這些資料一般以名為行程控制表(process control block,PCB)的數(shù)據(jù)結(jié)構(gòu)儲(chǔ)存起來(lái)。

上下文交換:由軟件或硬件實(shí)現(xiàn)

上下文交換可分為主要由軟件實(shí)現(xiàn)或由硬件實(shí)現(xiàn)。部分中央處理器,比如Intel 80386或同系列更高階的處理器,就具備支持上下文交換的硬件設(shè)計(jì)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享