還記得我們提過的多人多工環(huán)境吧?因為目前的 x86 平臺的 CPU 可以做到多工的行為, 所以啰,我們的 Linux 可以在 x86 上面lsquo;同時進行多個工作’的呢!那么多個工作是如何進行的呢? 其實每個工作都會進入到 CPU 的工作排程當中,并等待 CPU 來執(zhí)行, 而 CPU 會根據(jù)每個工作的優(yōu)先執(zhí)行序 (priority) 來判斷誰比較重要, 所以某個工作就可能會比較優(yōu)先被執(zhí)行完畢啦!
也就是說, Linux 系統(tǒng)中,每個 process 都會擁有一個所謂的‘優(yōu)先執(zhí)行序 (priority)’的屬性, 利用該屬性來讓 CPU 判斷那個工作是比較重要的,那個工作在一群工作當中就會優(yōu)先被執(zhí)行, 也讓系統(tǒng)資源可以分配的更恰當。我們可以使用 ps 還觀察優(yōu)先執(zhí)行序: [root@linux ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 18851 18827 0 77 0 - 1302 wait pts/0 00:00:00 su 4 S 0 18852 18851 0 76 0 - 1349 wait pts/0 00:00:00 bash 4 R 0 19510 18852 0 76 0 - 1111 - pts/0 00:00:00 ps 其中,那個 PRI 就是 Priority 的簡寫,而 NI 是 nice 的簡寫,這兩個東西是湊在一起才產(chǎn)生目前的 PRI 值的! PRI 越小時,代表該程序可以具有‘越早被優(yōu)先執(zhí)行’的意思,只是 PRI 是由系統(tǒng)動態(tài)產(chǎn)生的, 并不會是一直固定的值喔。至于那個 NI (nice) 則是我們操作值額外給予的一個數(shù)值, 他可以影響 PRI 的值,基本上,他的相關性是這樣的: * PRI(new) = PRI(old) + nice 不過您要特別留意到,如果原本的 PRI 是 50 ,并不是我們給予一個 nice = 5 ,就會讓 PRI 變成 55 喔! 因為 PRI 是系統(tǒng)‘動態(tài)’決定的,所以,雖然 nice 值是可以影響 PRI ,不過, 最終的 PRI 仍是要經(jīng)過系統(tǒng)分析后才會決定的。另外, nice 值是有正負的喔,而既然 PRI 越小越早被執(zhí)行, 所以,當 nice 值為負值時,那么該程序就會降低 PRI 值,亦即會變的較優(yōu)先被處理。此外,您必須要留意到: