程序和執行緒的優先順序

2021-08-31 16:04:57 字數 1624 閱讀 9539

程序(執行緒)的優先順序越高,那麼就可以分占越多的cpu時間片,每個程序都有相應的優先順序,優先順序決定它何時執行和占用cpu的時間。最終的優先順序共分 32 級,是從 0 到 31 的數值,稱為基本優先級別。

執行緒32個優先順序,16~31是實時類別 1~15是動態類別 0是系統類別

kprocess.basepriority是執行緒建立之後的kthread.basepriority值(執行緒的基本、靜態優先順序),這個值基本不變,kthread.priority是動態優先順序。

kicomputenewpriority 用來計算非實時優先順序執行緒的優先順序(優先順序值要小於16),而且這個優先順序不能超過基本優先順序的值。

r3可以調節程序的基本優先順序(如任務管理器),但只能調節 eprocess.priorityclass ,分為未知,idle,普通,高,實時,低於普通高於普通這幾種,分別對應的基本優先順序是8 4 8 13 24 6 10。而ntsetinformationprocess可以對優先順序進行微調。

setpriorityclass(設定程序優先順序)

function setpriorityclass(hprocess: thandle; dwpriorityclass: dword): bool;

程序優先級別

優先順序標誌優先順序值

idle   (低)

idle_priority_class

4below (低於標準)

below_normal_priority_class

normal (標準)

normal_priority_class

7或9above (高於標準)

above_normal_priority_class

high (高)

high_priority_class

13realtime (實時)

realtime_priority_class

setthreadpriority    --設定執行緒優先順序

function setthreadpriority(hthread: thandle; npriority: integer): bool;

執行緒優先級別

執行緒優先順序等級

標誌優先順序值

idle (最低)

thread_priority_idle

如果程序優先順序為realtime則調整為16,其它情況為1

lowest 低

thread_priority_lowest

-2(在原有基礎上-2)

below 低於標準

thread_priority_below_normal

-1(在原有基礎上-1)

normal(標準)

thread_priority_normal

不變(取程序優先順序值)

above 高於標準

thread_priority_above_normal

+1(在原有基礎上+1)

highest(高)

thread_priority_highest

+2(在原有基礎上+2)

critical(最高)

thread_priority_time_critical

如果程序優先順序為realtime則調整為31,其它情況為15

程序 執行緒優先順序

process priority class thread priority level base priority idle priority class thread priority idle thread priority lowest thread priority below norma...

Linux程序優先順序和調整優先順序

linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...

多執行緒多程序優先順序理解 優先順序反轉

1.優先順序反轉 priority inversion 由於多程序共享資源,具有最高優先權的程序被低優先順序程序阻塞,反而使具有中優先順序的程序先於高優先順序的程序執行,導致系統的崩潰。這就是所謂的優先順序反轉 priority inversion 2.產生原因 其實,優先順序反轉是在高優級 假設為...