




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