上下文切換

2022-09-13 02:24:12 字數 1135 閱讀 9514

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 4593944 453560 1118192    0    0    14    12  238   30  6  1 92  1  

0  0      0 4593212 453568 1118816    0    0     0    96  958 1108  4  1 94  2  

0  0      0 4593360 453568 1118456    0    0     0     0  895 1044  3  1 95  0  

1  0      0 4593408 453568 1118456    0    0     0     0  929 1073  4  1 95  0  

0  0      0 4593496 453568 1118456    0    0     0     0 1133 1363  6  1 93  0  

0  0      0 4593568 453568 1118476    0    0     0     0  992 1190  4  1 95  0  

vmstat 1指每秒統計一次, 其中cs列就是指上下文切換的數目. 一般情況下, 空閒系統的上下文切換每秒大概在1500以下. 

對於我們經常使用的搶占式作業系統來說, 引起上下文切換的原因大概有以下幾種: 1. 當前執行任務的時間片用完之後, 系統cpu正常排程下乙個任務 2. 當前執行任務碰到io阻塞, 排程器將掛起此任務, 繼續下一任務 3. 多個任務搶占鎖資源, 當前任務沒有搶到,被排程器掛起, 繼續下一任務 4. 使用者**掛起當前任務, 讓出cpu時間 5. 硬體中斷. 前段時間發現有人在使用futex的wait和wake來測試context switch的直接消耗(鏈結), 也有人使用阻塞io來測試context switch的消耗(鏈結).

上下文切換

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

上下文切換

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

筆記 cpu上下文,上下文切換

cpu 上下文 cpu 暫存器,是 cpu 內建的容量小 但速度極快的記憶體。而程式計數器,則是用來儲存 cpu 正在執行的指令位置 或者即將執行的下一條指令位置。它們都是 cpu 在執行任何任務前,必須的依賴環境。cpu 上下文切換 就是先把前乙個任務的 cpu 上下文 也就是 cpu 暫存器和程...