排程---從就緒的程序選出最適合的乙個來執行。
知識點-----
1---排程策略
2---排程時機
3---排程步驟
排程策略--------
sched_normal(sched_other):普通的分時程序
sched_fifo---先入先出的實時程序
sched_rr---時間片輪轉的實時程序
sched_batch----批處理程序
sched_idle----只有在系統空閒時才能夠被排程執行的程序。
乙個程序會選擇以上的一種來排程,而不是說整個系統都是採用的某種排程。
排程類------它的引入增強了核心排程程式的可擴充套件性,這些類(排程程式模組)封裝了排程策略,並將排程策略模組化。
cfs排程類---在kernel/sched_fair.c中實現用於以下排程策略---
sched_normal sched_batch sched_idle
實時排程類---在kernel/sched_rt.c中實現用於sched_rr
sched_fifo
策略。排程類
struct sched_class
pick_next_task
------選擇下乙個要執行的程序。
排程時機----排程什麼時候發生?即schedule()函式什麼時候被呼叫。
排程發生的方式----
1--主動式
在核心中直接呼叫schedule()。當程序需要等待資源而暫時停止執行時,會把狀態置於掛起(睡眠),並主動請求排程,讓出cpu。
主動放棄cpu例子:
1---current->state=task_interruptible
2---schedule()
2被動式(搶占)
使用者搶占----2.4----2.6
核心搶占---2.6
使用者搶占發生在-------
從系統呼叫返回使用者空間。
從中斷處理程式返回使用者空間。
核心即將返回使用者空間的時候,如果need_resched標誌被設定,會導致schedule()被呼叫,此時就會發生使用者搶占。
linux程序排程
搶占就是程序排程,使用者程序搶占發生在以下情況 1 從系統呼叫返回使用者空間的時候 2 從中斷處理程式返回使用者空間時。在時鐘中斷中會呼叫scheduler tick 函式,該函式在程序時間片用完的時候會設定need resched標誌,當從時鐘中斷或者其他中斷返回後檢查need resched,核...
linux 程序排程
linux程序優先順序 1.nice值 20 19 預設0 nice值越大,程序優先順序越低 2.實時優先順序 0 99 實時優先順序越高,程序優先順序越高 任何實時程序的優先順序都高於普通的程序,也就是說實時優先順序和nice優先順序處於互補相交的兩個範疇 linux預設的程序排程模型是時間迴圈共...
Linux程序排程
1 程序的兩種分類 io bound cpu bound 互動式 批處理 實時 2 排程策略和排程演算法 排程策略 sched normal sched fifo sched rr sched batch sched idle 排程演算法 2.4 active expire 2.6 非實時cfs 實...