進程調度的時候會出現上下文切換,從而帶來上下文切換的開銷,使性能下降
進程什麼時候被調度:
- 進程時間片被耗盡,會調度處於等待狀態的進程
- 進程在系統資源不足時(例如內存不足),需要等待資源滿足後再運行,這時CPU會調度其它進程運行
- 進程調度sleep睡眠時,會調度其它進程運行
- 當有優先級更高的進程時,需要掛起當前進程,運行更高優先級的進程
- 當發生硬件終端時,會掛起當前進程,轉而執行內核中的硬件中斷程序
過多的上下文切換會把內核時間消耗在寄存器、 內核棧、以及虛擬內存等數據的保留和恢復上,從而縮短進程真正的運行時間,導致系統的整體性能下降