上下文切換和鎖

2021-07-02 18:27:08 字數 390 閱讀 3274

併發程式必須考慮上下文切換(context switch)的問題,即程序切換或執行緒切換導致的系統開銷。即使是i/o密集型的伺服器,也不應該使用過多的工作執行緒(或工作程序)。

多執行緒伺服器的乙個優點是不同的執行緒可以同時執行在不同的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...