色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

linux進程調度的三種策略是什么

錢諍諍2年前20瀏覽0評論

linux進程調度的三種策略是什么?

進程調度策略就是調度系統種哪一個進程來CPU運行。

這種調度分2層考慮。

第一層,進程狀態這個是最優先考慮的,也就是說優先級最高的。

在linux中只有就緒態的進程才有可能會被調度選中然后占有CPU,其它狀態的進程不可能占有的到CPU。

下面是linux中進程的狀態 TASK_RUNNING:就緒狀態,得到CPU就可以運行。

TASK_INTERRUPTIBLE:淺度睡眠,資源到位或者受到信號就會變成就緒態。

TASK_UNINTERRUPTIBLE:深度睡眠,資源到位就會進入就緒態,不響應信號。

TASK_ZOMBIE:僵死態,進程exit后。

TASK_STOPPED:暫停態,收到SIG_CONT信號進入就緒態。

第二層,其實真正在操作系統中的實現,就是所有就緒態進程鏈接成一個隊列,進程調度時候只會考慮這個隊列中的進程,對其它的進程不考慮,這就實現了第一層中的要求。

接下來就是就緒隊列內部各個進程的競爭了。

Linux采用3種不同的調度政策,SCHED_FIFO(下面簡寫成FIFO,先來先服務),SCHED_RR(簡寫成RR,時間片輪流),SCHED_OTHER(下面簡寫成OTHER)。

這里大家就能看出一個問題,采用同等調度政策的進程之間自然有可比性,Linux3種調度政策并存,那么不同調度政策間的進程如何比較呢?可以說他們之間根本就沒有可比性。

其實在調度時候,調度只看一個指標,那就是各個進程所具有的權值,權值最大的且在可執行隊列中排在最前面的就會被調度執行。

而權值的計算才會設計到各方面因素,其中調度政策可以說在計算權值中,份量是最重的。

為什么Linux要這么干呢?這是由于事務的多樣性決定的,進程有實時性進程和非實時性的進程2種,FIFO和RR是用來支持實時性進程的調度,我們看一下這3種政策下權值的計算公式就明白了: FIFO和RR計算公式,權值=1000+進程真正的運行時間 OTHER計算公式,當時間片為0時,權值=0.當時間片不為0時候,權值=剩余時間片+20-nice,同時如果是內核線程有+1的小加分,這是因為內核線程無需用戶空間的切換,所以給它加了一分,獎勵他在進程切換時候開銷小的功勞。

時間片好理解,那么nice這個值,用過linux系統的人都知道,這是一個從unix下繼承過來的概念,表示謙讓度,是一個從20~-19的數,可以通過nice和renice指令來設置。

從代碼中也能看到值越小就越不會謙讓他人。

從這里我們看出FIFO和RR至少有1000的基數,所以在有FIFO和RR調度政策進程存在時,OTHER進程是沒有機會被調度的到的。

從權值計算公式同時也能看出,FIFO先來先服務的調度政策滿足了,但RR這個時間片輪流的調度如果按照這種權值計算是不能滿足時間片輪流這一概念的。

這里只是權值的計算,在調度時候對RR政策的進程特殊處理。

以上都是權值計算,下面看看真正的調度過程,首先是對RR政策進程的特殊處理,如果當前進程采用的RR政策,那么看他的時間片是否用完,用完了就踢到就緒隊列尾部,同時恢復他的時間片。

然后是便利整個就緒隊列,找到第一個權值最大的進程來運行。

整體調度效果就是:如果有FIFO和RR政策的進程,就優先調度他們2個,他們之間看已執行時間長短決定勝負,而2種政策內部則遵守各自調度政策。

而OTHER只有在前面2種不存在于就緒隊列時候才有可能執行,他們實際也是輪流執行,但他們之間是靠剩余時間和NICE值來決定勝負。

同時就緒隊列中排在最前面的最優先考慮在同樣權值情況下。

進程調度算法 java,linux進程調度的三種策略是什么