linux程序排程

2021-05-26 21:17:49 字數 1128 閱讀 9391

排程---從就緒的程序選出最適合的乙個來執行。

知識點-----

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 實...