程序排程程式負責決定將哪個程序投入執行,何時執行以及執行多長時間。
在執行態程序之間分配有限的處理器時間資源。
多工系統分為搶占式和非搶占式。
linux使用搶占式。(大部分現代系統都是搶占式)
io消耗型
處理器消耗型程序:把大多時間用於執行**的程序。
程序優先順序:
nice值:-20~+19,值越大優先順序越低;(linux系統中nice值表示時間片的比例)
實時優先順序:0~99,值越大優先順序越高;
時間片:乙個數值,它表明程序在搶占前所能持續執行的時間。
io消耗型不需要長的時間片,而處理器消耗型的程序則希望越長越好。
時間片過長將導致系統對互動的響應表現欠佳。
linux的cfs(完全公平排程演算法)排程器並沒有直接分配時間片到程序,它是將處理器使用按比劃分給程序。
所以程序所獲得的處理器時間其實跟系統負載相關。
且這個比例受nice值影響,nice值作為權重將調整程序所使用的處理器時間使用比。
linux排程器以模組方式提供。
這種模組化結構成為排程器類。
cfs是針對普通程序的排程類(sched_normal),位於kernel\sched_fair.c。
linux還提供了兩種實時排程策略:sched_fifo和sched_rr。
/*
* scheduling policies
*/#define sched_normal 0
#define sched_fifo 1
#define sched_rr 2
Linux核心設計與實現讀書筆記 1
我現在要做的科研專案涉及到核心程式設計的知識,所以在學校的圖書館借了一本 linux核心設計與實現 英文名 linux kernel development 打算通過這本書來了解一下linux核心各部分的原理。我選擇這本書的原因很簡單 薄。全書只有二百多頁,但內容還是很全面的。翻譯質量還可以,譯者還...
linux核心設計與實現讀書筆記 記憶體管理
一 頁 記憶體管理的基本單位 頁。核心中用struct page表示物理頁,位於,屬性包括flag頁狀態 count頁的引用計數,virtual頁虛擬位址。目的在於描述物理記憶體本身而非其中的資料。1 獲得頁 核心 alloc pages gft t gft mask,order 連續分配2n個連續...
linux核心設計與實現讀書筆記 程序的位址空間
記憶體描述符 描述程序的位址空間,mm struct定義在中,包括記憶體物件的位址 使用該位址的程序 頁表等資訊,自身鏈結在雙向鍊錶中。首元素init mm記憶體描述符,代表init程序的位址空間,操作時使用mmlist lock鎖防治併發。task struct結構體mm存放記憶體描述符。分配記憶...