版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Windows操作系統(tǒng)處理機管理(上)進程的定義和描述進程的定義和描述進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程控制進程控制Windows的進程管理的進程管理進程的定義一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行過程。進程的特征動態(tài)性具有動態(tài)的地址空間動態(tài)性具有動態(tài)的地址空間獨立性各進程的地址空間相互獨立獨立性各進程的地址空間相互獨立并發(fā)性宏觀上各進程同時運行并發(fā)性宏觀上各進程同時運行結(jié)構(gòu)化進程的地址空間是結(jié)構(gòu)化的結(jié)構(gòu)化進程的地址空間是結(jié)構(gòu)化的進程和進程控制進程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進程進程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進程是程序的執(zhí)行。通常進程不可在
2、計算機之間遷移;而程序通常是程序的執(zhí)行。通常進程不可在計算機之間遷移;而程序通常對應(yīng)著文件,是靜態(tài)的,可以復(fù)制。對應(yīng)著文件,是靜態(tài)的,可以復(fù)制。進程是暫時的,程序的永久的:進程是一個狀態(tài)變化的過程,程序可長進程是暫時的,程序的永久的:進程是一個狀態(tài)變化的過程,程序可長久保存。久保存。進程與程序的組成不同:進程的組成包括程序、數(shù)據(jù)和進程控制塊(即進程與程序的組成不同:進程的組成包括程序、數(shù)據(jù)和進程控制塊(即進程狀態(tài)信息)。進程狀態(tài)信息)。進程與程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程序可對應(yīng)多個進程進程與程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程序可對應(yīng)多個進程;通過調(diào)用關(guān)系,一個進程可包括多個程序。;通
3、過調(diào)用關(guān)系,一個進程可包括多個程序。進程的定義和描述進程和進程控制每個進程在每個進程在OS中的登記表項(可能有總數(shù)目限制),中的登記表項(可能有總數(shù)目限制),OS據(jù)此對進程進據(jù)此對進程進行控制和管理(行控制和管理(PCB中的內(nèi)容會動態(tài)改變)中的內(nèi)容會動態(tài)改變)處于核心段,通常不能由應(yīng)用程序自身的代碼來直接訪問,而要通過系統(tǒng)處于核心段,通常不能由應(yīng)用程序自身的代碼來直接訪問,而要通過系統(tǒng)調(diào)用訪問調(diào)用訪問進程控制塊(PCB, process control block)是由OS維護的用來記錄進程相關(guān)信息的一個數(shù)據(jù)結(jié)構(gòu)。進程和進程控制進程的定義和描述進程描述信息:進程描述信息:進程標識符進程標識符(
4、process ID),唯一,通常是一個整數(shù);,唯一,通常是一個整數(shù);進程名,通常基于可執(zhí)行文件名;進程名,通常基于可執(zhí)行文件名;用戶標識符用戶標識符(user ID);進程組;進程組 (process group)進程控制信息:進程控制信息:當(dāng)前狀態(tài);當(dāng)前狀態(tài);優(yōu)先級優(yōu)先級(priority);代碼執(zhí)行入口地址;代碼執(zhí)行入口地址;程序的外存地址;程序的外存地址;運行統(tǒng)計信息(執(zhí)行時間、頁面調(diào)度);運行統(tǒng)計信息(執(zhí)行時間、頁面調(diào)度);阻塞原因阻塞原因資源占用信息:虛擬地址空間的現(xiàn)狀、打開文件列表資源占用信息:虛擬地址空間的現(xiàn)狀、打開文件列表CPU現(xiàn)場保護結(jié)構(gòu):寄存器值(通用、程序計數(shù)器現(xiàn)場保護
5、結(jié)構(gòu):寄存器值(通用、程序計數(shù)器PC、狀態(tài)、狀態(tài)PSW,地址,地址包括棧指針)包括棧指針)進程和進程控制進程的定義和描述鏈表:同一狀態(tài)的進程其鏈表:同一狀態(tài)的進程其PCB成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表。各狀態(tài)的成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表。各狀態(tài)的進程形成不同的鏈表:就緒鏈表、阻塞鏈表進程形成不同的鏈表:就緒鏈表、阻塞鏈表索引表:同一狀態(tài)的進程歸入一個索引表:同一狀態(tài)的進程歸入一個index表(由表(由index指向指向PCB),多個狀態(tài)對應(yīng)),多個狀態(tài)對應(yīng)多個不同的多個不同的index表。表。各狀態(tài)的進程形成不同的索引表:就緒索引表、阻塞索引表各狀態(tài)的進程形成不同的索引表:就緒
6、索引表、阻塞索引表進程和進程控制進程的定義和描述用戶級上下文:進程的用戶地址空間(包括用戶棧各層次),包括用戶用戶級上下文:進程的用戶地址空間(包括用戶棧各層次),包括用戶正文段、用戶數(shù)據(jù)段和用戶棧;正文段、用戶數(shù)據(jù)段和用戶棧;寄存器級上下文:程序寄存器、處理機狀態(tài)寄存器、棧指針、通用寄存器級上下文:程序寄存器、處理機狀態(tài)寄存器、棧指針、通用寄存器的值;寄存器的值;系統(tǒng)級上下文:系統(tǒng)級上下文:靜態(tài)部分(靜態(tài)部分(PCBPCB和資源表格)和資源表格)動態(tài)部分:核心棧(核心過程的棧結(jié)構(gòu),不同進程在調(diào)用相同核心動態(tài)部分:核心棧(核心過程的棧結(jié)構(gòu),不同進程在調(diào)用相同核心過程時有不同核心棧)過程時有不同
7、核心棧) 進程上下文是對進程執(zhí)行活動全過程的靜態(tài)描述。進程上下文由進程的用戶地址空間內(nèi)容、硬件寄存器內(nèi)容及與該進程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成。進程和進程控制進程的定義和描述五狀態(tài)進程模型(狀態(tài)轉(zhuǎn)換)進程的狀態(tài)轉(zhuǎn)換進程在從創(chuàng)建到終止的全過程中一直處于一個不斷變化的過程, 為了刻畫進程的這個變化過程,操作系統(tǒng)把進程分成若干種狀態(tài) 進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate新建狀態(tài)新建狀態(tài)(New):進程剛創(chuàng)建,但還不能運行:進程剛創(chuàng)建,但還不能運行(一種可能的原因是一種可能
8、的原因是OS對并發(fā)進程對并發(fā)進程數(shù)的限制數(shù)的限制);OS在進程新建狀態(tài)的工作在進程新建狀態(tài)的工作:分配和建立分配和建立PCB表項、建立資源表格(如打開文表項、建立資源表格(如打開文件表)并分配資源,加載程序并建立地址空間表。件表)并分配資源,加載程序并建立地址空間表。結(jié)束狀態(tài)結(jié)束狀態(tài)(Exit):進程已結(jié)束運行:進程已結(jié)束運行.回收除回收除PCB之外的其他資源,并讓其他進程從之外的其他資源,并讓其他進程從PCB中收集有關(guān)信息(如記帳中收集有關(guān)信息(如記帳,將退出碼,將退出碼exit code傳遞給父進程)。傳遞給父進程)。進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型進程和進程控制AdmitRunningNew
9、ExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate運行狀態(tài)運行狀態(tài)(Running):占用處理機資源并運行;處于此狀態(tài)的進程的數(shù)目小于等于:占用處理機資源并運行;處于此狀態(tài)的進程的數(shù)目小于等于CPU的數(shù)目。的數(shù)目。 在沒有其他進程可以執(zhí)行時(如所有進程都在阻塞狀態(tài)),通常會自動執(zhí)在沒有其他進程可以執(zhí)行時(如所有進程都在阻塞狀態(tài)),通常會自動執(zhí)行系統(tǒng)的行系統(tǒng)的idle進程(相當(dāng)于空操作)。進程(相當(dāng)于空操作)。就緒狀態(tài)就緒狀態(tài)(Ready):進程已獲得除處理機外的所需資源,等待分配處理機資源;只:進程已獲得除處理機外的
10、所需資源,等待分配處理機資源;只要分配要分配CPU就可執(zhí)行。就可執(zhí)行??梢园炊鄠€優(yōu)先級來劃分隊列,如:時間片用完可以按多個優(yōu)先級來劃分隊列,如:時間片用完低優(yōu),低優(yōu),I/O完成完成中優(yōu)中優(yōu),頁面調(diào)入完成,頁面調(diào)入完成高優(yōu)高優(yōu)阻塞狀態(tài)阻塞狀態(tài)(Blocked):由于進程等待某種條件(如:由于進程等待某種條件(如I/O操作或進程同步),在條件滿足之前操作或進程同步),在條件滿足之前無法繼續(xù)執(zhí)行。在該事件發(fā)生前即使把處理機分配給該進程,也無法運行。如:等待無法繼續(xù)執(zhí)行。在該事件發(fā)生前即使把處理機分配給該進程,也無法運行。如:等待I/O操作的完成。操作的完成。進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型進程和進程控制
11、AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate創(chuàng)建創(chuàng)建(Create)新進程:創(chuàng)建一個新進程,以運行一個程序。新進程:創(chuàng)建一個新進程,以運行一個程序。提交提交(Admit):收容一個新進程,進入就緒狀態(tài)。由于性能、內(nèi)存、進程總數(shù)等原:收容一個新進程,進入就緒狀態(tài)。由于性能、內(nèi)存、進程總數(shù)等原因,系統(tǒng)會限制并發(fā)進程總數(shù)。因,系統(tǒng)會限制并發(fā)進程總數(shù)。調(diào)度運行調(diào)度運行(Dispatch):從就緒進程表中選擇一個進程,進入運行狀態(tài);:從就緒進程表中選擇一個進程,進入運行狀態(tài);釋放釋放(Rel
12、ease):由于進程完成或失敗而中止進程運行,進入結(jié)束狀態(tài);:由于進程完成或失敗而中止進程運行,進入結(jié)束狀態(tài);運行到結(jié)束:分為正常退出運行到結(jié)束:分為正常退出Exit和異常退出和異常退出abort(執(zhí)行超時或內(nèi)存不夠,非法指(執(zhí)行超時或內(nèi)存不夠,非法指令或地址,令或地址,I/O失敗,被其他進程所終止)失敗,被其他進程所終止)就緒或阻塞到結(jié)束:可能的原因有:父進程可在任何時間中止子進程;就緒或阻塞到結(jié)束:可能的原因有:父進程可在任何時間中止子進程;進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWai
13、tEventOccursReleaseCreate超時(超時(Timeout):由于用完時間片或高優(yōu)先進程就緒等導(dǎo)致進程暫停運行;):由于用完時間片或高優(yōu)先進程就緒等導(dǎo)致進程暫停運行;事件等待(事件等待(Event Wait):進程要求的事件未出現(xiàn)而進入阻塞;可能的原因包):進程要求的事件未出現(xiàn)而進入阻塞;可能的原因包括:申請系統(tǒng)服務(wù)或資源、通信、括:申請系統(tǒng)服務(wù)或資源、通信、I/O操作等;操作等;事件發(fā)生(事件發(fā)生(Event Occurs):進程等待的事件發(fā)生;如:):進程等待的事件發(fā)生;如:I/O操作完成、申請資源操作完成、申請資源成功等;成功等;進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型進程和進程控
14、制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate五狀態(tài)進程模型沒有區(qū)分進程地址空間位于內(nèi)存還是外存,而在操五狀態(tài)進程模型沒有區(qū)分進程地址空間位于內(nèi)存還是外存,而在操作系統(tǒng)中引入虛擬存儲管理技術(shù)后,需要進一步區(qū)分進程的地址空作系統(tǒng)中引入虛擬存儲管理技術(shù)后,需要進一步區(qū)分進程的地址空間狀態(tài)。間狀態(tài)。 這個問題的出現(xiàn)是由于進程優(yōu)先級的引入,一些低優(yōu)先級這個問題的出現(xiàn)是由于進程優(yōu)先級的引入,一些低優(yōu)先級進程可能等待較長時間,從而被對換至外存。這樣做的目的是:進程可能等待較長時間,從而被對換至
15、外存。這樣做的目的是:提高處理機效率:就緒進程表為空時,有空閑的內(nèi)存空間來提交新進程提高處理機效率:就緒進程表為空時,有空閑的內(nèi)存空間來提交新進程,以提高處理機效率;,以提高處理機效率;為運行進程提供足夠內(nèi)存:資源緊張時,暫停某些進程,如:為運行進程提供足夠內(nèi)存:資源緊張時,暫停某些進程,如:CPU繁忙(或?qū)崟r任務(wù)執(zhí)行),內(nèi)存緊張繁忙(或?qū)崟r任務(wù)執(zhí)行),內(nèi)存緊張用于調(diào)試:在調(diào)試時,掛起被調(diào)試進程(從而對其地址空間進行讀用于調(diào)試:在調(diào)試時,掛起被調(diào)試進程(從而對其地址空間進行讀寫)寫)掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制單掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制AdmitRunn
16、ingNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendActivate雙掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend就緒狀態(tài)就緒狀態(tài)(Ready):進程在內(nèi)存且可立即進入運
17、行狀態(tài);:進程在內(nèi)存且可立即進入運行狀態(tài);阻塞狀態(tài)阻塞狀態(tài)(Blocked):進程在內(nèi)存并等待某事件的出現(xiàn);:進程在內(nèi)存并等待某事件的出現(xiàn);阻塞掛起狀態(tài)(阻塞掛起狀態(tài)(Blocked, suspend):進程在外存并等待某事件的出現(xiàn);):進程在外存并等待某事件的出現(xiàn);就緒掛起狀態(tài)(就緒掛起狀態(tài)(Ready, suspend):進程在外存,但只要進入內(nèi)存,即可):進程在外存,但只要進入內(nèi)存,即可運行;運行;掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制掛起(掛起(Suspend):把一個進程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:):把一個進程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:阻塞到阻塞掛起:沒有進程處
18、于就緒狀態(tài)或就緒進程要求更多內(nèi)存資源時,會進行這種轉(zhuǎn)換,以提阻塞到阻塞掛起:沒有進程處于就緒狀態(tài)或就緒進程要求更多內(nèi)存資源時,會進行這種轉(zhuǎn)換,以提交新進程或運行就緒進程;交新進程或運行就緒進程;就緒到就緒掛起:當(dāng)有高優(yōu)先級阻塞(系統(tǒng)認為會很快就緒的)進程和低優(yōu)先級就緒進程時,系統(tǒng)就緒到就緒掛起:當(dāng)有高優(yōu)先級阻塞(系統(tǒng)認為會很快就緒的)進程和低優(yōu)先級就緒進程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進程;會選擇掛起低優(yōu)先級就緒進程;運行到就緒掛起:對搶先式操作系統(tǒng),當(dāng)有高優(yōu)先級阻塞進程因事件出現(xiàn)而進入就運行到就緒掛起:對搶先式操作系統(tǒng),當(dāng)有高優(yōu)先級阻塞進程因事件出現(xiàn)而進入就緒狀態(tài)時,系統(tǒng)可能會把運行進程轉(zhuǎn)到
19、就緒掛起狀態(tài);緒狀態(tài)時,系統(tǒng)可能會把運行進程轉(zhuǎn)到就緒掛起狀態(tài);掛起進程模型進程的狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換進程和進程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend激活(激活(Activate):把一個進程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:):把一個進程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:就緒掛起到就緒:沒有就緒進程或掛起就緒進程優(yōu)先級高于就緒進程時,會進行這種轉(zhuǎn)換;就緒掛起到就緒:沒有就緒進
20、程或掛起就緒進程優(yōu)先級高于就緒進程時,會進行這種轉(zhuǎn)換;阻塞掛起到阻塞:當(dāng)一個進程釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻塞掛起進程激活阻塞掛起到阻塞:當(dāng)一個進程釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻塞掛起進程激活, 系系統(tǒng)認為會很快出現(xiàn)所等待的事件;統(tǒng)認為會很快出現(xiàn)所等待的事件;掛起進程模型進程的狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換進程和進程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend事件發(fā)生(事件發(fā)生
21、(Event Occurs):進程等待的事件發(fā)生,可能的情況有:):進程等待的事件發(fā)生,可能的情況有:阻塞到就緒:針對內(nèi)存進程的事件發(fā)生;阻塞到就緒:針對內(nèi)存進程的事件發(fā)生;阻塞掛起到就緒掛起:針對外存進程的事件發(fā)生;阻塞掛起到就緒掛起:針對外存進程的事件發(fā)生;掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制狀態(tài)轉(zhuǎn)換RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend收容收容(Admit):收容一個新
22、進程,進入就緒狀態(tài)或就緒掛起狀態(tài)。進入就緒掛起的原因是系:收容一個新進程,進入就緒狀態(tài)或就緒掛起狀態(tài)。進入就緒掛起的原因是系統(tǒng)希望保持一個大的就緒進程表(掛起和非掛起);統(tǒng)希望保持一個大的就緒進程表(掛起和非掛起);掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制狀態(tài)轉(zhuǎn)換AdmitRunningReadySuspendReadyDispatchTimeoutNewSuspendActivateAdmitSuspend雙掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程和進程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEve
23、ntOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend進程控制, 就是操作系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建與撤消進程以及完成進程狀態(tài)的轉(zhuǎn)換, 從而達到多個進程高效率地并發(fā)執(zhí)行和協(xié)調(diào),實現(xiàn)資源共享.進程控制主要體現(xiàn)在進程的創(chuàng)建與撤消,以及進程的阻塞與喚醒。 操作系統(tǒng)對進程的控制是依據(jù)用戶命令和系統(tǒng)狀態(tài)來決定的。用戶可在一定程序上對進程的狀態(tài)進行控制。 具有特定功能的程序段-原語進程和進程控制原語(primitive):由若干條指令構(gòu)成的“原子操作(atomic operati
24、on)”過程,作為一個整體而不可分割要么全都完成,要么全都不做。許多系統(tǒng)調(diào)用就是原語。注意:系統(tǒng)調(diào)用并不都是原語。進程A調(diào)用read三,因無數(shù)據(jù)而阻塞,在read三里未返回。然后進程B調(diào)用read三,此時read三被重入。系統(tǒng)調(diào)用不一定一次執(zhí)行完并返回該進程,有可能在特定的點暫停,而轉(zhuǎn)入到其他進程。進程和進程控制進程和進程控制創(chuàng)建原語進程的存在以PCB為標志, 所以創(chuàng)建新進程的主要任務(wù)就是為進程建立PCB, 將調(diào)用者提供的有關(guān)信息填入PCB的各數(shù)據(jù)項中開始分配PCB空間將有關(guān)信息填入PCB的數(shù)據(jù)項將PCB送入相應(yīng)狀態(tài)PCB鏈表結(jié)束進程和進程控制撤消原語進程完成其任務(wù)之后, 系統(tǒng)應(yīng)及時回收它占有
25、的資源開始搜索PCB鏈表釋放該進程所占有的資源釋放PCB結(jié)構(gòu)本身結(jié)束有此PCB異常處理NoYes進程和進程控制阻塞原語開始將CPU當(dāng)前狀態(tài)存入PCB設(shè)置進程狀態(tài)為阻塞狀態(tài)將PCB置入阻塞隊列轉(zhuǎn)處理機調(diào)度進程和進程控制喚醒原語開始從阻塞隊列刪除該PCB設(shè)置進程狀態(tài)為就緒狀態(tài)將PCB置入就緒隊列轉(zhuǎn)處理機調(diào)度Windows 的進程由執(zhí)行體進程塊的進程由執(zhí)行體進程塊EPROCESS表示,表示, EPROCESS即即進程對象。進程對象。進程對象的屬性進程對象的屬性:PID, PCB, Access Token, Base Priority, 句柄表,指向句柄表,指向進程環(huán)境塊進程環(huán)境塊PEB的指針,親和
26、處理器集合等的指針,親和處理器集合等在在Windows 中中,PCB也稱為內(nèi)核進程塊也稱為內(nèi)核進程塊KPROCESS,即內(nèi)核進程,即內(nèi)核進程對象對象EPOCESS和和KPROCESS位于內(nèi)核空間,位于內(nèi)核空間,PEB位于用戶空間位于用戶空間進程和進程控制Windows 的進程管理進程和進程控制進程創(chuàng)建CreateProcess三函數(shù)用于創(chuàng)建新進程及其主線程,以執(zhí)行指定的程序。三函數(shù)用于創(chuàng)建新進程及其主線程,以執(zhí)行指定的程序。新進程可以繼承:打開文件的句柄、各種對象(如進程、線程、新進程可以繼承:打開文件的句柄、各種對象(如進程、線程、信號量、管道等)的句柄、環(huán)境變量、當(dāng)前目錄)每個句信號量、管
27、道等)的句柄、環(huán)境變量、當(dāng)前目錄)每個句柄在創(chuàng)建或打開時能指定是否可繼承;柄在創(chuàng)建或打開時能指定是否可繼承;新進程不能繼承:優(yōu)先權(quán)類、內(nèi)存句柄、新進程不能繼承:優(yōu)先權(quán)類、內(nèi)存句柄、DLL模塊句柄模塊句柄CREATE_NEW_CONSOLE表示新進程有一個新的控制臺表示新進程有一個新的控制臺CREATE_NEW_PROCESS_GROUP表示新進程是一個新的進表示新進程是一個新的進程組的根。程組的根。Windows 的進程管理進程和進程控制ExitProcess三或TerminateProcess三,則進程包含的線程全部終止;ExitProcess三終止一個進程和它的所有線程;它的終止操作是完整
28、的,包括關(guān)閉所有對象句柄、它的所有線程等;TerminateProcess三終止指定的進程和它的所有線程;它的終止操作是不完整的(如:不向相關(guān)DLL通報關(guān)閉情況),通常只用于異常情況下對進程的終止。Windows 的進程管理進程和進程控制與進程管理相關(guān)的內(nèi)核變量PsActiveProcessHead進程鏈表頭PsInitialSystemProcess系統(tǒng)進程(系統(tǒng)線程的宿主)PsIdleProcess空閑進程Windows 的進程管理進程和進程控制線程的引入線程的引入操作系統(tǒng)對線程的實現(xiàn)方式操作系統(tǒng)對線程的實現(xiàn)方式進程和線程的比較進程和線程的比較Windows的線程的線程如果說在操作系統(tǒng)中引
29、入進程是為了使多個程序能夠并發(fā)執(zhí)行,提高資源利用率和系統(tǒng)吞吐量,那么引入線程(THREAD)的目的則是減少程序并發(fā)執(zhí)行所付出的時空開銷來,進一步提高系統(tǒng)的并發(fā)程度。線程進程:進程: 資源(存儲器、文件)分配單位和資源(存儲器、文件)分配單位和CPU調(diào)度調(diào)度/分派單位。分派單位。由于進程是資源擁有者,因而在創(chuàng)建、終止、切換過程中,系統(tǒng)必由于進程是資源擁有者,因而在創(chuàng)建、終止、切換過程中,系統(tǒng)必須為之付出較大的時空開銷。正因為如此,系統(tǒng)中并發(fā)執(zhí)行的進程須為之付出較大的時空開銷。正因為如此,系統(tǒng)中并發(fā)執(zhí)行的進程的數(shù)目不宜過多,進程切換才頻率也不宜過高,這樣就限制了系統(tǒng)的數(shù)目不宜過多,進程切換才頻率也
30、不宜過高,這樣就限制了系統(tǒng)的并發(fā)程度。的并發(fā)程度。解決這一問題的思路:將進程的兩個基本屬性分開,由操作系統(tǒng)分解決這一問題的思路:將進程的兩個基本屬性分開,由操作系統(tǒng)分別處理別處理線程概念的引入線程概念的引入在支持線程的操作系統(tǒng)中,進程只作為資源分配單位,而線程則作在支持線程的操作系統(tǒng)中,進程只作為資源分配單位,而線程則作為為CPU調(diào)度調(diào)度/分派單位。分派單位。線程線程:作為線程:作為CPU調(diào)度單位,只擁有必不可少的資源,如:線程狀態(tài)、寄存調(diào)度單位,只擁有必不可少的資源,如:線程狀態(tài)、寄存器上下文和棧器上下文和棧同樣具有就緒、阻塞和執(zhí)行三種基本狀態(tài)同樣具有就緒、阻塞和執(zhí)行三種基本狀態(tài)線程的優(yōu)點:
31、減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、退出和線程的優(yōu)點:減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、退出和調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)程度。調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)程度。線程的創(chuàng)建時間比進程短;線程的創(chuàng)建時間比進程短;線程的終止時間比進程短;線程的終止時間比進程短;同進程內(nèi)的線程切換時間比進程短;同進程內(nèi)的線程切換時間比進程短;由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通過內(nèi)核由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通過內(nèi)核的通信;的通信;線程進程與線程的關(guān)系線程線程的引入內(nèi)核維護進程和線程的上下文信息;內(nèi)核維護進程和線程的上下文
32、信息;線程切換由內(nèi)核完成;線程切換由內(nèi)核完成;一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,不會影響其他線程的運行。一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,不會影響其他線程的運行。時間片分配給線程,所以多線程的進程獲得更多時間片分配給線程,所以多線程的進程獲得更多CPU時間。時間。依賴于OS核心,由內(nèi)核完成創(chuàng)建和撤銷。Windows 支持內(nèi)核線程;內(nèi)核線程(kernel-level thread)線程用戶線程的維護由應(yīng)用進程完成;用戶線程的維護由應(yīng)用進程完成;內(nèi)核不了解用戶線程的存在;內(nèi)核不了解用戶線程的存在;用戶線程切換不需要內(nèi)核特權(quán);用戶線程切換不需要內(nèi)核特權(quán);用戶線程調(diào)度算法可針對應(yīng)用優(yōu)化;用戶線程調(diào)度算法可針對應(yīng)用
33、優(yōu)化;不依賴于OS核心,應(yīng)用進程利用線程庫提供的創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。如:數(shù)據(jù)庫系統(tǒng)Informix,圖形處理Aldus PageMaker。調(diào)度由應(yīng)用軟件內(nèi)部進行,通常采用非搶先式和更簡單的規(guī)則。一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,則整個進程在等待。時間片分配給進程,多線程則每個線程就慢。線程OS對線程的實現(xiàn)方式地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各線程間共享某進程內(nèi)的線程在其他進程不可見線程間共享某進程內(nèi)的線程在其他進程不可見通信:進程間只能使用通信:進程間只能使用IPC線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信也需要同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性也需要同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性調(diào)度:線程上下文切換比進程上下文切換要快得多;調(diào)度:線程上下文切換比進程上下文切換要快得多;線程線程切換和進程切換線程進程和線程的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版城市景觀vi設(shè)計優(yōu)化及維護服務(wù)合同3篇
- 2025年學(xué)校體育器材購置與維修保養(yǎng)服務(wù)合同范本3篇
- 二零二五年度公益項目捐贈協(xié)議3篇
- 2025年度牛只跨區(qū)域運輸與銷售合同示范2篇
- 2024年石球購置與品牌授權(quán)合作框架協(xié)議3篇
- 2025借款合同簡單范文
- 二零二五年度國標柴油綠色物流配送與市場拓展協(xié)議3篇
- 二零二五年太陽能光伏發(fā)電項目承包合同2篇
- 二零二五年地產(chǎn)廣告折頁定制、印刷與營銷執(zhí)行合同2篇
- 2025年度土特產(chǎn)線上線下融合營銷合同3篇
- 2023年鞍山市海城市教育局畢業(yè)生招聘筆試真題
- 北京2025年首都醫(yī)科大學(xué)附屬北京友誼醫(yī)院招聘140人歷年參考題庫(頻考版)含答案解析
- 遼寧省撫順縣2024-2025學(xué)年九年級上學(xué)期期末物理試卷(含答案)
- 2024-2025學(xué)年安徽省合肥市巢湖市三年級數(shù)學(xué)第一學(xué)期期末達標測試試題含解析
- 浙江省寧波市九校2023-2024學(xué)年高一上期末聯(lián)考生物試題
- 《工商管理專業(yè)畢業(yè)實習(xí)》課程教學(xué)大綱
- 乳腺中心建設(shè)方案
- 國開電大本科《西方經(jīng)濟學(xué)(本)》網(wǎng)上形考(作業(yè)一至六)試題及答案
- 提高有風(fēng)險患者預(yù)防跌倒墜床護理措施落實率品管圈PDCA案例匯報
- 安環(huán)部2025年度工作計劃
- 2024年行政執(zhí)法人員執(zhí)法資格知識考試題庫(附含答案)
評論
0/150
提交評論