linux什么是实时调度,Linux 实时调度 示例
在上一篇博文中進行了原理性分析之后,本文舉出一個實例進行分析(假設所有的cpu處于同一個cpuset中)。
當前系統中cpu的情況如下如所示:
說明:0~99代表的是進程的實時優先級,cpu的狀態與該cpu上最高實時進程的優先級+2.
在linux系統中用一個2維map表示各個cpu的狀態,其中1個維度代表了-1~99這幾個狀態,另一個維度代表了處于該狀態下的cpu。那么我們不難計算出當前系統中所有cpu的狀態為:
假設發生如下事件:
1、cpu0上有一個高優先級的任務被喚醒(T3)
2、cpu3的T7執行完畢
發生事件1,觸發一個push操作,因為T3任務的優先級高于當前進程T2,那么T2必然被換出,那么換出的T2應該放置到哪個cpu上呢?
經分析發現,最低優先級的是C1
雖然此時c1仍舊處于超載狀態,但是沒有滿足條件的cpu可以讓其執行push操作。此時cpu的狀態為:
此時發生事件2,會發生push操作,因為cpu0和cpu1處于超載狀態所以push操作會在cpu0和cpu1上發生生。
對于rq0而言,T1>T6,則滿足push的條件,
雖然此時T6被換出,但是因為T6不滿足push條件(其他cpu的狀態都高于T6),因此此時T6只能呆在cpu3上。接下來,C1仍然滿足push條件,繼續執行push操作。
從這里我們發現,經過push/pull操作,使得cpu3的負載更加嚴重了。不過隨著其他cpu上的rq逐漸變為空,cpu3的超載將很快得到緩解。
總結
以上是生活随笔為你收集整理的linux什么是实时调度,Linux 实时调度 示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aix vnc oracle,请问如何配
- 下一篇: linux下的普通文件的属性,linux