1. 程式人生 > >Linux內核設計與實現 總結筆記(第四章)進程調度

Linux內核設計與實現 總結筆記(第四章)進程調度

什麽 原則 好的 nic 調度系統 相交 中間 使用 就是

進程調度

調度程序負責決定將哪個進程投入運行,何時運行以及運行多長時間。

調度程序沒有太復雜的原理,最大限度地利用處理器時間的原則是,只要有可以執行的進程,那麽就總會有進程正在執行。

多任務

多任務系統可以劃分為兩類:非搶占式多任務和搶占式多任務。

Linux提供了搶占式的多任務模式,在此模式下,有調度程序來決定什麽時候停止一個進程的運行,以便其他進程能夠得到執行機會。

這個強制掛起的動作就叫搶占。進程在被搶占之前,能夠運行的時間是預先設置好的,叫進程的時間片。

Linux 的進程調度

最終在2.6.23中確定了Linux的調度算法,稱為“完全公平調度算法”,簡稱CFS。

策略

I/O消耗型和處理器消耗型進程

進程可以被分為I/O消耗型和處理器消耗型。

調度策略通常要在兩個矛盾的目標中間尋找平衡:進程響應速度(響應時間短)和最大系統利用率(高吞吐量)。

進程優先級

調度算法中最基本的一類就是基於優先級的調度。通常做法是優先級高的進程先運行,低的後運行,相同優先級的進程按輪轉方式進行調度。

Linux采用了兩種不同優先級範圍,第一種是用nice值,從-20到+19,默認為0。nice值越大,優先級越低

第二種範圍是實時優先級,其值是可配置的。範圍是0到99(包括0和99),實時優先級越高,數值越大。

nice和實時優先級是兩個互不相交的範疇。

時間片

時間片是一個數值,它表明進程再被搶占前所能持續運行的時間。過長或過短的設置時間片都不合適,會增加系統開銷。

很多操作系統默認10ms,但Linux的CFS調度系統不是直接分配時間片給進程,而是按nice值比例分配進程時間片。

而Linux的搶占也是需要根據時間片的,如果消耗的使用比比當前進程小,則新進程立刻投入運行,搶占當前進程。否則,退出其運行。

Linux調度算法

Linux調度器是以模塊方式提供的,目的是可以允許不同類型的進程可以針對性的選擇調度算法。這種模塊化結構被稱為調度器類。

Linux內核設計與實現 總結筆記(第四章)進程調度