linux系統中的程序排程

2021-05-22 23:34:19 字數 1500 閱讀 4823

linux

系統中的程序排程:

linux

系統支援實時和非實時兩種程序,

實時程序採用

sched_fifo

或者sche_rr

排程策略,普通程序採用

sche_other

排程策略。在排程演算法的實現上,

linux

核心中每個任務都用

task_struct

結構體來表示,在該結構中有四個與排程相關的策劃那個暈,是

rt_proirity

、policy

、proority(nice)

、counter

。核心排程程式根據這四個成員進行排程。

在svhed_other

排程策略中排程器總是選擇哪個

priority+counter

值最大的程序來排程執行。從邏輯上分析,

sched_other

排程策略存在著排程週期

(epoch)

,每乙個排程週期中,乙個程序的

priority

和counter

值的大小影響而來當前時刻應該排程哪乙個程序來執行,其中

priority

是乙個固定不變的值,在程序建立時就已經確定,它代表了該程序的優先順序,也代表著該程序在每個排程週期中能夠得到的時間片的多少;

counter

是乙個動態變化的值,它反映了乙個程序在當前的排程週期中還剩下的時間片,不再與本排程週期的程序排程。當所有的時間片都用完時,乙個排程週期結束,周而復始。在

2.4核心版本以上的核心中,

priority

被nice

取代,但二者類似。

所以schrd_other

排程策略本質上是一種比例共享的排程策略,它的這種設計方法能夠保證程序排程的公平性——乙個低階優先順序的程序在每個

epoch

中歐冠也會得到自己應得的

cpu時間,也提供了不同優先順序別的區分,具有較高的

priority

值的程序能夠獲得更多的餓

cpu時間片

實時程序使用的是基於實時優先順序

rt_priority

的優先順序排程策略,但根據不用的排程策略,同一實時優先順序的程序之間的排程方法有所不同:

(1) eched_fifo

:不同的程序根據靜態優先順序進行排隊,然後再同乙個優先順序的佇列中,誰先準備好執行就點排程誰,並且正在執行的程序不會被終止直到以下情況發生;

a.被擁有更高優先順序的程序所搶占

cpu

b.自己因為資源請求而阻塞

c.自己主動放棄

cpu(呼叫

sched_yield

)(2) sched_rr

:這種排程策略跟上面的一樣,除了給每個程序分配乙個時間片。時間片到了正在執行的程序就放棄執行;時間片的程度可以通過

sched_rr_get_intrval.

Linux系統中的程序排程演算法

在作業系統中,排程是指一種資源分配,因而排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法,對於不同的系統和系統目標,通常採用不同的排程演算法。以下就linux的程序排程演算法加以解釋。一 以下演算法用於實時系統 1 時間片輪轉排程演算法 round robin sched rr,系統使每...

Linux中的程序排程策略

linux 核心的三種主要排程策略 1 sched other 分時排程策略,2 sched fifo 實時排程策略,先到先服務 3 sched rr 實時排程策略,時間片輪轉 實時程序將得到優先呼叫,實時程序根據實時優先順序決定排程權值。分時程序則通過 nice 和counter 值決定權值,ni...

linux程序排程

排程 從就緒的程序選出最適合的乙個來執行。知識點 1 排程策略 2 排程時機 3 排程步驟 排程策略 sched normal sched other 普通的分時程序 sched fifo 先入先出的實時程序 sched rr 時間片輪轉的實時程序 sched batch 批處理程序 sched i...