理解執行緒上下文切換

2021-09-25 06:16:38 字數 344 閱讀 7289

在多執行緒程式設計中,執行緒個數一般都大於cpu個數,而每個cpu同一時刻只能被乙個執行緒使用,為了讓使用者感覺多個執行緒是在同時執行的,cpu資源採用了時間片輪轉的策略,也就是給每乙個執行緒分配乙個時間片,執行緒在時間片內占用cpu執行任務。當前執行緒使用時間片之後,就會處於就緒狀態並讓出cpu讓其他執行緒占用,這就是上下文切換,從當前執行緒的上下文切換到了其他執行緒。

那麼就有乙個問題,讓出cpu的執行緒等下次輪到自己占有cpu的時,如何知道自己之前執行到了**,所以在切換上下文時需要儲存當前執行緒的執行現場,當再次執行時根據儲存的執行現場資訊恢復執行現場。

執行緒上下文切換的時機:

當前執行緒的cpu時間片使用完處於就緒狀態時,當前執行緒被其他執行緒中斷時

上下文切換

1 系統呼叫 一次系統呼叫其實是發生了兩次cpu上下文的切換 首先將使用者態的cpu暫存器中的指令儲存在系統核心中。為了執行核心態 需要將暫存器更新為核心態指令的位置,然後跳轉到核心空間去執行任務。當核心態的指令執行完成的時候,cpu暫存器將恢復儲存在系統核心中的上一次執行的使用者態,然後切換到使用...

上下文切換

上下文切換 有時也稱做程序切換或任務切換 是指 cpu 從乙個程序或執行緒切換到另乙個程序或執行緒。上下文切換與模式切換 上下文切換只能發生在核心態中。核心態是 cpu 的一種有特權的模式,在這種模式下只有核心執行並且可以訪問所有記憶體和其他系統資源。其他的程式,如應用程式,在最開始都是執行在使用者...

上下文切換

vmstat cs 每秒上下文切換次數 的疑惑 in 每秒cpu中斷次數 shell vmstat 1 procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 45939...