




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1進程和進程控制進程和進程控制線程線程進程互斥和同步進程互斥和同步進程間通信進程間通信死鎖問題死鎖問題處理器調(diào)度處理器調(diào)度第三章第三章 處理機管理處理機管理( (上上) ) 2進程和進程控制進程和進程控制進程的定義和描述進程的定義和描述進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程控制進程控制Windows的進程管理的進程管理3進程的定義和描述進程的定義和描述進程的定義進程的定義一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行過程。行過程。進程的特征進程的特征動態(tài)性具有動態(tài)的地址空間動態(tài)性具有動態(tài)的地址空間獨立性各進程的地址空間相互獨立獨立性各進
2、程的地址空間相互獨立并發(fā)性宏觀上各進程同時運行并發(fā)性宏觀上各進程同時運行結(jié)構(gòu)化進程的地址空間是結(jié)構(gòu)化的結(jié)構(gòu)化進程的地址空間是結(jié)構(gòu)化的進程和進程控制進程和進程控制4進程與程序的區(qū)別進程與程序的區(qū)別進程是動態(tài)的,程序是靜態(tài)的進程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;:程序是有序代碼的集合;進程是程序的執(zhí)行。通常進程不可在計算機之間遷移;而進程是程序的執(zhí)行。通常進程不可在計算機之間遷移;而程序通常對應(yīng)著文件,是靜態(tài)的,可以復(fù)制。程序通常對應(yīng)著文件,是靜態(tài)的,可以復(fù)制。進程是暫時的,程序的永久的進程是暫時的,程序的永久的:進程是一個狀態(tài)變化的過:進程是一個狀態(tài)變化的過程,程序可長久保存。程,程
3、序可長久保存。進程與程序的組成不同進程與程序的組成不同:進程的組成包括程序、數(shù)據(jù)和進:進程的組成包括程序、數(shù)據(jù)和進程控制塊(即進程狀態(tài)信息)。程控制塊(即進程狀態(tài)信息)。進程與程序的對應(yīng)關(guān)系進程與程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程序可對應(yīng):通過多次執(zhí)行,一個程序可對應(yīng)多個進程;通過調(diào)用關(guān)系,一個進程可包括多個程序。多個進程;通過調(diào)用關(guān)系,一個進程可包括多個程序。進程的定義和描述進程的定義和描述進程和進程控制進程和進程控制5進程控制塊進程控制塊每個進程在每個進程在OS中的登記表項(可能有總數(shù)目限制),中的登記表項(可能有總數(shù)目限制),OS據(jù)此據(jù)此對進程進行對進程進行控制和管理控制和管理(PCB
4、中的內(nèi)容會動態(tài)改變)中的內(nèi)容會動態(tài)改變)處于核心段處于核心段,通常不能由應(yīng)用程序自身的代碼來直接訪問,通常不能由應(yīng)用程序自身的代碼來直接訪問,而要通過系統(tǒng)調(diào)用訪問而要通過系統(tǒng)調(diào)用訪問進程控制塊進程控制塊(PCB, process control block)是由是由OS維護的維護的用來記錄進程相關(guān)信息的一個數(shù)據(jù)結(jié)構(gòu)。用來記錄進程相關(guān)信息的一個數(shù)據(jù)結(jié)構(gòu)。進程和進程控制進程和進程控制進程的定義和描述進程的定義和描述6進程控制塊的內(nèi)容進程控制塊的內(nèi)容進程描述信息進程描述信息:進程標(biāo)識符進程標(biāo)識符(process ID),唯一,通常是一個整數(shù);,唯一,通常是一個整數(shù);進程名,通?;诳蓤?zhí)行文件名;進程
5、名,通常基于可執(zhí)行文件名;用戶標(biāo)識符用戶標(biāo)識符(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)現(xiàn)場保護結(jié)構(gòu):寄存器值(通用、程序計數(shù)器:寄存器值(通用、程序計數(shù)器PC、狀態(tài)、狀態(tài)PSW,地址包括棧指針)地址包括棧指針)進程和進程控制進程
6、和進程控制進程的定義和描述進程的定義和描述7PCB的組織方式的組織方式鏈表鏈表:同一狀態(tài)的進程其:同一狀態(tài)的進程其PCB成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表。成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表。各狀態(tài)的進程形成不同的鏈表:就緒鏈表、阻塞鏈表各狀態(tài)的進程形成不同的鏈表:就緒鏈表、阻塞鏈表索引表索引表:同一狀態(tài)的進程歸入一個:同一狀態(tài)的進程歸入一個index表(由表(由index指向指向PCB),多個狀態(tài)),多個狀態(tài)對應(yīng)多個不同的對應(yīng)多個不同的index表。表。各狀態(tài)的進程形成不同的索引表:就緒索引表、阻塞索引表各狀態(tài)的進程形成不同的索引表:就緒索引表、阻塞索引表PCB TableReadyBl
7、ockedPCB TableIndex TableReadyBlocked進程和進程控制進程和進程控制進程的定義和描述進程的定義和描述8進程上下文(進程上下文(context)用戶級上下文用戶級上下文:進程的用戶地址空間(包括用戶棧各層次),:進程的用戶地址空間(包括用戶棧各層次),包括用戶正文段、用戶數(shù)據(jù)段和用戶棧;包括用戶正文段、用戶數(shù)據(jù)段和用戶棧;寄存器級上下文寄存器級上下文:程序寄存器、處理機狀態(tài)寄存器、棧指針、:程序寄存器、處理機狀態(tài)寄存器、棧指針、通用寄存器的值;通用寄存器的值;系統(tǒng)級上下文系統(tǒng)級上下文:靜態(tài)部分(靜態(tài)部分(PCBPCB和資源表格)和資源表格)動態(tài)部分:核心棧(核心
8、過程的棧結(jié)構(gòu),不同進程在調(diào)用相動態(tài)部分:核心棧(核心過程的棧結(jié)構(gòu),不同進程在調(diào)用相同核心過程時有不同核心棧)同核心過程時有不同核心棧) 進程上下文是對進程上下文是對進程執(zhí)行活動全過程進程執(zhí)行活動全過程的的靜態(tài)描述靜態(tài)描述。進。進程上下文由進程的用戶地址空間內(nèi)容、硬件寄存器內(nèi)程上下文由進程的用戶地址空間內(nèi)容、硬件寄存器內(nèi)容及與該進程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成。容及與該進程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成。進程和進程控制進程和進程控制進程的定義和描述進程的定義和描述9五狀態(tài)進程模型五狀態(tài)進程模型五狀態(tài)進程模型五狀態(tài)進程模型(狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換)進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程在從創(chuàng)建到終止的全過程中一直處于一個不
9、斷變化的過進程在從創(chuàng)建到終止的全過程中一直處于一個不斷變化的過程程, 為了刻畫進程的這個變化過程,操作系統(tǒng)把進程分成若為了刻畫進程的這個變化過程,操作系統(tǒng)把進程分成若干種狀態(tài)干種狀態(tài) 進程和進程控制進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate10狀態(tài)狀態(tài)新建狀態(tài)新建狀態(tài)(New):進程剛創(chuàng)建,但還不能運行進程剛創(chuàng)建,但還不能運行(一種可能的原因是一種可能的原因是OS對對并發(fā)進程數(shù)的限制并發(fā)進程數(shù)的限制);OS在進程新建狀態(tài)的工作在進程新建狀態(tài)的工作:分配和建立分配和建
10、立PCB表項、建立資源表格表項、建立資源表格(如打開文件表)并分配資源,加載程序并建立地址空間表。(如打開文件表)并分配資源,加載程序并建立地址空間表。結(jié)束狀態(tài)結(jié)束狀態(tài)(Exit):進程已結(jié)束運行進程已結(jié)束運行.回收除回收除PCB之外的其他資源,并讓其他進程從之外的其他資源,并讓其他進程從PCB中收集有關(guān)信中收集有關(guān)信息(如記帳,將退出碼息(如記帳,將退出碼exit code傳遞給父進程)。傳遞給父進程)。進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型五狀態(tài)進程模型進程和進程控制進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWa
11、itEventOccursReleaseCreate11運行狀態(tài)運行狀態(tài)(Running):占用處理機資源并運行;處于此狀態(tài)的進程的數(shù)目占用處理機資源并運行;處于此狀態(tài)的進程的數(shù)目小于等于小于等于CPU的數(shù)目。的數(shù)目。 在沒有其他進程可以執(zhí)行時(如所有進程都在阻塞狀態(tài)),通常會自在沒有其他進程可以執(zhí)行時(如所有進程都在阻塞狀態(tài)),通常會自動執(zhí)行系統(tǒng)的動執(zhí)行系統(tǒng)的idle進程(相當(dāng)于空操作)。進程(相當(dāng)于空操作)。就緒狀態(tài)就緒狀態(tài)(Ready):進程已獲得除處理機外的所需資源,等待分配處理機進程已獲得除處理機外的所需資源,等待分配處理機資源;只要分配資源;只要分配CPU就可執(zhí)行。就可執(zhí)行。可以按
12、可以按多個優(yōu)先級多個優(yōu)先級來劃分隊列,如:時間片用完來劃分隊列,如:時間片用完低優(yōu),低優(yōu),I/O完成完成中優(yōu),頁面調(diào)入完成中優(yōu),頁面調(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)轉(zhuǎn)換五狀態(tài)進程模型五狀態(tài)進程模型進程和進程控制進程和進程控制AdmitRunningNewExi
13、tReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate12進程狀態(tài)轉(zhuǎn)換進程狀態(tài)轉(zhuǎn)換創(chuàng)建創(chuàng)建(Create)新進程:新進程:創(chuàng)建一個新進程,以運行一個程序。創(chuàng)建一個新進程,以運行一個程序。提交提交(Admit):收容一個新進程,進入就緒狀態(tài)。由于性能、內(nèi)存、進程收容一個新進程,進入就緒狀態(tài)。由于性能、內(nèi)存、進程總數(shù)等原因,系統(tǒng)會限制并發(fā)進程總數(shù)。總數(shù)等原因,系統(tǒng)會限制并發(fā)進程總數(shù)。調(diào)度運行調(diào)度運行(Dispatch):從就緒進程表中選擇一個進程,進入運行狀態(tài);從就緒進程表中選擇一個進程,進入運行狀態(tài);釋放釋放(Release):
14、由于進程完成或失敗而中止進程運行,進入結(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)轉(zhuǎn)換五狀態(tài)進程模型五狀態(tài)進程模型進程和進程控制進程和進程控制AdmitRunningNewExitReadyBlockedDispatc
15、hTimeoutEventWaitEventOccursReleaseCreate13超時(超時(Timeout):):由于用完由于用完時間片時間片或高或高優(yōu)先進程優(yōu)先進程就緒等導(dǎo)致進程暫停就緒等導(dǎo)致進程暫停運行;運行;事件等待(事件等待(Event Wait):):進程要求的事件未出現(xiàn)而進入阻塞;進程要求的事件未出現(xiàn)而進入阻塞;可能可能的原因的原因包括:申請系統(tǒng)服務(wù)或資源、通信、包括:申請系統(tǒng)服務(wù)或資源、通信、I/O操作等;操作等;事件發(fā)生(事件發(fā)生(Event Occurs):):進程等待的事件發(fā)生;如:進程等待的事件發(fā)生;如:I/O操作完成、操作完成、申請資源成功等;申請資源成功等;進程
16、的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換五狀態(tài)進程模型五狀態(tài)進程模型進程和進程控制進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate14五狀態(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)先級的引入,這個問題的出現(xiàn)是由于進程優(yōu)先級的引入,一些低優(yōu)先級進程可能等待較長時間
17、,從而被對換至外存。這一些低優(yōu)先級進程可能等待較長時間,從而被對換至外存。這樣做的目的是:樣做的目的是:提高處理機效率提高處理機效率:就緒進程表為空時,有空閑的內(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)試進程(從而對其地址空(從而對其地址空間進行讀寫)間進行讀寫)掛起進程模型掛起進程模型進程的
18、狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制15單掛起進程模型單掛起進程模型掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendActivate16雙掛起進程模型掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEven
19、tOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend17就緒狀態(tài)就緒狀態(tài)(Ready):進程在內(nèi)存且可立即進入運行狀態(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)進程在外存,但只要進
20、入內(nèi)存,即可運行;存,即可運行;掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換狀態(tài)狀態(tài)進程和進程控制進程和進程控制18掛起(掛起(Suspend):):把一個進程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:把一個進程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:阻塞到阻塞掛起:阻塞到阻塞掛起:沒有進程處于沒有進程處于就緒狀態(tài)就緒狀態(tài)或就緒進程要求更多內(nèi)存資源時,或就緒進程要求更多內(nèi)存資源時,會進行這種轉(zhuǎn)換,以提交新進程或運行就緒進程;會進行這種轉(zhuǎn)換,以提交新進程或運行就緒進程;就緒到就緒掛起:就緒到就緒掛起:當(dāng)有當(dāng)有高優(yōu)先級阻塞高優(yōu)先級阻塞(系統(tǒng)認為會很快就緒的)進程和低優(yōu)(系統(tǒng)認為會很快就緒的)進程和低
21、優(yōu)先級就緒進程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進程;先級就緒進程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進程;運行到就緒掛起:運行到就緒掛起:對對搶先式搶先式操作系統(tǒng),當(dāng)有操作系統(tǒng),當(dāng)有高優(yōu)先級高優(yōu)先級阻塞進程因事件出現(xiàn)而阻塞進程因事件出現(xiàn)而進入就緒狀態(tài)時,系統(tǒng)可能會把運行進程轉(zhuǎn)到就緒掛起狀態(tài);進入就緒狀態(tài)時,系統(tǒng)可能會把運行進程轉(zhuǎn)到就緒掛起狀態(tài);掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSus
22、pendEventOccursActivateSuspendActivateSuspend19激活(激活(Activate):):把一個進程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:把一個進程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:就緒掛起到就緒:沒有就緒進程就緒掛起到就緒:沒有就緒進程或或掛起就緒進程優(yōu)先級高掛起就緒進程優(yōu)先級高于就緒進程時,于就緒進程時,會進行這種轉(zhuǎn)換;會進行這種轉(zhuǎn)換;阻塞掛起到阻塞:阻塞掛起到阻塞:當(dāng)一個進程當(dāng)一個進程釋放足夠內(nèi)存釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級阻時,系統(tǒng)會把一個高優(yōu)先級阻塞掛起進程激活塞掛起進程激活, 系統(tǒng)認為會很快出現(xiàn)所等待的事件;系統(tǒng)認為會很快出現(xiàn)所等待的
23、事件;掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend20事件發(fā)生(事件發(fā)生(Event Occurs):):進程等待的事件發(fā)生,可能的情況有:進程等待的事件發(fā)生,可能的情況有:阻塞到就緒:阻塞到就緒:針對內(nèi)存進程的事件發(fā)生;針對內(nèi)存進程的事件發(fā)生;阻塞掛起到就緒掛起:阻塞掛起到就緒掛起:針對外
24、存進程的事件發(fā)生;針對外存進程的事件發(fā)生;掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend21收容收容(Admit):收容一個新進程,進入就緒狀態(tài)或就緒掛起狀態(tài)。進入就緒掛收容一個新進程,進入就緒狀態(tài)或就緒掛起狀態(tài)。進入就緒掛起的原因是系統(tǒng)希望起的原因是系統(tǒng)希望保持一個大的就緒進程表保持一個大的
25、就緒進程表(掛起和非掛起);(掛起和非掛起);掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換AdmitRunningReadySuspendReadyDispatchTimeoutNewSuspendActivateAdmitSuspend22雙掛起進程模型掛起進程模型掛起進程模型進程的狀態(tài)轉(zhuǎn)換進程的狀態(tài)轉(zhuǎn)換進程和進程控制進程和進程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendNew
26、EventOccursActivateSuspendActivateAdmitSuspend23進程控制進程控制進程控制進程控制, 就是操作系統(tǒng)使用一些就是操作系統(tǒng)使用一些具有特定功能的程序具有特定功能的程序段段來創(chuàng)建與撤消進程以及完成進程狀態(tài)的轉(zhuǎn)換來創(chuàng)建與撤消進程以及完成進程狀態(tài)的轉(zhuǎn)換, 從而達從而達到多個進程高效率地并發(fā)執(zhí)行和協(xié)調(diào)到多個進程高效率地并發(fā)執(zhí)行和協(xié)調(diào),實現(xiàn)資源共享實現(xiàn)資源共享.進程控制主要體現(xiàn)在進程的創(chuàng)建與撤消,以及進程的阻進程控制主要體現(xiàn)在進程的創(chuàng)建與撤消,以及進程的阻塞與喚醒。塞與喚醒。 操作系統(tǒng)對進程的控制是依據(jù)用戶命令和系統(tǒng)狀態(tài)來決操作系統(tǒng)對進程的控制是依據(jù)用戶命令和系
27、統(tǒng)狀態(tài)來決定的。用戶可在一定程序上對進程的狀態(tài)進行控制。定的。用戶可在一定程序上對進程的狀態(tài)進行控制。 具有特定功能的程序段具有特定功能的程序段-原語原語進程和進程控制進程和進程控制24進程控制進程控制原語原語(primitive):由若干條指令構(gòu)成的由若干條指令構(gòu)成的“原子操原子操作作(atomic operation)”過程,作為一個過程,作為一個整體整體而而不不可分割可分割要么全都完成,要么全都不做。許多要么全都完成,要么全都不做。許多系統(tǒng)調(diào)用就是原語。系統(tǒng)調(diào)用就是原語。注意:注意:系統(tǒng)調(diào)用并不都是原語。系統(tǒng)調(diào)用并不都是原語。進程進程A調(diào)用調(diào)用read(),因無數(shù),因無數(shù)據(jù)而阻塞,在據(jù)而
28、阻塞,在read()里未返回。然后進程里未返回。然后進程B調(diào)用調(diào)用read(),此,此時時read()被重入。系統(tǒng)調(diào)用不一定一次執(zhí)行完并返回該進被重入。系統(tǒng)調(diào)用不一定一次執(zhí)行完并返回該進程,有可能在特定的點暫停,而轉(zhuǎn)入到其他進程。程,有可能在特定的點暫停,而轉(zhuǎn)入到其他進程。進程和進程控制進程和進程控制25進程控制進程控制進程和進程控制進程和進程控制創(chuàng)建原語創(chuàng)建原語進程的存在以進程的存在以PCB為標(biāo)為標(biāo)志志, 所以創(chuàng)建新進程的主所以創(chuàng)建新進程的主要任務(wù)就是為進程建立要任務(wù)就是為進程建立PCB, 將調(diào)用者提供的有將調(diào)用者提供的有關(guān)信息填入關(guān)信息填入PCB的各數(shù)的各數(shù)據(jù)項中據(jù)項中開始開始分配分配PC
29、B空間空間將有關(guān)信息填入將有關(guān)信息填入PCB的數(shù)據(jù)項的數(shù)據(jù)項將將PCB送入相應(yīng)狀態(tài)送入相應(yīng)狀態(tài)PCB鏈表鏈表結(jié)束結(jié)束26進程控制進程控制進程和進程控制進程和進程控制撤消原語撤消原語進程完成其任務(wù)之后進程完成其任務(wù)之后, 系統(tǒng)應(yīng)及時回收它占系統(tǒng)應(yīng)及時回收它占有的資源有的資源開始開始搜索搜索PCB鏈表鏈表釋放該進程所占有的資源釋放該進程所占有的資源釋放釋放PCB結(jié)構(gòu)本身結(jié)構(gòu)本身結(jié)束結(jié)束有此有此PCB異常處理異常處理NoYes27進程控制進程控制進程和進程控制進程和進程控制阻塞原語阻塞原語開始開始將將CPU當(dāng)前狀態(tài)存入當(dāng)前狀態(tài)存入PCB設(shè)置進程狀態(tài)為阻塞狀態(tài)設(shè)置進程狀態(tài)為阻塞狀態(tài)將將PCB置入阻塞隊
30、列置入阻塞隊列轉(zhuǎn)處理機調(diào)度轉(zhuǎn)處理機調(diào)度28進程控制進程控制進程和進程控制進程和進程控制喚醒原語喚醒原語開始開始從阻塞隊列刪除該從阻塞隊列刪除該PCB設(shè)置進程狀態(tài)為就緒狀態(tài)設(shè)置進程狀態(tài)為就緒狀態(tài)將將PCB置入就緒隊列置入就緒隊列轉(zhuǎn)處理機調(diào)度轉(zhuǎn)處理機調(diào)度29Windows 的進程管理的進程管理Windows 的進程由執(zhí)行體進程塊的進程由執(zhí)行體進程塊EPROCESS表示,表示, EPROCESS即即進程對象進程對象。進程對象進程對象的屬性的屬性:PID, PCB, Access Token, Base Priority, 句句柄表,指向進程環(huán)境塊柄表,指向進程環(huán)境塊PEB的指針,親和處理器集合等的指
31、針,親和處理器集合等在在Windows 中中,PCB也稱為內(nèi)核進程塊也稱為內(nèi)核進程塊KPROCESS,即內(nèi),即內(nèi)核進程對象核進程對象EPOCESS和和KPROCESS位于內(nèi)核空間,位于內(nèi)核空間,PEB位于用戶空間位于用戶空間進程和進程控制進程和進程控制30Windows的進程結(jié)構(gòu)的進程結(jié)構(gòu)進程進程對象對象對象句柄列表對象句柄列表VADVADVAD對象對象對象對象虛擬地址空間描述表虛擬地址空間描述表訪問令牌訪問令牌線程線程線程線程線程線程. . .訪問令牌訪問令牌Windows 的進程管理的進程管理進程和進程控制進程和進程控制31進程創(chuàng)建進程創(chuàng)建 CreateProcess()函數(shù)用于函數(shù)用于創(chuàng)
32、建新進程及其主線程創(chuàng)建新進程及其主線程,以執(zhí)行,以執(zhí)行指定的程序。指定的程序。 新進程可以新進程可以繼承繼承:打開文件的句柄、各種對象(如進程、:打開文件的句柄、各種對象(如進程、線程、信號量、管道等)的句柄、環(huán)境變量、當(dāng)前目錄)線程、信號量、管道等)的句柄、環(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表示
33、新進程是一個新表示新進程是一個新的進程組的根。的進程組的根。Windows 的進程管理的進程管理進程和進程控制進程和進程控制32進程退出進程退出ExitProcess()或或TerminateProcess(),則進程包含的線程全部,則進程包含的線程全部終止;終止;ExitProcess()終止一個進程和它的所有線程;它的終止操作終止一個進程和它的所有線程;它的終止操作是完整的,包括關(guān)閉所有對象句柄、它的所有線程等;是完整的,包括關(guān)閉所有對象句柄、它的所有線程等;TerminateProcess()終止指定的進程和它的所有線程;它的終止指定的進程和它的所有線程;它的終止操作是不完整的(如:不向
34、相關(guān)終止操作是不完整的(如:不向相關(guān)DLL通報關(guān)閉情通報關(guān)閉情況),通常只用于異常情況下對進程的終止。況),通常只用于異常情況下對進程的終止。Windows 的進程管理的進程管理進程和進程控制進程和進程控制33與進程管理相關(guān)的內(nèi)核變量與進程管理相關(guān)的內(nèi)核變量PsActiveProcessHead進程鏈表頭進程鏈表頭PsInitialSystemProcess系統(tǒng)進程(系統(tǒng)線程的宿主)系統(tǒng)進程(系統(tǒng)線程的宿主)PsIdleProcess空閑進程空閑進程Windows 的進程管理的進程管理進程和進程控制進程和進程控制34線程線程線程的引入線程的引入操作系統(tǒng)對線程的實現(xiàn)方式操作系統(tǒng)對線程的實現(xiàn)方式進
35、程和線程的比較進程和線程的比較Windows的線程的線程如果說在操作系統(tǒng)中引入進程是為了使多個程序能夠并發(fā)執(zhí)如果說在操作系統(tǒng)中引入進程是為了使多個程序能夠并發(fā)執(zhí)行,提高資源利用率和系統(tǒng)吞吐量,那么引入線程行,提高資源利用率和系統(tǒng)吞吐量,那么引入線程(THREAD)的目的則是減少程序并發(fā)執(zhí)行所付出的時空開銷來,進一步提的目的則是減少程序并發(fā)執(zhí)行所付出的時空開銷來,進一步提高系統(tǒng)的高系統(tǒng)的并發(fā)程度并發(fā)程度。線程線程35線程的引入線程的引入進程:進程: 資源(存儲器、文件)分配單位和資源(存儲器、文件)分配單位和CPU調(diào)度調(diào)度/分派單位。分派單位。由于進程是資源擁有者,因而在創(chuàng)建、終止、切換過程中,
36、系由于進程是資源擁有者,因而在創(chuàng)建、終止、切換過程中,系統(tǒng)必須為之付出較大的時空開銷。正因為如此,系統(tǒng)中并發(fā)執(zhí)統(tǒng)必須為之付出較大的時空開銷。正因為如此,系統(tǒng)中并發(fā)執(zhí)行的進程的數(shù)目不宜過多,進程切換才頻率也不宜過高,這樣行的進程的數(shù)目不宜過多,進程切換才頻率也不宜過高,這樣就限制了系統(tǒng)的并發(fā)程度。就限制了系統(tǒng)的并發(fā)程度。解決這一問題的思路:將進程的兩個基本屬性分開,由操作系解決這一問題的思路:將進程的兩個基本屬性分開,由操作系統(tǒng)分別處理統(tǒng)分別處理線程概念的引入線程概念的引入在支持線程的操作系統(tǒng)中,進程只作為資源分配單位,而線程在支持線程的操作系統(tǒng)中,進程只作為資源分配單位,而線程則作為則作為CP
37、U調(diào)度調(diào)度/分派單位。分派單位。線程線程36線程的引入線程的引入線程:線程:作為作為CPU調(diào)度單位,只擁有必不可少的資源,如:線程調(diào)度單位,只擁有必不可少的資源,如:線程狀態(tài)、寄存器上下文和棧狀態(tài)、寄存器上下文和棧同樣具有就緒、阻塞和執(zhí)行三種基本狀態(tài)同樣具有就緒、阻塞和執(zhí)行三種基本狀態(tài)線程的優(yōu)點:線程的優(yōu)點:減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、退出和調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)退出和調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)程度。程度。線程的創(chuàng)建時間比進程短;線程的創(chuàng)建時間比進程短;線程的終止時間比進程短;線程的終止時間
38、比進程短;同進程內(nèi)的線程切換時間比進程短;同進程內(nèi)的線程切換時間比進程短;由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通過內(nèi)核的通信;過內(nèi)核的通信;線程線程37one processone threadmultiple processesone thread per processone processmultiple threadsmultiple processesmultiple threads per process進程與線程的關(guān)系進程與線程的關(guān)系線程線程線程的引入線程的引入38OS對線程的實現(xiàn)方式對線程的實現(xiàn)方式內(nèi)核維護進程和
39、線程的上下文信息;內(nèi)核維護進程和線程的上下文信息;線程切換由內(nèi)核完成;線程切換由內(nèi)核完成;一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,不會影響其他線程的運行。一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,不會影響其他線程的運行。時間片分配給線程,所以多線程的進程獲得更多時間片分配給線程,所以多線程的進程獲得更多CPU時間。時間。依賴于依賴于OS核心核心,由內(nèi)核完成創(chuàng)建和撤銷。,由內(nèi)核完成創(chuàng)建和撤銷。Windows 支持內(nèi)核線支持內(nèi)核線程;程;內(nèi)核線程內(nèi)核線程(kernel-level thread)線程線程39用戶線程用戶線程(user-level thread)用戶線程的維護由應(yīng)用進程完成;用戶線程的維護由應(yīng)用進程完成;內(nèi)核
40、不了解用戶線程的存在;內(nèi)核不了解用戶線程的存在;用戶線程切換不需要內(nèi)核特權(quán);用戶線程切換不需要內(nèi)核特權(quán);用戶線程調(diào)度算法可針對應(yīng)用優(yōu)化;用戶線程調(diào)度算法可針對應(yīng)用優(yōu)化;不依賴于不依賴于OS核心,應(yīng)用進程利用線程庫提供的創(chuàng)建、同步、核心,應(yīng)用進程利用線程庫提供的創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。如:數(shù)據(jù)庫系統(tǒng)調(diào)度和管理線程的函數(shù)來控制用戶線程。如:數(shù)據(jù)庫系統(tǒng)Informix,圖形處理,圖形處理Aldus PageMaker。調(diào)度由應(yīng)用軟件內(nèi)部。調(diào)度由應(yīng)用軟件內(nèi)部進行,通常采用非搶先式和更簡單的規(guī)則。一個線程發(fā)起系統(tǒng)進行,通常采用非搶先式和更簡單的規(guī)則。一個線程發(fā)起系統(tǒng)調(diào)用而阻塞,則
41、整個進程在等待。時間片分配給進程,多線程調(diào)用而阻塞,則整個進程在等待。時間片分配給進程,多線程則每個線程就慢。則每個線程就慢。線程線程OS對線程的實現(xiàn)方式對線程的實現(xiàn)方式40進程和線程的比較進程和線程的比較地址空間和其他資源地址空間和其他資源(如打開文件):進程間相互獨立,同一進程(如打開文件):進程間相互獨立,同一進程的各線程間共享某進程內(nèi)的線程在其他進程不可見的各線程間共享某進程內(nèi)的線程在其他進程不可見通信通信:進程間只能使用:進程間只能使用IPC線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信也需要同步和互斥手段的輔助,以保證數(shù)據(jù)的
42、一致性也需要同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性調(diào)度調(diào)度:線程上下文切換比進程上下文切換要快得多;:線程上下文切換比進程上下文切換要快得多;線程線程41ThreadControlBlockUserStackUserStackKernelStackKernelStackUserAddressSpaceUserAddressSpaceProcessControlBlockProcessControlBlockThreadSingle-ThreadedProcess ModelMultithreadedProcess ModelThreadControlBlockUserStackKernelS
43、tackThreadThreadControlBlockUserStackKernelStackThread線程切換和進程切換線程切換和進程切換線程線程進程和線程的比較進程和線程的比較42Windows 的的線程線程線程線程線程對象線程對象Windows線程由執(zhí)行體線程塊線程由執(zhí)行體線程塊ETHREAD表示,即線程對表示,即線程對象,其中包含象,其中包含內(nèi)核線程塊內(nèi)核線程塊KTHREAD, 即線程控制塊即線程控制塊TCB指向指向線程環(huán)境線程環(huán)境塊塊TEB的指針的指針ETHREAD和和KTHREAD位于內(nèi)核空間,位于內(nèi)核空間,TEB位于用戶空位于用戶空間間43Windows 的線程狀態(tài)的線程狀態(tài)線程線程Windows 的的線程線程就緒狀態(tài)就緒狀態(tài)(Ready):進程已獲得進程已獲得除處理機外的所需資源,等待執(zhí)除處理機外的所需資源,等待執(zhí)行。行。運行終止就緒等待上下文切換搶先或時間片結(jié)束等待對象句柄執(zhí)行完成初始化轉(zhuǎn)換備用選擇執(zhí)行搶先放入就緒隊列等待完成等待完成換出的內(nèi)核堆棧換入的內(nèi)核堆棧重新初始化創(chuàng)建和初始化線程對象44Windows 的線程狀態(tài)的線程狀態(tài)線程線程Windows 的的線程線程運行終止就緒等待上下文切換搶先或時間片結(jié)束等待對象句柄執(zhí)行完成初始化過渡備用選擇執(zhí)行搶先放入就緒隊列等待完成等待完成換出的內(nèi)核堆棧換入的內(nèi)核堆棧重新初始化創(chuàng)建和初始化線程對象備用狀態(tài)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大連醫(yī)科大學(xué)《皮革整飾化學(xué)與工藝學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江藥科職業(yè)大學(xué)《學(xué)前兒童衛(wèi)生學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津醫(yī)學(xué)高等??茖W(xué)?!吨嗅t(yī)基礎(chǔ)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 衡陽師范學(xué)院南岳學(xué)院《信號與系統(tǒng)綜合實踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 工程竣工驗收報告防腐涂料質(zhì)量評估
- 針對進口商品各種情況調(diào)查
- 2025年中國醫(yī)藥市場分析:規(guī)模突破4萬億元 基因藥物增速領(lǐng)跑行業(yè)
- 深溝槽專項施工方案
- 湖南省株洲市淥口區(qū)第三中學(xué)、株洲健坤瀟湘高級中學(xué)2024-2025學(xué)年高二上學(xué)期1月期末聯(lián)考數(shù)學(xué)試題(解析版)
- 成渝經(jīng)濟圈名校聯(lián)盟2024-2025學(xué)年高三上學(xué)期第一次聯(lián)考數(shù)學(xué)試題(解析版)
- 銀行信貸部門廉政風(fēng)險點及防控措施
- 高一上學(xué)期統(tǒng)編版(2019)必修中外歷史綱要上翻書大賽課件
- 工業(yè)級3D打印市場潛力-深度研究
- 某縣電子政務(wù)信息化服務(wù)平臺項目可行性研究報告管理資料
- 加油站的充電樁建設(shè)與運營
- 2024-2025學(xué)年江蘇省南京建鄴區(qū)新城中學(xué)七年級(上)期末數(shù)學(xué)試卷(含答案)
- 《線性電源設(shè)計培訓(xùn)》課件
- 版權(quán)知識培訓(xùn)課件模板
- 法國簡介-中英文課件-文化宗教-人文社科-專業(yè)資料
- 室內(nèi)設(shè)計風(fēng)格
- 義齒加工廠各部門生產(chǎn)作業(yè)流程
評論
0/150
提交評論