支持多任務(wù)處理是CPU設(shè)計(jì)史上最大的跨越之一互订。在計(jì)算機(jī)中,多任務(wù)處理是指同時(shí)運(yùn)行兩個(gè)或多個(gè)程序所禀。從使用者的角度來(lái)看方面,這看起來(lái)并不復(fù)雜或者難以實(shí)現(xiàn),但是它確實(shí)是計(jì)算機(jī)設(shè)計(jì)史上一次大的飛躍色徘。在多任務(wù)處理系統(tǒng)中恭金,CPU需要處理所有程序的操作,當(dāng)用戶來(lái)回切換它們時(shí)褂策,需要記錄這些程序執(zhí)行到哪里横腿。上下文切換就是這樣一個(gè)過程,他允許CPU記錄并恢復(fù)各種正在運(yùn)行程序的狀態(tài)斤寂,使它能夠完成切換操作耿焊。
在上下文切換過程中,CPU會(huì)停止處理當(dāng)前運(yùn)行的程序遍搞,并保存當(dāng)前程序運(yùn)行的具體位置以便之后繼續(xù)運(yùn)行罗侯。從這個(gè)角度來(lái)看,上下文切換有點(diǎn)像我們同時(shí)閱讀幾本書溪猿,在來(lái)回切換書本的同時(shí)我們需要記住每本書當(dāng)前讀到的頁(yè)碼钩杰。在程序中,上下文切換過程中的“頁(yè)碼”信息是保存在進(jìn)程控制塊(PCB)中的诊县。PCB還經(jīng)常被稱作“切換楨”(switchframe)讲弄。“頁(yè)碼”信息會(huì)一直保存到CPU的內(nèi)存中依痊,直到他們被再次使用避除。
在三種情況下可能會(huì)發(fā)生上下文切換:中斷處理,多任務(wù)處理胸嘁,用戶態(tài)切換瓶摆。在中斷處理中,其他程序”打斷”了當(dāng)前正在運(yùn)行的程序性宏。當(dāng)CPU接收到中斷請(qǐng)求時(shí)赏壹,會(huì)在正在運(yùn)行的程序和發(fā)起中斷請(qǐng)求的程序之間進(jìn)行一次上下文切換。在多任務(wù)處理中衔沼,CPU會(huì)在不同程序之間來(lái)回切換蝌借,每個(gè)程序都有相應(yīng)的處理時(shí)間片昔瞧,CPU在兩個(gè)時(shí)間片的間隔中進(jìn)行上下文切換。對(duì)于一些操作系統(tǒng)菩佑,當(dāng)進(jìn)行用戶態(tài)切換時(shí)也會(huì)進(jìn)行一次上下文切換自晰,雖然這不是必須的。
操作系統(tǒng)或者計(jì)算機(jī)硬件都支持上下文切換稍坯。一些現(xiàn)代操作系統(tǒng)通過系統(tǒng)本身來(lái)控制上下文切換酬荞,整個(gè)切換過程中并不依賴于硬件的支持,這樣做可以讓操作系統(tǒng)保存更多的上下文切換信息瞧哟。