靜態優先級:(定義在進程描述符中的:static_prio)
動態優先級:(定義在進程描述符中的:prio)
實時優先級:(定義在進程描述符中的:rt_priority)
靜態優先級:
定義:他不隨時間改變,內核不會主動修改它,只能通過系統調用nice去修改static_prio
動態優先級:
定義:調度程序通過或減少進程靜態優先級來獎勵IO消耗型進程或懲罰CPU消耗進程,調整后的優先級為動態優先級(prio)
實時優先級:
實時優先級只對實時進程有效
宏定義:
MAX_PRIO:140
MAX_RT_PRIO:100
nice:[-20,19]
進程的動態優先級取值范圍:[0,MAX_PRIO-1],即[0,139]
針對進程划分為兩個范圍優先級:
普通進程:[0,MAX_RT_PRIO-1]即[0,99]
計算方法:靜態優先級與進程交互性函數計算出來的,隨任務的實際運行情況調整
實時進程:[MAX_RT_PRIO,MAX_PRIO]即[100,139]
計算方法:prio=MAX_RT_PRIO-1 - rt_priority
實時進程的優先級與動態優先級成線性關系,不隨時程運行而改變
也就是說,如果一個進程是實時進程即在[0,99]之間優先級prio 與rt_priority之間的關系是固定的
靜態優先級與nice 關系
static_prio=MAX_RT_PRIO+nice+20