參考以下鏈接
https¥www.cnblogs.com/abels0025/p/11430740.html
系統的整體優先級策略是:如果系統中存在需要執行的實時進程,則優先執行實時進程。直到實時進程退出或者主動讓出CPU時,才會調度執行非實時進程。實時進程可以指定的優先級范圍為1-99。
調度隊列:
新產生的進程都會先獲得一個時間片,進入活動隊列等待調度到CPU執行。而內核會在每個tick間隔期間對正在CPU上執行的進程進行檢查。一般的tick間隔時間就是cpu時鍾中斷間隔,每秒鍾會有1000個,即頻率為1000HZ(這是可以設置的)。每個tick間隔周期主要檢查兩個內容:1、當前正在占用CPU的進程是不是時間片已經耗盡了?2、是不是有更高優先級的進程在活動隊列中等待調度?如果任何一種情況成立,就把則當前進程的執行狀態終止,放到等待隊列中,換當前在等待隊列中優先級最高的那個進程執行。
nice值:
如果有兩個nice值為0的進程同時占用cpu,那么它們應該每人占50%的cpu,如果將其中一個進程的nice值調整為1的話,那么此時應保證優先級高的進程比低的多占用10%的cpu,就是nice值為0的占55%,nice值為1的占45%。那么它們占用cpu時間的比例為55:45。這個值的比例約為1.25。就是說,相鄰的兩個nice值之間的cpu占用時間比例的差別應該大約為1.25。進程的優先級應該是從父進程繼承來的,這個值一般是0。
舉例:
通過NICE命令來對一個將要執行的bash命令進行NICE值設置:
[root@zorrozou-pc0 zorro]# nice -n 10 bash
這樣我就又打開了一個bash,並且其nice值設置為10
nice值的-20到19,映射到實際的優先級范圍是100-139
PR值:
ps命令中看到的PRI值或者top命令中看到的PR值。
nice值表示NI值,叫做靜態優先級
priority值表示PRI和PR值,或者叫動態優先級。
我們也統一將“優先級”這個詞的概念規定為表示priority值的意思。
實時進程和非實時進程:
如果系統中存在需要執行的實時進程,則優先執行實時進程(PR為0-99); 直到實時進程退出或者主動讓出CPU時,才會調度執行非實時進程(PR為100-140)。