1. 程式人生 > >linux程序排程演算法

linux程序排程演算法

一:什麼是程序排程

  都知道linux是一種多使用者多工的作業系統,而當多個程序同時執行去,搶佔有限資源的時候,這時作業系統就會按照一定的原則將資源合理分配給請求資源的程序,這就是程序排程。

二:在linux作業系統中都有哪些程序排程演算法

  1. 先進先出演算法(FIFO):

       按照程序進入就緒佇列的先後次序來選擇。即每當進入程序排程,總是把就緒佇列的隊首程序投入執行。

2. 時間片輪轉演算法(RR):

        分時系統的一種排程演算法。輪轉的基本思想是,將CPU的處理時間劃分成一個個的時間片,就緒佇列中的程序輪流執行一個時間片。當時間片結束時,就強迫程序讓出CPU,該程序進入就緒佇列,等待下一次排程,同時,程序排程又去選擇就緒佇列中的一個程序,分配給它一個時間片,以投入執行。

  3. 最高優先順序演算法(HPF):

       程序排程每次將處理機分配給具有最高優先順序的就緒程序。最高優先順序演算法可與不同的CPU方式結合形成可搶佔式最高優先順序演算法和不可搶佔式最高優先順序演算法。

  4. 多級佇列反饋法:

       幾種排程演算法的結合形式多級佇列方式。

三:linux核心的三種排程方法: 1. SCHED_OTHER 分時排程策略

2. SCHED_FIFO實時排程策略,先到先服務

3. SCHED_RR實時排程策略,時間片輪轉

實時程序將得到優先呼叫,實時程序根據實時優先順序決定排程權值,分時程序則通過nice和counter值決 定權值,nice越小,counter越大,被排程的概率越大,也就是曾經使用了cpu最少的程序將會得到優先調 度。