天天看點

2014.5.19知識點學習:上下文切換

上下文切換(Context Switch) 或者環境切換

多任務系統中,上下文切換是指CPU的控制權由運作任務轉移到另外一個就緒任務時所發生的事件。(時間片切換)

在作業系統中,CPU切換到另一個程序需要儲存目前程序的狀态并恢複另一個程序的狀态:目前運作任務轉為就緒(或者挂起、删除)狀态,另一個被標明的就緒任務成為目前任務。上下文切換包括儲存目前任務的運作環境,恢複将要運作任務的運作環境。(程序切換)

程序上下文用程序的PCB(程序控制塊,也稱為PCB,即任務控制塊)表示,它包括程序狀态,CPU寄存器的值等。

通常通過執行一個狀态儲存來儲存CPU目前狀态,然後執行一個狀态恢複重新開始運作。

上下文切換會對性能造成負面影響。然而,一些上下文切換相對其他切換而言更加昂貴;其中一個更昂貴的上下文切換是跨核上下文切換(Cross-Core

Context Switch)。一個線程可以運作在一個專用處理器上,也可以跨處理器。由單個處理器服務的線程都有處理器關聯(Processor

Affinity),這樣會更加有效。在另一個處理器核心搶占和排程線程會引起緩存丢失,作為緩存丢失和過度上下文切換的結果要通路本地記憶體。總之,這稱為“跨核上下文切換”。