多執行緒程式設計中一般執行緒的個數都大於 cpu 核心的個數,而乙個 cpu 核心在任意時刻只能被乙個執行緒使用,為了讓這些執行緒能都 得到有效執行,cpu 採取的策略是為每個執行緒分配時間片並輪轉的形式。當乙個執行緒的時間片用完的時候就會重新處於就緒狀態讓給其他執行緒使用,這個過程就屬於一次上下文切換。
概括來說就是:當前任務在執行完 cpu 時間片切換到另乙個任務之前會先儲存自己的狀態,以便下次再切換回這個任務時,可以再載入這個任務的狀態。任務從儲存到再載入的過程就是一次上下文切換。
上下文切換通常是計算密集型的。也就是說,它需要相當可觀的處理器時間,在每秒幾十上百次的切換中,每次切換都需要納秒量級的時間。所以,上下文切換對系統來說意味著消耗大量的 cpu 時間,事實上,可能是作業系統中時間消耗最大的操作。
linux 相比與其他作業系統(包括其他類 unix 系統)有很多的優點,其中有一項就是,其上下文切換和模式切換的時間消耗非常少。
什麼是上下文切換
多執行緒程式設計中一般執行緒的個數都大於 cpu 核心的個數,而乙個 cpu 核心在任意時刻只能被乙個執行緒使用,為了讓這些執行緒都能得到有效執行,cpu 採取的策略是為每個執行緒分配時間片並輪轉的形式。當乙個執行緒的時間片用完的時候就會重新處於就緒狀態讓給其他執行緒使用,這個過程就屬於一次上下文切...
上下文切換
1 系統呼叫 一次系統呼叫其實是發生了兩次cpu上下文的切換 首先將使用者態的cpu暫存器中的指令儲存在系統核心中。為了執行核心態 需要將暫存器更新為核心態指令的位置,然後跳轉到核心空間去執行任務。當核心態的指令執行完成的時候,cpu暫存器將恢復儲存在系統核心中的上一次執行的使用者態,然後切換到使用...
上下文切換
上下文切換 有時也稱做程序切換或任務切換 是指 cpu 從乙個程序或執行緒切換到另乙個程序或執行緒。上下文切換與模式切換 上下文切換只能發生在核心態中。核心態是 cpu 的一種有特權的模式,在這種模式下只有核心執行並且可以訪問所有記憶體和其他系統資源。其他的程式,如應用程式,在最開始都是執行在使用者...