window的任務管理器里的進程基本優先級,這個基本優先級不是單一某個值確定的。
操作系統將“優先級類”和“相對線程優先級”映射到一個具體的優先級上。
“優先級類”:進程的優先級類
“相對線程優先級”:進程的線程優先級
網上搜
通過上表可以知道,進程的基本優先級可以顯示6種值,而線程的優先級可以顯示7種值;相差的是“Lowest”,個人認為這個在任務管理器上的中文顯示應該是“低”。
同樣本機測試:對基本優先級顯示“低”的進程,進行跟蹤調試。
GetPriorityClass(hProcess)獲取的優先級是0x00000040,MSDN里表示的是空閑;這個和任務管理器里的顯示不相對應。
同樣用ProcessXP來監視進程,發現基本優先級里是用整形數據來顯示。“低”對應的“8”,通過上表看出是“低於標准”。
問題:任務管理器里進程頁,進程的基本優先級不會有7種值,就是說“低”不會顯示在基本優先級里,可是實際上會顯示“低”?
操作系統:win7旗艦sp1, 64位
進程:chorme.exe,打開谷歌瀏覽器,一段時間后,會有一個進程基本優先級為“低”
總結:
一個基本優先級顯示為"低"的進程
1.通過GetPriorityClass(hProcess)獲取到的優先級是“空閑”;
2.通過ProcessXP監視進程,獲取到優先級是“4”,表示“空閑”;也有可能是“低於標准”
???
猜測:任務管理器的進程頁里,不僅僅可以顯示進程,同時也可以顯示線程,如何讓一個線程顯示到進程頁,不知道。只有這樣,才可以解釋為何“基本優先級”的值可以為“低”。
也有可能進程有“低”這個基本優先級,但是如何判斷一個進程的基本優先級是否是“低”,需要其他的條件(通過其它的接口來獲取它們的值),目前沒有找到方法。