Linux 學習筆記 程序排程及演算法

2021-08-30 11:22:23 字數 1541 閱讀 5398

linux程序排程的目標

2.加強互動性能:在系統相當的負載下,也要保證系統的響應時間;

3.保證公平和避免飢渴;

4.smp排程:排程程式必須支援多處理系統;

5.軟實時排程:系統必須有效的呼叫實時程序,但不保證一定滿足其要求;

1、多工作業系統就是能同時併發的互動執行多個程序的作業系統。

2、多工作業系統使多個程序處於堵塞或者睡眠狀態,實際不被投入執行,這些任務儘管位於記憶體,但是並不處於可執行狀態。

3、多工系統分類:

(1)非搶占式多工

(2)搶占式多工

4、linux提供了搶占式的多工模式。在此模式下,由排程程式來決定什麼時候停止乙個程序的執行,以便其他程序能夠得到執行機會。這個強制的掛起動作叫做搶占。程序被搶占之前能夠執行的時間是預先設定好的,叫程序的時間片–程序(被搶占前)能夠執行的時間。時間片實際上就是分配給每個可執行程序的處理器時間段。

5、在非搶占式多工模式下,除非程序自己主動停止執行,否則它會一直執行。程序主動掛起自己的操作稱為讓步。但這種機制有很多缺點:排程程式無法躲每個程序該執行多長時間作出統一規定,所以程序獨佔的處理器時間可能會超過使用者的預料:更糟的是,乙個絕不做出讓步的懸掛程序就能使系統崩潰。

1、o(1)排程器擁有數以十計的多處理器的環境,但缺少互動程序。

2、反轉樓梯最後期限排程演算法(rsdl),吸取了佇列理論,公平排程。又被稱為完美公平排程演算法(cfs)。

5.4.1 排程器類

1、linux排程器是以模組方式提供,目的是允許不同型別的程序可以有針對性地選擇排程演算法。這種模組化結構被稱為排程器類,它允許多種不同的可動態新增的排程演算法並存,排程屬於自己範疇的程序。

2、基礎的排程器**定義在kernel/sched.c檔案中。

3、每個排程器有乙個優先順序,會按照優先順序順序遍歷排程類,選擇優先順序最高的排程器類。

4、完全公平排程cfs是乙個針對普通程序的排程類。

5.4.2 unix系統中的程序排程

1、unix使用的排程演算法是分配絕對的時間片,這樣就會引發固定的切換頻率,不利於公平性。而linux採用的cfs完全摒棄了時間片,分配給程序乙個處理器使用比重,保證恆定的公平性和變動的切換頻率。

5.4.3 公平排程

1、cfs的做怯是允許每個程序執行一段時間、迴圈輪轉、選擇執行最少的程序作為下乙個執行程序,而不再採用分配給每個程序時間片的做法了,在所有可執行程序總數基礎上計算出乙個程序應該執行多久。而不是依靠nice 值來計算時間片。

2、nice 值在 cfs 中被作為程序獲得的處理器執行比的權重:越高的nice 值(越低的優先順序)程序獲得更低的處理器使用權重。

3、目標延遲:無限小排程週期的近似值

4、最小粒度:每個程序獲得的時間片底線,預設為1ms。

5、任何程序所獲得的處理器時間是由它自己和其他所有可執行程序nice 值的相對差值決定的。

5.5 linux排程的實現

1、cfs排程演算法的實現:

四個組成部分:

(1)時間記賬

(2)程序選擇

(3)排程器入口

(4)睡眠和喚醒

Linux核心學習筆記三 程序排程

程序排程 在可執行態程序之間分配有限處理器時間資源的核心子系統。1 程序型別 i o消耗型程序 大部分時間用來提交i o請求或是等待i o請求,經常處於可執行狀態,但執行時間短,等待請求過程時處於阻塞狀態。如互動式程式。處理器消耗型程序 時間大都用在執行 上,除非被搶占否則一直不停的執行。綜合型 既...

linux核心學習筆記 六 程序排程

linux 核心程序排程 linux 核心筆記 程序排程 linux 核心筆記 程序排程 4 程序排程示意圖 linux的程序排程如圖1所示。5 smp系統的排程 smp系統中的排程演算法的不同主要表現在排程演算法的最後,對於被切換出當前cpu執行權的程序呼叫了schedule tail函式,目的是...

Linux核心學習筆記三 程序排程

程序排程 在可執行態程序之間分配有限處理器時間資源的核心子系統。1程序型別 i o消耗型程序 大部分時間用來提交i o請求或是等待i o請求,經常處於可執行狀態,但執行時間短,等待請求過程時處於阻塞狀態。如互動式程式。處理器消耗型程序 時間大都用在執行 上,除非被搶占否則一直不停的執行。綜合型 既是...