Linux是如何同時運行多個進程的
最新
08-19
Linux是一個多任務的操作系統,具備多個進程同時運行的能力。給我們的感覺好像Linux同時完成了不同程序的運行。但處理器的數量是有限制的,要並行地執行多個程序並且保證實時響應,其實是通過進程調度的相關演算法,使處理器在某一時刻僅運行一個進程,其他進程被暫時掛起,每個進程都分配到相應的時間片,即一個進程允許運行的時間片段。當時間片用完之後,便讓出處理器給下一個進程運行。不同的操作系統會有不同的策略及演算法來管理這些進程在處理器運行的時間,即進程的調度。
現代的調度器設計兩個概念,一個是進程優先順序,一個是時間片。Unix是通過nice值來決定進程的優先順序,優先順序越高,nice值越低;優先順序越低,nice值越高。nice值對應著相應的絕對時間。也即一個進程運行的時間是絕對的,不會隨著進程的增加或減少而發生變化。而這點Linux進行了修正。
2.6版本以後的Linux採用其中一種叫做CFS(完全公平調度)的調度器類來進行普通進程的調度。CFS的優化之處在於nice值不是對應一個絕對的時間片,而是進程獲得處理器的時間片是根據進程的數量來決定佔據處理器使用比例,通過這點優化,使得Linux系統進程佔用處理器時間保證了相對的公平性。
TAG:小潮潮 |