天天看點

Linux 程序排程小結

概述

這個問題又是面試常問問題,當時聽到感覺太寬泛了,有點大,心裡知道但是說不全,這裡做一下總結

【1】程序排程的作用

【2】排程德政策

1、 程序排程的作用

,程序排程就是對程序進行排程,即負責選擇下一個要運作的程序.通過合理的排程,系統資源才能最大限度地發揮作用,多程序才會有并發執行的效果.最終要完成的目标就是為了最大限度的利用處理器時間.即,隻要有可以執行的程序,那麼就總會有程序正在執行.當程序數大于處理器個數時,某一時刻總會有一些程序程序不能執行.這些程序等待運作.在這些等待運作的程序中選擇一個合适的來執行,是排程程式所需完成的基本工作.

2、排程政策

先給一張直覺圖

Linux 程式排程小結

【1】考慮到程序類型時:i/o消耗型程序 pk 處理器消耗型程序.

i/o消耗型程序:指程序大部分時間用來送出i/o請求或者是等待i/o請求.處理器消耗型程序:與i/o消耗型相反,此類程序把時間大多用在執行代碼上.此時排程政策通常要在兩個沖突的目标中尋找平衡:程序響應時間短(優先i/o消耗型程序)和最大系統使用率(優先處理器消耗型程序).linux為了保證互動式應用,是以對程序的響應做了優化,即更傾向于優先排程i/o消耗型程序.

【2】考慮到程序優先級時

linux實作了一種基于動态優先級的排程方法.即:一開始,先設定基本的優先級,然後它允許排程程式根據需要加,減優先級.

eg:如果一個程序在i/o等待上消耗的時間多于運作時間,則明顯屬于i/o消耗型程序,那麼根據1中的考慮,應該動态提高其優先級.

linux提供了兩組獨立的優先級範圍:

1)nice值:範圍從-20到+19.預設值是0,值越小,優先級越高.nice值也用來決定配置設定給程序的時間片的長短.

2)實時優先級:範圍為0到99.注意,任何實時程序的優先級都高于普通的程序.

【3】考慮到程序時間片時

時間片是一個數值,它表明程序在被搶占前所能持續運作的時間.排程政策必須規定一個預設的時間片.時間片過長,則會影響系統的互動性.時間片過短,則會明顯增大因程序頻繁切換所耗費的時間.排程程度提供較長的預設時間片給互動式程式.此外,linux排程程式還能根據程序的優先級動态調整配置設定給它的時間片,進而保證了優先級高的程序,執行的頻率高,執行時間長.當一個程序的時間片耗盡時,則認為程序到期了,此時不能在運作.除非所有程序都耗盡了他們的時間片,此時系統會給所有程序重新

轉載:http://blog.csdn.net/xsf50717/article/details/47292605

繼續閱讀