進(jìn)程基本概念演示文稿課件_第1頁(yè)
進(jìn)程基本概念演示文稿課件_第2頁(yè)
進(jìn)程基本概念演示文稿課件_第3頁(yè)
進(jìn)程基本概念演示文稿課件_第4頁(yè)
進(jìn)程基本概念演示文稿課件_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二節(jié)進(jìn)程基本概念 上面所列的多道系統(tǒng)中的程序并發(fā)運(yùn)行的新特點(diǎn),程序本身是無(wú)法描述的,為此,當(dāng)一個(gè)程序在并發(fā)系統(tǒng)中執(zhí)行時(shí),需引進(jìn)一個(gè)新的數(shù)據(jù)結(jié)構(gòu)來(lái)記錄和描述這些特征。這樣,新引進(jìn)的數(shù)據(jù)結(jié)構(gòu)與它所描述的程序便形成了一個(gè)有機(jī)體。這個(gè)有機(jī)體就是進(jìn)程。1第二節(jié)進(jìn)程基本概念 上面所列的多道系統(tǒng)中的程進(jìn)程模型的提出:MIT(麻省理工學(xué)院),60年代初期進(jìn)程的概念進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程控制塊(ProcessControlBlock)2進(jìn)程模型的提出:MIT(麻省理工學(xué)院),60年代初期2一、進(jìn)程的概念1、進(jìn)程定義:Process進(jìn)程是具有獨(dú)立功能的程序在某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。3一、進(jìn)程的概念1、進(jìn)程定義:Process3此定義包含有如下的含義:(1)進(jìn)程是一個(gè)動(dòng)態(tài)的概念,而程序是靜態(tài)的;(2)進(jìn)程包含了一個(gè)數(shù)據(jù)集合和運(yùn)行其上的程序;(3)同一程序運(yùn)行于若干不同的數(shù)據(jù)集合上時(shí),它將屬于若干個(gè)不同的進(jìn)程,或者說(shuō),兩個(gè)不同的進(jìn)程可包含相同的程序;(4)系統(tǒng)分配資源是以進(jìn)程為單位的,所以只有進(jìn)程才可能在不同的時(shí)刻處于幾種不同的狀態(tài),即等待、就緒、運(yùn)行。(5)從微觀上看,進(jìn)程是輪換地占有處理機(jī)而運(yùn)行的,從宏觀上看,進(jìn)程是并發(fā)地運(yùn)行的。對(duì)進(jìn)程定義的進(jìn)一步分析4此定義包含有如下的含義:對(duì)進(jìn)程定義的進(jìn)一步分析42、進(jìn)程的構(gòu)成進(jìn)程=PCB+程序+數(shù)據(jù)其中,PCB(processcontrolblock)為記錄程序在并發(fā)系統(tǒng)中執(zhí)行時(shí)的動(dòng)態(tài)特性的數(shù)據(jù)結(jié)構(gòu)。進(jìn)程的這三部分構(gòu)成進(jìn)程在系統(tǒng)中存在和活動(dòng)實(shí)體,稱(chēng)為--“進(jìn)程映象”or“進(jìn)程實(shí)體”。52、進(jìn)程的構(gòu)成5并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起向前推進(jìn)動(dòng)態(tài)性:進(jìn)程對(duì)應(yīng)程序的執(zhí)行;進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的;進(jìn)程在其生命周期內(nèi),在三種基本狀態(tài)之間轉(zhuǎn)換獨(dú)立性:進(jìn)程是CPU調(diào)度的一個(gè)獨(dú)立單位異步性:每個(gè)進(jìn)程都與其相對(duì)獨(dú)立的不可預(yù)知的速度向前推進(jìn)結(jié)構(gòu)性:進(jìn)程的組成:程序+數(shù)據(jù)+PCB3、進(jìn)程的特征6并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起向前推進(jìn)3、進(jìn)程的特征6進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序的執(zhí)行。通常進(jìn)程不可在計(jì)算機(jī)之間遷移;而程序通常對(duì)應(yīng)著文件、靜態(tài)和可以復(fù)制。進(jìn)程是暫時(shí)的,程序的永久的:進(jìn)程是一個(gè)狀態(tài)變化的過(guò)程,程序可長(zhǎng)久保存。進(jìn)程與程序的組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊(即進(jìn)程狀態(tài)信息)。進(jìn)程與程序的對(duì)應(yīng)關(guān)系:通過(guò)多次執(zhí)行,一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程;通過(guò)調(diào)用關(guān)系,一個(gè)進(jìn)程可包括多個(gè)程序。4、程序與進(jìn)程之間的區(qū)別7進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序系統(tǒng)進(jìn)程系統(tǒng)進(jìn)程起著資源管理和控制的作用?;蛘撸簣?zhí)行操作系統(tǒng)核心代碼的進(jìn)程。用戶(hù)進(jìn)程:執(zhí)行用戶(hù)程序的進(jìn)程。(系統(tǒng)進(jìn)程優(yōu)先于用戶(hù)進(jìn)程)另一種分類(lèi):計(jì)算進(jìn)程,I/O進(jìn)程等。5、進(jìn)程的分類(lèi)8系統(tǒng)進(jìn)程5、進(jìn)程的分類(lèi)81、系統(tǒng)進(jìn)程被分配一個(gè)初始的資源集合,這些資源可以為它獨(dú)占,也能以最高優(yōu)先權(quán)的資格使用。用戶(hù)進(jìn)程通過(guò)系統(tǒng)服務(wù)請(qǐng)求的手段競(jìng)爭(zhēng)使用系統(tǒng)資源;2、用戶(hù)進(jìn)程不能直接做I/O操作,而系統(tǒng)進(jìn)程可以做顯式的、直接的I/O操作。3、系統(tǒng)進(jìn)程在系統(tǒng)態(tài)(管態(tài))下活動(dòng),而用戶(hù)進(jìn)程則在用戶(hù)態(tài)(目態(tài))下活動(dòng)。(當(dāng)中央處理器處于管態(tài)時(shí),可以執(zhí)行包括特權(quán)指令在內(nèi)的一切面器指令,而在目態(tài)下工作時(shí)不允許執(zhí)行特權(quán)指令。)系統(tǒng)進(jìn)程與用戶(hù)進(jìn)程的區(qū)別91、系統(tǒng)進(jìn)程被分配一個(gè)初始的資源集合,這些資源可以為它獨(dú)占,二、進(jìn)程的狀態(tài)及其轉(zhuǎn)換不同系統(tǒng)設(shè)置的進(jìn)程狀態(tài)數(shù)目不同1、三狀態(tài)模型:

進(jìn)程的三種基本狀態(tài):運(yùn)行狀態(tài)、就緒狀態(tài)、等待(阻塞)狀態(tài)。 進(jìn)程在生命消亡前總是處于且僅處于三種基本狀態(tài)之一。 10二、進(jìn)程的狀態(tài)及其轉(zhuǎn)換不同系統(tǒng)設(shè)置的進(jìn)程狀態(tài)數(shù)目不同10運(yùn)行態(tài)(Running):

當(dāng)進(jìn)程由調(diào)度/分派程序(Dispatcher)分派后,進(jìn)程占有CPU,并在CPU上運(yùn)行。(注意:在系統(tǒng)中,總只有一個(gè)進(jìn)程處于此狀態(tài))就緒態(tài)(Ready):一個(gè)進(jìn)程已經(jīng)具備運(yùn)行條件,但由于無(wú)CPU暫時(shí)不能運(yùn)行的狀態(tài)(當(dāng)調(diào)度給其CPU時(shí),立即可以運(yùn)行)等待態(tài)(Blocked):阻塞態(tài)、掛起態(tài)、封鎖態(tài)凍結(jié)態(tài)、睡眠態(tài)指進(jìn)程因等待某種事件的發(fā)生(請(qǐng)求I/O、申請(qǐng)緩沖空間等)而暫時(shí)不能運(yùn)行的狀態(tài)(注意:即使CPU空閑,該進(jìn)程也不可運(yùn)行)11運(yùn)行態(tài)(Running):11在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變化,這三種基本狀態(tài)可以依據(jù)一定的條件相互轉(zhuǎn)換

就緒—運(yùn)行

運(yùn)行—就緒

運(yùn)行—等待

等待—就緒運(yùn)行就緒等待進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程狀態(tài)轉(zhuǎn)換:12在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變就緒-->運(yùn)行調(diào)度程序選擇一個(gè)新的進(jìn)程運(yùn)行運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時(shí)間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級(jí)進(jìn)程處于就緒狀態(tài)運(yùn)行-->等待當(dāng)一進(jìn)程必須等待時(shí)OS尚未完成服務(wù)對(duì)一資源的訪問(wèn)尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)等待-->就緒當(dāng)所等待的事件發(fā)生時(shí)13就緒-->運(yùn)行13進(jìn)程三狀態(tài)模型的內(nèi)存跟蹤示意圖14進(jìn)程三狀態(tài)模型的內(nèi)存跟蹤示意圖14進(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是可逆的,進(jìn)程既不能從等待變?yōu)檫\(yùn)行,也不能從就緒變?yōu)榈却贿M(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是主動(dòng)的,在很多情況下是“它動(dòng)的”,事實(shí)上,只有運(yùn)行到等待的轉(zhuǎn)換是進(jìn)程的主動(dòng)行為(主動(dòng)調(diào)用調(diào)度管理程序),其它都是它動(dòng)的,如,從執(zhí)行到就緒,通常是時(shí)鐘中斷引起的,從等待到就緒,是一個(gè)進(jìn)程把另一個(gè)進(jìn)程喚醒。進(jìn)程三狀態(tài)轉(zhuǎn)換的再說(shuō)明15進(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是可逆的,進(jìn)程既不能從等待變?yōu)檫\(yùn)行,當(dāng)然,除某些比較特殊的進(jìn)程以外,大多數(shù)進(jìn)程有其發(fā)生、發(fā)展和消亡的過(guò)程,不會(huì)無(wú)休止地在上述三種狀態(tài)中循環(huán)。對(duì)這些進(jìn)程而言,還應(yīng)該有其它狀態(tài),如:

創(chuàng)建狀態(tài),終止?fàn)顟B(tài)掛起狀態(tài)(調(diào)節(jié)負(fù)載,父進(jìn)程,操作系統(tǒng),終端用戶(hù))其他狀態(tài)16當(dāng)然,除某些比較特殊的進(jìn)程以外,大多數(shù)進(jìn)程有其發(fā)生、發(fā)展和消引入了創(chuàng)建狀態(tài)與終止?fàn)顟B(tài)創(chuàng)建(新new)狀態(tài)OS已完成為創(chuàng)建一進(jìn)程所必要的工作(包括已構(gòu)造了進(jìn)程標(biāo)識(shí)符,已創(chuàng)建了管理進(jìn)程所需的表格),但還沒(méi)有允許執(zhí)行該進(jìn)程(尚未同意),因?yàn)橘Y源有限終止(退出exit)狀態(tài)進(jìn)程已結(jié)束運(yùn)行,回收除PCB之外的其他資源,并讓其他進(jìn)程從PCB中收集有關(guān)信息例:為處理用戶(hù)帳單而累計(jì)資源使用情況的財(cái)務(wù)程序,當(dāng)數(shù)據(jù)不再需要后,進(jìn)程(和它的表格)被刪除2、五狀態(tài)模型17引入了創(chuàng)建狀態(tài)與終止?fàn)顟B(tài)2、五狀態(tài)模型17五狀態(tài)進(jìn)程模型圖18五狀態(tài)進(jìn)程模型圖18收容(Admit,也稱(chēng)為提交):收容一個(gè)新進(jìn)程,進(jìn)入就緒狀態(tài)。由于性能、內(nèi)存、進(jìn)程總數(shù)等原因,系統(tǒng)會(huì)限制并發(fā)進(jìn)程總數(shù)。釋放(Release):由于進(jìn)程完成或失敗而中止進(jìn)程運(yùn)行,進(jìn)入結(jié)束狀態(tài);運(yùn)行到結(jié)束:分為正常退出Exit和異常退出abort(執(zhí)行超時(shí)或內(nèi)存不夠,非法指令或地址,I/O失敗,被其他進(jìn)程所終止)就緒或阻塞到結(jié)束:可能的原因有:父進(jìn)程可在任何時(shí)間中止子進(jìn)程;19收容(Admit,也稱(chēng)為提交):收容一個(gè)新進(jìn)程,進(jìn)入就緒狀該模型的出現(xiàn)是由于某些原因?qū)е逻M(jìn)程被對(duì)換至外存,成為掛起狀態(tài)。包括:終端用戶(hù)的需要:調(diào)試父進(jìn)程請(qǐng)求:負(fù)荷調(diào)節(jié)的需要:內(nèi)存等資源緊張OS的需要:檢查資源使用情況等(如銀行家算法)3、七狀態(tài)模型(引入掛起狀態(tài))20該模型的出現(xiàn)是由于某些原因?qū)е逻M(jìn)程被對(duì)換至外存,成為狀態(tài):就緒狀態(tài)(Ready):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行態(tài);阻塞狀態(tài)(Blocked):進(jìn)程在內(nèi)存等待某事件出現(xiàn)阻塞掛起狀態(tài)(Blockedsuspend):進(jìn)程在外存并等待某事件的出現(xiàn)就緒掛起狀態(tài)(Readysuspend):進(jìn)程在外存,但只要進(jìn)入內(nèi)存,即可運(yùn)行21狀態(tài):21七狀態(tài)進(jìn)程模型圖活動(dòng)掛起事件發(fā)生事件發(fā)生等待事件掛起調(diào)度超時(shí)釋放活動(dòng)掛起22七狀態(tài)進(jìn)程模型圖活動(dòng)掛起事件事件等待掛起調(diào)度超時(shí)釋放活動(dòng)掛起1)掛起(Suspend):把進(jìn)程從內(nèi)存轉(zhuǎn)到外存,可能有以下幾種情況:阻塞到阻塞掛起:釋放內(nèi)存;就緒到就緒掛起:釋放內(nèi)存;運(yùn)行到就緒掛起:對(duì)搶先式分時(shí)系統(tǒng),當(dāng)有高優(yōu)先級(jí)阻塞掛起進(jìn)程因事件完成而進(jìn)入就緒時(shí),系統(tǒng)可能會(huì)把運(yùn)行進(jìn)程轉(zhuǎn)到就緒掛起狀態(tài);新?tīng)顟B(tài)轉(zhuǎn)換(中期調(diào)度)231)掛起(Suspend):把進(jìn)程從內(nèi)存轉(zhuǎn)到外存,可能有以下2)激活(Activate):把進(jìn)程從外存轉(zhuǎn)到內(nèi)存,可能有以下幾種情況:就緒掛起到就緒:沒(méi)有就緒進(jìn)程或掛起就緒進(jìn)程優(yōu)先級(jí)高于就緒進(jìn)程時(shí),會(huì)進(jìn)行這種轉(zhuǎn)換;阻塞掛起到阻塞:當(dāng)BlockedSuspend隊(duì)列中有一個(gè)進(jìn)程的阻塞事件可能會(huì)很快發(fā)生,則可將一個(gè)Blocked/Suspend進(jìn)程換入內(nèi)存,變?yōu)锽locked242)激活(Activate):把進(jìn)程從外存轉(zhuǎn)到內(nèi)存,可能有以三、進(jìn)程控制塊

ProcessControlBlock,PCB1、def: 存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱(chēng)為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時(shí),建立PCB,并伴隨進(jìn)程運(yùn)行的全過(guò)程,直到進(jìn)程撤消而撤消;PCB就象我們的戶(hù)口;系統(tǒng)用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程;進(jìn)程控制塊是由OS維護(hù)的用來(lái)記錄進(jìn)程相關(guān)信息的一塊內(nèi)存。25三、進(jìn)程控制塊

ProcessControlBlock, 系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。 進(jìn)程的狀態(tài)轉(zhuǎn)換、進(jìn)程的推進(jìn)也是以PCB體現(xiàn)出來(lái)的。2、作用26 系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存注意:進(jìn)程與PCB是一一對(duì)應(yīng)的是每個(gè)進(jìn)程在OS中的登記表項(xiàng)(可能有總數(shù)目限制),OS據(jù)此對(duì)進(jìn)程進(jìn)行控制和管理(PCB中的內(nèi)容會(huì)動(dòng)態(tài)改變),不同OS則不同處于核心段,通常不能由應(yīng)用程序自身的代碼來(lái)直接訪問(wèn),而要通過(guò)系統(tǒng)調(diào)用,或通過(guò)UNIX中的進(jìn)程文件系統(tǒng)(/proc)直接訪問(wèn)進(jìn)程映象(image)。文件名為進(jìn)程標(biāo)識(shí)(如:00316),權(quán)限為創(chuàng)建者可讀寫(xiě)。27注意:27進(jìn)程描述信息:進(jìn)程標(biāo)識(shí)符(processID):唯一,通常是一個(gè)整數(shù);(1)內(nèi)部標(biāo)識(shí)符。在所有的操作系統(tǒng)中,都為每一個(gè)進(jìn)程賦予了一個(gè)惟一的數(shù)字標(biāo)識(shí)符,它通常是一個(gè)進(jìn)程的序號(hào)。設(shè)置內(nèi)部標(biāo)識(shí)符主要是為了方便系統(tǒng)使用。(2)外部標(biāo)識(shí)符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(hù)(進(jìn)程)在訪問(wèn)該進(jìn)程時(shí)使用。為了描述進(jìn)程的家族關(guān)系,還應(yīng)設(shè)置父進(jìn)程標(biāo)識(shí)及子進(jìn)程標(biāo)識(shí)。此外,還可設(shè)置用戶(hù)標(biāo)識(shí),以指示擁有該進(jìn)程的用戶(hù)。3、PCB的內(nèi)容28進(jìn)程描述信息:3、PCB的內(nèi)容282)處理機(jī)狀態(tài)處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。處理機(jī)在運(yùn)行時(shí),許多信息都放在寄存器中。當(dāng)處理機(jī)被中斷時(shí),所有這些信息都必須保存在PCB中,以便在該進(jìn)程重新執(zhí)行時(shí),能從斷點(diǎn)繼續(xù)執(zhí)行。這些寄存器包括:①

通用寄存器,又稱(chēng)為用戶(hù)可視寄存器,它們是用戶(hù)程序可以訪問(wèn)的,用于暫存信息,在大多數(shù)處理機(jī)中,有8~32個(gè)通用寄存器,在RISC結(jié)構(gòu)的計(jì)算機(jī)中可超過(guò)100個(gè);②

指令計(jì)數(shù)器,其中存放了要訪問(wèn)的下一條指令的地址;③

程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼、執(zhí)行方式、中斷屏蔽標(biāo)志等;④

用戶(hù)棧指針,指每個(gè)用戶(hù)進(jìn)程都有一個(gè)或若干個(gè)與之相關(guān)的系統(tǒng)棧,用于存放過(guò)程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址,棧指針指向該棧的棧頂。

292)處理機(jī)狀態(tài)293)進(jìn)程調(diào)度信息在PCB中還存放一些與進(jìn)程調(diào)度和進(jìn)程對(duì)換有關(guān)的信息,包括:①

進(jìn)程狀態(tài),指明進(jìn)程的當(dāng)前狀態(tài),作為進(jìn)程調(diào)度和對(duì)換時(shí)的依據(jù);②

進(jìn)程優(yōu)先級(jí),用于描述進(jìn)程使用處理機(jī)的優(yōu)先級(jí)別的一個(gè)整數(shù),優(yōu)先級(jí)高的進(jìn)程應(yīng)優(yōu)先獲得處理機(jī);③

進(jìn)程調(diào)度所需的其它信息,它們與所采用的進(jìn)程調(diào)度算法有關(guān),比如,進(jìn)程已等待CPU的時(shí)間總和、進(jìn)程已執(zhí)行的時(shí)間總和等;④

事件,指進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的事件,即阻塞原因。

303)進(jìn)程調(diào)度信息304)進(jìn)程控制信息進(jìn)程控制信息包括:①

程序和數(shù)據(jù)的地址,指進(jìn)程的程序和數(shù)據(jù)所在的內(nèi)存或外存地(首)址,以便再調(diào)度到該進(jìn)程執(zhí)行時(shí),能從PCB中找到其程序和數(shù)據(jù);②

進(jìn)程同步和通信機(jī)制,指實(shí)現(xiàn)進(jìn)程同步和進(jìn)程通信時(shí)必需的機(jī)制,如消息隊(duì)列指針、信號(hào)量等,它們可能全部或部分地放在PCB中;③

資源清單,即一張列出了除CPU以外的、進(jìn)程所需的全部資源及已經(jīng)分配到該進(jìn)程的資源的清單;④

鏈接指針,它給出了本進(jìn)程(PCB)所在隊(duì)列中的下一個(gè)進(jìn)程的PCB的首地址。

314)進(jìn)程控制信息31系統(tǒng)把所有PCB組織在一起,并把它們放在內(nèi)存的固定區(qū)域,就構(gòu)成了PCB表PCB表的大小決定了系統(tǒng)中最多可同時(shí)存在的進(jìn)程個(gè)數(shù),稱(chēng)為系統(tǒng)的并發(fā)度(注:多道程序中的多道與系統(tǒng)并發(fā)度的區(qū)別)PCB的組織方式:鏈表方式;索引表方式4、PCB表32系統(tǒng)把所有PCB組織在一起,并把它們放在內(nèi)存的固定區(qū)域,就構(gòu)鏈表方式:同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不同的鏈表:就緒鏈表、阻塞鏈表33鏈表方式:同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不索引表(常用方式):建立幾個(gè)索引表(indextable),記載相應(yīng)狀態(tài)進(jìn)程的PCB,將狀態(tài)相同的進(jìn)程的PCB組織在同一表中,每個(gè)索引表的表目中存放該P(yáng)CB的地址。各索引表在內(nèi)存中的起始地址放在專(zhuān)用的指針單元中。CPU的調(diào)度根據(jù)相應(yīng)的索引表進(jìn)行的。各狀態(tài)的進(jìn)行形成不同的索引表:就緒索引表、阻塞索引表PCBTableIndexTableReadyBlocked34索引表(常用方式):建立幾個(gè)索引表(indextable)第二節(jié)進(jìn)程基本概念 上面所列的多道系統(tǒng)中的程序并發(fā)運(yùn)行的新特點(diǎn),程序本身是無(wú)法描述的,為此,當(dāng)一個(gè)程序在并發(fā)系統(tǒng)中執(zhí)行時(shí),需引進(jìn)一個(gè)新的數(shù)據(jù)結(jié)構(gòu)來(lái)記錄和描述這些特征。這樣,新引進(jìn)的數(shù)據(jù)結(jié)構(gòu)與它所描述的程序便形成了一個(gè)有機(jī)體。這個(gè)有機(jī)體就是進(jìn)程。35第二節(jié)進(jìn)程基本概念 上面所列的多道系統(tǒng)中的程進(jìn)程模型的提出:MIT(麻省理工學(xué)院),60年代初期進(jìn)程的概念進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程控制塊(ProcessControlBlock)36進(jìn)程模型的提出:MIT(麻省理工學(xué)院),60年代初期2一、進(jìn)程的概念1、進(jìn)程定義:Process進(jìn)程是具有獨(dú)立功能的程序在某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。37一、進(jìn)程的概念1、進(jìn)程定義:Process3此定義包含有如下的含義:(1)進(jìn)程是一個(gè)動(dòng)態(tài)的概念,而程序是靜態(tài)的;(2)進(jìn)程包含了一個(gè)數(shù)據(jù)集合和運(yùn)行其上的程序;(3)同一程序運(yùn)行于若干不同的數(shù)據(jù)集合上時(shí),它將屬于若干個(gè)不同的進(jìn)程,或者說(shuō),兩個(gè)不同的進(jìn)程可包含相同的程序;(4)系統(tǒng)分配資源是以進(jìn)程為單位的,所以只有進(jìn)程才可能在不同的時(shí)刻處于幾種不同的狀態(tài),即等待、就緒、運(yùn)行。(5)從微觀上看,進(jìn)程是輪換地占有處理機(jī)而運(yùn)行的,從宏觀上看,進(jìn)程是并發(fā)地運(yùn)行的。對(duì)進(jìn)程定義的進(jìn)一步分析38此定義包含有如下的含義:對(duì)進(jìn)程定義的進(jìn)一步分析42、進(jìn)程的構(gòu)成進(jìn)程=PCB+程序+數(shù)據(jù)其中,PCB(processcontrolblock)為記錄程序在并發(fā)系統(tǒng)中執(zhí)行時(shí)的動(dòng)態(tài)特性的數(shù)據(jù)結(jié)構(gòu)。進(jìn)程的這三部分構(gòu)成進(jìn)程在系統(tǒng)中存在和活動(dòng)實(shí)體,稱(chēng)為--“進(jìn)程映象”or“進(jìn)程實(shí)體”。392、進(jìn)程的構(gòu)成5并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起向前推進(jìn)動(dòng)態(tài)性:進(jìn)程對(duì)應(yīng)程序的執(zhí)行;進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的;進(jìn)程在其生命周期內(nèi),在三種基本狀態(tài)之間轉(zhuǎn)換獨(dú)立性:進(jìn)程是CPU調(diào)度的一個(gè)獨(dú)立單位異步性:每個(gè)進(jìn)程都與其相對(duì)獨(dú)立的不可預(yù)知的速度向前推進(jìn)結(jié)構(gòu)性:進(jìn)程的組成:程序+數(shù)據(jù)+PCB3、進(jìn)程的特征40并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起向前推進(jìn)3、進(jìn)程的特征6進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序的執(zhí)行。通常進(jìn)程不可在計(jì)算機(jī)之間遷移;而程序通常對(duì)應(yīng)著文件、靜態(tài)和可以復(fù)制。進(jìn)程是暫時(shí)的,程序的永久的:進(jìn)程是一個(gè)狀態(tài)變化的過(guò)程,程序可長(zhǎng)久保存。進(jìn)程與程序的組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊(即進(jìn)程狀態(tài)信息)。進(jìn)程與程序的對(duì)應(yīng)關(guān)系:通過(guò)多次執(zhí)行,一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程;通過(guò)調(diào)用關(guān)系,一個(gè)進(jìn)程可包括多個(gè)程序。4、程序與進(jìn)程之間的區(qū)別41進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序系統(tǒng)進(jìn)程系統(tǒng)進(jìn)程起著資源管理和控制的作用?;蛘撸簣?zhí)行操作系統(tǒng)核心代碼的進(jìn)程。用戶(hù)進(jìn)程:執(zhí)行用戶(hù)程序的進(jìn)程。(系統(tǒng)進(jìn)程優(yōu)先于用戶(hù)進(jìn)程)另一種分類(lèi):計(jì)算進(jìn)程,I/O進(jìn)程等。5、進(jìn)程的分類(lèi)42系統(tǒng)進(jìn)程5、進(jìn)程的分類(lèi)81、系統(tǒng)進(jìn)程被分配一個(gè)初始的資源集合,這些資源可以為它獨(dú)占,也能以最高優(yōu)先權(quán)的資格使用。用戶(hù)進(jìn)程通過(guò)系統(tǒng)服務(wù)請(qǐng)求的手段競(jìng)爭(zhēng)使用系統(tǒng)資源;2、用戶(hù)進(jìn)程不能直接做I/O操作,而系統(tǒng)進(jìn)程可以做顯式的、直接的I/O操作。3、系統(tǒng)進(jìn)程在系統(tǒng)態(tài)(管態(tài))下活動(dòng),而用戶(hù)進(jìn)程則在用戶(hù)態(tài)(目態(tài))下活動(dòng)。(當(dāng)中央處理器處于管態(tài)時(shí),可以執(zhí)行包括特權(quán)指令在內(nèi)的一切面器指令,而在目態(tài)下工作時(shí)不允許執(zhí)行特權(quán)指令。)系統(tǒng)進(jìn)程與用戶(hù)進(jìn)程的區(qū)別431、系統(tǒng)進(jìn)程被分配一個(gè)初始的資源集合,這些資源可以為它獨(dú)占,二、進(jìn)程的狀態(tài)及其轉(zhuǎn)換不同系統(tǒng)設(shè)置的進(jìn)程狀態(tài)數(shù)目不同1、三狀態(tài)模型:

進(jìn)程的三種基本狀態(tài):運(yùn)行狀態(tài)、就緒狀態(tài)、等待(阻塞)狀態(tài)。 進(jìn)程在生命消亡前總是處于且僅處于三種基本狀態(tài)之一。 44二、進(jìn)程的狀態(tài)及其轉(zhuǎn)換不同系統(tǒng)設(shè)置的進(jìn)程狀態(tài)數(shù)目不同10運(yùn)行態(tài)(Running):

當(dāng)進(jìn)程由調(diào)度/分派程序(Dispatcher)分派后,進(jìn)程占有CPU,并在CPU上運(yùn)行。(注意:在系統(tǒng)中,總只有一個(gè)進(jìn)程處于此狀態(tài))就緒態(tài)(Ready):一個(gè)進(jìn)程已經(jīng)具備運(yùn)行條件,但由于無(wú)CPU暫時(shí)不能運(yùn)行的狀態(tài)(當(dāng)調(diào)度給其CPU時(shí),立即可以運(yùn)行)等待態(tài)(Blocked):阻塞態(tài)、掛起態(tài)、封鎖態(tài)凍結(jié)態(tài)、睡眠態(tài)指進(jìn)程因等待某種事件的發(fā)生(請(qǐng)求I/O、申請(qǐng)緩沖空間等)而暫時(shí)不能運(yùn)行的狀態(tài)(注意:即使CPU空閑,該進(jìn)程也不可運(yùn)行)45運(yùn)行態(tài)(Running):11在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變化,這三種基本狀態(tài)可以依據(jù)一定的條件相互轉(zhuǎn)換

就緒—運(yùn)行

運(yùn)行—就緒

運(yùn)行—等待

等待—就緒運(yùn)行就緒等待進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程狀態(tài)轉(zhuǎn)換:46在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變就緒-->運(yùn)行調(diào)度程序選擇一個(gè)新的進(jìn)程運(yùn)行運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時(shí)間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級(jí)進(jìn)程處于就緒狀態(tài)運(yùn)行-->等待當(dāng)一進(jìn)程必須等待時(shí)OS尚未完成服務(wù)對(duì)一資源的訪問(wèn)尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)等待-->就緒當(dāng)所等待的事件發(fā)生時(shí)47就緒-->運(yùn)行13進(jìn)程三狀態(tài)模型的內(nèi)存跟蹤示意圖48進(jìn)程三狀態(tài)模型的內(nèi)存跟蹤示意圖14進(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是可逆的,進(jìn)程既不能從等待變?yōu)檫\(yùn)行,也不能從就緒變?yōu)榈却?;進(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是主動(dòng)的,在很多情況下是“它動(dòng)的”,事實(shí)上,只有運(yùn)行到等待的轉(zhuǎn)換是進(jìn)程的主動(dòng)行為(主動(dòng)調(diào)用調(diào)度管理程序),其它都是它動(dòng)的,如,從執(zhí)行到就緒,通常是時(shí)鐘中斷引起的,從等待到就緒,是一個(gè)進(jìn)程把另一個(gè)進(jìn)程喚醒。進(jìn)程三狀態(tài)轉(zhuǎn)換的再說(shuō)明49進(jìn)程之間的狀態(tài)轉(zhuǎn)換并非都是可逆的,進(jìn)程既不能從等待變?yōu)檫\(yùn)行,當(dāng)然,除某些比較特殊的進(jìn)程以外,大多數(shù)進(jìn)程有其發(fā)生、發(fā)展和消亡的過(guò)程,不會(huì)無(wú)休止地在上述三種狀態(tài)中循環(huán)。對(duì)這些進(jìn)程而言,還應(yīng)該有其它狀態(tài),如:

創(chuàng)建狀態(tài),終止?fàn)顟B(tài)掛起狀態(tài)(調(diào)節(jié)負(fù)載,父進(jìn)程,操作系統(tǒng),終端用戶(hù))其他狀態(tài)50當(dāng)然,除某些比較特殊的進(jìn)程以外,大多數(shù)進(jìn)程有其發(fā)生、發(fā)展和消引入了創(chuàng)建狀態(tài)與終止?fàn)顟B(tài)創(chuàng)建(新new)狀態(tài)OS已完成為創(chuàng)建一進(jìn)程所必要的工作(包括已構(gòu)造了進(jìn)程標(biāo)識(shí)符,已創(chuàng)建了管理進(jìn)程所需的表格),但還沒(méi)有允許執(zhí)行該進(jìn)程(尚未同意),因?yàn)橘Y源有限終止(退出exit)狀態(tài)進(jìn)程已結(jié)束運(yùn)行,回收除PCB之外的其他資源,并讓其他進(jìn)程從PCB中收集有關(guān)信息例:為處理用戶(hù)帳單而累計(jì)資源使用情況的財(cái)務(wù)程序,當(dāng)數(shù)據(jù)不再需要后,進(jìn)程(和它的表格)被刪除2、五狀態(tài)模型51引入了創(chuàng)建狀態(tài)與終止?fàn)顟B(tài)2、五狀態(tài)模型17五狀態(tài)進(jìn)程模型圖52五狀態(tài)進(jìn)程模型圖18收容(Admit,也稱(chēng)為提交):收容一個(gè)新進(jìn)程,進(jìn)入就緒狀態(tài)。由于性能、內(nèi)存、進(jìn)程總數(shù)等原因,系統(tǒng)會(huì)限制并發(fā)進(jìn)程總數(shù)。釋放(Release):由于進(jìn)程完成或失敗而中止進(jìn)程運(yùn)行,進(jìn)入結(jié)束狀態(tài);運(yùn)行到結(jié)束:分為正常退出Exit和異常退出abort(執(zhí)行超時(shí)或內(nèi)存不夠,非法指令或地址,I/O失敗,被其他進(jìn)程所終止)就緒或阻塞到結(jié)束:可能的原因有:父進(jìn)程可在任何時(shí)間中止子進(jìn)程;53收容(Admit,也稱(chēng)為提交):收容一個(gè)新進(jìn)程,進(jìn)入就緒狀該模型的出現(xiàn)是由于某些原因?qū)е逻M(jìn)程被對(duì)換至外存,成為掛起狀態(tài)。包括:終端用戶(hù)的需要:調(diào)試父進(jìn)程請(qǐng)求:負(fù)荷調(diào)節(jié)的需要:內(nèi)存等資源緊張OS的需要:檢查資源使用情況等(如銀行家算法)3、七狀態(tài)模型(引入掛起狀態(tài))54該模型的出現(xiàn)是由于某些原因?qū)е逻M(jìn)程被對(duì)換至外存,成為狀態(tài):就緒狀態(tài)(Ready):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行態(tài);阻塞狀態(tài)(Blocked):進(jìn)程在內(nèi)存等待某事件出現(xiàn)阻塞掛起狀態(tài)(Blockedsuspend):進(jìn)程在外存并等待某事件的出現(xiàn)就緒掛起狀態(tài)(Readysuspend):進(jìn)程在外存,但只要進(jìn)入內(nèi)存,即可運(yùn)行55狀態(tài):21七狀態(tài)進(jìn)程模型圖活動(dòng)掛起事件發(fā)生事件發(fā)生等待事件掛起調(diào)度超時(shí)釋放活動(dòng)掛起56七狀態(tài)進(jìn)程模型圖活動(dòng)掛起事件事件等待掛起調(diào)度超時(shí)釋放活動(dòng)掛起1)掛起(Suspend):把進(jìn)程從內(nèi)存轉(zhuǎn)到外存,可能有以下幾種情況:阻塞到阻塞掛起:釋放內(nèi)存;就緒到就緒掛起:釋放內(nèi)存;運(yùn)行到就緒掛起:對(duì)搶先式分時(shí)系統(tǒng),當(dāng)有高優(yōu)先級(jí)阻塞掛起進(jìn)程因事件完成而進(jìn)入就緒時(shí),系統(tǒng)可能會(huì)把運(yùn)行進(jìn)程轉(zhuǎn)到就緒掛起狀態(tài);新?tīng)顟B(tài)轉(zhuǎn)換(中期調(diào)度)571)掛起(Suspend):把進(jìn)程從內(nèi)存轉(zhuǎn)到外存,可能有以下2)激活(Activate):把進(jìn)程從外存轉(zhuǎn)到內(nèi)存,可能有以下幾種情況:就緒掛起到就緒:沒(méi)有就緒進(jìn)程或掛起就緒進(jìn)程優(yōu)先級(jí)高于就緒進(jìn)程時(shí),會(huì)進(jìn)行這種轉(zhuǎn)換;阻塞掛起到阻塞:當(dāng)BlockedSuspend隊(duì)列中有一個(gè)進(jìn)程的阻塞事件可能會(huì)很快發(fā)生,則可將一個(gè)Blocked/Suspend進(jìn)程換入內(nèi)存,變?yōu)锽locked582)激活(Activate):把進(jìn)程從外存轉(zhuǎn)到內(nèi)存,可能有以三、進(jìn)程控制塊

ProcessControlBlock,PCB1、def: 存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱(chēng)為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時(shí),建立PCB,并伴隨進(jìn)程運(yùn)行的全過(guò)程,直到進(jìn)程撤消而撤消;PCB就象我們的戶(hù)口;系統(tǒng)用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程;進(jìn)程控制塊是由OS維護(hù)的用來(lái)記錄進(jìn)程相關(guān)信息的一塊內(nèi)存。59三、進(jìn)程控制塊

ProcessControlBlock, 系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。 進(jìn)程的狀態(tài)轉(zhuǎn)換、進(jìn)程的推進(jìn)也是以PCB體現(xiàn)出來(lái)的。2、作用60 系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,所以PCB是系統(tǒng)感知進(jìn)程存注意:進(jìn)程與PCB是一一對(duì)應(yīng)的是每個(gè)進(jìn)程在OS中的登記表項(xiàng)(可能有總數(shù)目限制),OS據(jù)此對(duì)進(jìn)程進(jìn)行控制和管理(PCB中的內(nèi)容會(huì)動(dòng)態(tài)改變),不同OS則不同處于核心段,通常不能由應(yīng)用程序自身的代碼來(lái)直接訪問(wèn),而要通過(guò)系統(tǒng)調(diào)用,或通過(guò)UNIX中的進(jìn)程文件系統(tǒng)(/proc)直接訪問(wèn)進(jìn)程映象(image)。文件名為進(jìn)程標(biāo)識(shí)(如:00316),權(quán)限為創(chuàng)建者可讀寫(xiě)。61注意:27進(jìn)程描述信息:進(jìn)程標(biāo)識(shí)符(processID):唯一,通常是一個(gè)整數(shù);(1)內(nèi)部標(biāo)識(shí)符。在所有的操作系統(tǒng)中,都為每一個(gè)進(jìn)程賦予了一個(gè)惟一的數(shù)字標(biāo)識(shí)符,它通常是一個(gè)進(jìn)程的序號(hào)。設(shè)置內(nèi)部標(biāo)識(shí)符主要是為了方便系統(tǒng)使用。(2)外部標(biāo)識(shí)符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(hù)(進(jìn)程)在訪問(wèn)該進(jìn)程時(shí)使用。為了描述進(jìn)程的家族關(guān)系,還應(yīng)設(shè)置父進(jìn)程標(biāo)識(shí)及子進(jìn)程標(biāo)識(shí)。此外,還可設(shè)置用戶(hù)標(biāo)識(shí),以指示擁有該進(jìn)程的用戶(hù)。3、PCB的內(nèi)容62進(jìn)程描述信息:3、PCB的內(nèi)容282)處理機(jī)狀態(tài)處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。處理機(jī)在運(yùn)行時(shí),許多信息都放在寄存器中。當(dāng)處理機(jī)被中斷時(shí),所有這些信息都必須保存在PCB中,以便在該進(jìn)程重新執(zhí)行時(shí),能從斷點(diǎn)繼續(xù)執(zhí)行。這些寄存器包括:①

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論