windows的線程管理和調(diào)度機(jī)制

windows的線程管理和調(diào)度機(jī)制

ID:38105750

大?。?2.58 KB

頁(yè)數(shù):2頁(yè)

時(shí)間:2019-05-25

windows的線程管理和調(diào)度機(jī)制_第1頁(yè)
windows的線程管理和調(diào)度機(jī)制_第2頁(yè)
資源描述:

《windows的線程管理和調(diào)度機(jī)制》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、Windows的線程管理和調(diào)度機(jī)制環(huán)93張晨2009010378線程,有時(shí)被稱為輕量級(jí)進(jìn)程,是程序執(zhí)行流的最小單元。一個(gè)標(biāo)準(zhǔn)的線程由線程ID,當(dāng)前指令指針,寄存器集合和堆棧組成。另外,線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。既然線程作為程序執(zhí)行流的最小單元,那么在Windows中,是怎樣管理和調(diào)度線程的呢?在WindowsNT以后,Windows實(shí)現(xiàn)了一個(gè)基于優(yōu)先級(jí)的搶先式多處理器調(diào)度系統(tǒng)。調(diào)度系統(tǒng)總是運(yùn)行優(yōu)先級(jí)最高的就緒線程。通常線程

2、可在任何可用處理器上運(yùn)行,但也可限制某線程只能在某處理器上運(yùn)行。先看一下優(yōu)先級(jí)是怎么劃分的。線程總共分為32個(gè)優(yōu)先級(jí),具體看下圖:線程優(yōu)先級(jí)分為實(shí)時(shí)(從16到31,如設(shè)備監(jiān)控線程)和可變優(yōu)先級(jí)(從1到15),級(jí)別0保留為系統(tǒng)使用。線程的基本優(yōu)先級(jí)=[進(jìn)程的基本優(yōu)先級(jí)-2,進(jìn)程的基本優(yōu)先級(jí)+2],由應(yīng)用程序控制。線程的動(dòng)態(tài)優(yōu)先級(jí)=[進(jìn)程的基本優(yōu)先級(jí)-2,31],由NT核心控制。為了提高調(diào)度速度,WindowsNT維護(hù)了一個(gè)稱為就緒位圖的32位量。就緒位圖中的每一位指示一個(gè)調(diào)度優(yōu)先級(jí)的就緒隊(duì)列中是否有線程等待運(yùn)行。還有一個(gè)稱為空閑位圖的32位量用來(lái)指示一個(gè)處理機(jī)是否處于

3、空閑狀態(tài)。但光有線程的優(yōu)先級(jí)的話那么相同優(yōu)先級(jí)的線程中只有一個(gè)執(zhí)行到底,其他的都處于等待,所以還有一個(gè)時(shí)間配額的制度。時(shí)間配額是一個(gè)線程從進(jìn)入運(yùn)行狀態(tài)到系統(tǒng)檢查是否有其他優(yōu)先級(jí)相同的線程需要開(kāi)始運(yùn)行之間的時(shí)間總和。一個(gè)線程用完了自己的時(shí)間配額時(shí),如果沒(méi)有其它相同優(yōu)先級(jí)線程,Windows2000將重新給該線程分配一個(gè)新的時(shí)間配額,并繼續(xù)運(yùn)行。每個(gè)線程都有一個(gè)代表本次運(yùn)行最大時(shí)間長(zhǎng)度的時(shí)間配額。在每個(gè)線程擁有優(yōu)先級(jí)和時(shí)間配額后,通常線程先在許多等待函數(shù)的調(diào)用中進(jìn)入等待狀態(tài),進(jìn)入等待狀態(tài)線程的時(shí)間配額不會(huì)被重置,而是在等待事件出現(xiàn)時(shí),線程的時(shí)間配額被減1相當(dāng)于1/3個(gè)時(shí)

4、鐘間隔;如果線程的優(yōu)先級(jí)大于等于14在等待事件出現(xiàn)時(shí),線程的優(yōu)先級(jí)被重置??赡茉谶@兩種情況下出現(xiàn)搶先的情況:一個(gè)是高優(yōu)先級(jí)線程的等待完成,即一個(gè)線程等待的事件出現(xiàn)。一個(gè)是一個(gè)線程的優(yōu)先級(jí)被增加或減少。在判斷一個(gè)線程是否被搶先時(shí),并不考慮線程處于用戶態(tài)還是內(nèi)核態(tài),調(diào)度器只是依據(jù)線程優(yōu)先級(jí)進(jìn)行判斷。當(dāng)線程被搶先時(shí),它被放回相應(yīng)優(yōu)先級(jí)的就緒隊(duì)列的隊(duì)首。如果剛用完時(shí)間配額的線程優(yōu)先級(jí)降低了,系統(tǒng)將尋找一個(gè)優(yōu)先級(jí)高于剛用完時(shí)間配額線程的新設(shè)置值的就緒線程。如果剛用完時(shí)間配額的線程的優(yōu)先級(jí)沒(méi)有降低,并且有其他優(yōu)先級(jí)相同的就緒線程,系統(tǒng)將選擇相同優(yōu)先級(jí)的就緒隊(duì)列中的下一個(gè)線程進(jìn)入

5、運(yùn)行狀態(tài),剛用完時(shí)間配額的線程被排到就緒隊(duì)列的隊(duì)尾(即分配一個(gè)新的時(shí)間配額并把線程狀態(tài)從運(yùn)行狀態(tài)改為就緒狀態(tài))。如果沒(méi)有優(yōu)先級(jí)相同的就緒線程可運(yùn)行,剛用完時(shí)間配額的線程將得到一個(gè)新的時(shí)間配額并繼續(xù)運(yùn)行。當(dāng)線程完成運(yùn)行時(shí),它的狀態(tài)從運(yùn)行狀態(tài)轉(zhuǎn)到終止?fàn)顟B(tài)。線程完成運(yùn)行的原因可能是通過(guò)調(diào)用函數(shù)而從主函數(shù)中返回或通過(guò)被其他線程通過(guò)調(diào)用函數(shù)來(lái)終止。如果處于終止?fàn)顟B(tài)的線程對(duì)象上沒(méi)有未關(guān)閉的句柄,則該線程將被從進(jìn)程的線程列表中刪除,相關(guān)數(shù)據(jù)結(jié)構(gòu)將被釋放。這是Windows中大概的線程管理和調(diào)度的方法,而WindowsNT中還有一個(gè)很重要的多線程的機(jī)制。由于線程比進(jìn)程開(kāi)銷小而且創(chuàng)建

6、得更快,同一進(jìn)程內(nèi)的多個(gè)線程共享同一塊內(nèi)存,便于線程之間數(shù)據(jù)共享和傳送以及所有的進(jìn)程資源對(duì)線程都有效的原因,系統(tǒng)采用多線程而不采用多進(jìn)程來(lái)實(shí)現(xiàn)多任務(wù)。首先一個(gè)處理器在一個(gè)時(shí)刻只能執(zhí)行一個(gè)線程,WindowsNT允許用戶同時(shí)運(yùn)行多個(gè)任務(wù)。這是通過(guò)下述方法實(shí)現(xiàn)的:(1)運(yùn)行一個(gè)線程,直到它被中斷或進(jìn)入等待狀態(tài);(2)保存該線程的描述表;(3)操作系統(tǒng)從等待執(zhí)行的線程隊(duì)列中挑選一個(gè)動(dòng)態(tài)優(yōu)先級(jí)最高的線程作為執(zhí)行線程,裝入它的描述表(一旦線程獲得CPU時(shí)間片,它的動(dòng)態(tài)優(yōu)先級(jí)就降低,但不會(huì)低于它的基礎(chǔ)優(yōu)先級(jí));(4)若還存在等待被執(zhí)行的線程,則重復(fù)上述過(guò)程。處理器就是這樣根據(jù)優(yōu)

7、先級(jí)不斷地切換執(zhí)行線程,它的高速度使人產(chǎn)生多個(gè)線程同時(shí)執(zhí)行的錯(cuò)覺(jué)。所以一個(gè)處理器實(shí)際上仍然只能處理一個(gè)線程,這只是利用了高速度上的近似同時(shí)性。當(dāng)計(jì)算機(jī)系統(tǒng)有多個(gè)處理器時(shí),多線程就能實(shí)現(xiàn)真正的同時(shí)執(zhí)行。目前,NT的對(duì)稱多處理器結(jié)構(gòu)(SMP)最多支持32個(gè)處理器。WindowsNT是占先式多任務(wù)操作系統(tǒng),這意味著操作系統(tǒng)不必等待一個(gè)線程,它可主動(dòng)將處理器讓給其它線程。在這種方式下,當(dāng)一個(gè)線程已運(yùn)行了配額的時(shí)間后,或出現(xiàn)搶先情況時(shí),操作系統(tǒng)將中斷該線程。如圖所示:線程轉(zhuǎn)讓CPU處理時(shí)間是被迫的。占先式多任務(wù)可以防止線程獨(dú)占CPU,允許其它線程公平地分享CPU執(zhí)行時(shí)間,

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。