【正文】
?進(jìn)程優(yōu)先級(jí)類(lèi)函數(shù): – GetPriorityClass(讀?。? – SetPriorityClass(設(shè)置) ?線程優(yōu)先級(jí)偏移: – GetThreadPriority(讀取) – SetThreadPriority(設(shè)置) 與線程優(yōu)先級(jí)控制有關(guān)的 API ? 時(shí)間配額是一個(gè)線程從進(jìn)入運(yùn)行狀態(tài)到WS03檢查是否有其他優(yōu)先級(jí)相同的線程需要開(kāi)始運(yùn)行之間的 時(shí)間總和 。就緒位圖中的每一位指示一個(gè)調(diào)度優(yōu)先級(jí)的就緒隊(duì)列中是否有線程等待運(yùn)行。 WS03線程調(diào)度 搶先 ? 可能在以下兩種情況下出現(xiàn)搶先: – 高優(yōu)先級(jí)線程的等待完成,即一個(gè)線程等待的事件出現(xiàn)。 ? 當(dāng)線程完成運(yùn)行時(shí),它的狀態(tài)從運(yùn)行狀態(tài)轉(zhuǎn)到終止?fàn)顟B(tài)。 對(duì)處理機(jī)饑餓線程的優(yōu)先級(jí)提升 ?如果在該線程結(jié)束前出現(xiàn)其他高優(yōu)先級(jí)的就緒線程,該線程會(huì)被放回就緒隊(duì)列,并在就緒隊(duì)列中超過(guò)另外 300個(gè)時(shí)鐘中斷間隔后再次被提升優(yōu)先級(jí) ?平衡集管理器只掃描 16個(gè)就緒線程 ?平衡集管理器在每次掃描時(shí)最多提升 10個(gè)線程的優(yōu)先級(jí) ?這種算法并不能解決所有優(yōu)先級(jí)倒置的問(wèn)題,但很有效。但它也不是完美的,它并不會(huì)使所有應(yīng)用都受益。 ? 被搶先的實(shí)時(shí)線程時(shí)間配額被重置為一個(gè)完整的時(shí)間片;而可變優(yōu)先級(jí)線程時(shí)間配額不變,重新獲得處理機(jī)后將剩余的時(shí)間配額執(zhí)行完。在 64位版本中,這個(gè)位圖是 64位的。 線程時(shí)間配額 (Quantum) ? 假設(shè)用戶(hù)首先啟動(dòng)了一個(gè)運(yùn)行時(shí)間很長(zhǎng)的電子表格計(jì)算程序,然后切換到一個(gè)計(jì)算密集型的應(yīng)用 (如一個(gè)需要復(fù)雜圖形顯示的游戲 )。 ? 可變優(yōu)先級(jí) (variablepriority):從 1到 15(級(jí)別 0保留為系統(tǒng)使用)。當(dāng)?shù)却录霈F(xiàn)時(shí),等待結(jié)束,并根據(jù)優(yōu)先級(jí)進(jìn)入運(yùn)行或就緒狀態(tài)。 ? 一個(gè)進(jìn)程內(nèi)的多個(gè)線程可以在不同的處理器上并行運(yùn)行 WS03進(jìn)程結(jié)構(gòu) A c c e s s T o k e nP r o c e s sT h r e a d AF i l e BS e c t i o n CH a n d l e 1H a n d l e 1H a n d l e 1… …O b j e c t T a b l eV i r t u a l A d d r e s s S p a c e D e s c r i p t i o n執(zhí)行體進(jìn)程塊( ENPROCESS) ? 描述進(jìn)程的基本信息 ? 包括 : – 線程塊列表 – 虛擬地址空間描述表 – 對(duì)象句柄列表 ? 相關(guān)系統(tǒng)調(diào)用 – createProcess – ExitProcess – TerminateProcess ? WS03的線程是內(nèi)核線程 ? 線程是處理機(jī)的調(diào)度對(duì)象 ? 線程上下文包括寄存器、線程環(huán)境塊、核心棧和用戶(hù)棧 ? WS03的線程有九種狀態(tài) WS03的線程管理 ? 32個(gè)優(yōu)先級(jí): 031 ? 每個(gè)優(yōu)先級(jí)的就緒線程在每個(gè)處理機(jī)上排成一個(gè)先進(jìn)先出隊(duì)列; ? 當(dāng)一個(gè)線程狀態(tài)變成就緒時(shí),它可能立即運(yùn)行或排到相應(yīng)優(yōu)先級(jí)隊(duì)列的尾部; ? 總運(yùn)行優(yōu)先級(jí)最高的就緒線程; 采用嚴(yán)格的搶先式動(dòng)態(tài)優(yōu)先