版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章進(jìn)程管理掌握多道程序系統(tǒng)的特點(diǎn)進(jìn)程的引入和定義進(jìn)程的狀態(tài)及狀態(tài)變遷進(jìn)程的描述:PCB了解進(jìn)程的控制第三章進(jìn)程管理掌握11、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重要的概念。它是在多道程序系統(tǒng)出現(xiàn)以后,為了刻畫(huà)系統(tǒng)內(nèi)部出現(xiàn)的情況,描述系統(tǒng)內(nèi)部各作業(yè)的活動(dòng)規(guī)律而引進(jìn)的一個(gè)新概念,它是對(duì)程序的抽象。1、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重2多道程序系統(tǒng)的特點(diǎn)并行性在主存中同時(shí)存放多道作業(yè),充分利用系統(tǒng)資源。制約性各程序同時(shí)存在于主存,可能因?yàn)楦?jìng)爭(zhēng)同一資源(如處理器、外部設(shè)備)而相互制約。動(dòng)態(tài)性各程序在系統(tǒng)中所處的狀態(tài)在不變化。多道程序系統(tǒng)的特點(diǎn)并行性32、進(jìn)程的概念定義:Process進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。它對(duì)應(yīng)處理機(jī)、存儲(chǔ)器和外設(shè)等資源的分配和回收;引入多進(jìn)程,提高了對(duì)硬件資源的利用率,但又帶來(lái)額外的空間和時(shí)間開(kāi)銷(xiāo),增加了OS的復(fù)雜性;2、進(jìn)程的概念定義:Process4進(jìn)程與程序的區(qū)別進(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è)程序。進(jìn)程與程序的區(qū)別進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的5進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)。并發(fā)和異步特性會(huì)導(dǎo)致程序執(zhí)行的不可再現(xiàn)性。制約性:并發(fā)進(jìn)程之間存在著制約性,在進(jìn)行的關(guān)鍵點(diǎn)上需要相互等待或互通消息。動(dòng)態(tài)性:進(jìn)程是程序在數(shù)據(jù)集合上的一次執(zhí)行過(guò)程,是動(dòng)態(tài)概念;而程序是一組有序指令序列,是靜態(tài)概念。進(jìn)程有一個(gè)生命過(guò)程:創(chuàng)建、運(yùn)行、等待等。進(jìn)程具有動(dòng)態(tài)的地址空間(數(shù)量和內(nèi)容),地址空間上包括:代碼(指令執(zhí)行和CPU狀態(tài)的改變)數(shù)據(jù)(變量的生成和賦值)系統(tǒng)控制信息(進(jìn)程控制塊的生成和刪除)進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)6進(jìn)程的性質(zhì)結(jié)構(gòu)性:包括數(shù)據(jù)集合和運(yùn)行于其上的程序。代碼段、數(shù)據(jù)段和核心段(在地址空間中);程序文件中通常也劃分了代碼段和數(shù)據(jù)段,而核心段通常就是OS核心(由各個(gè)進(jìn)程共享,包括各進(jìn)程的PCB) 共享性:同一程序同時(shí)運(yùn)行于不同數(shù)據(jù)集合上時(shí),構(gòu)成不同的進(jìn)程。獨(dú)立性:是系統(tǒng)中資源分配和保護(hù)的基本單位,也是系統(tǒng)調(diào)度的獨(dú)立單位(單線程進(jìn)程)。每個(gè)進(jìn)程的地址空間相互獨(dú)立,除非采用進(jìn)程間通信手段;進(jìn)程的性質(zhì)結(jié)構(gòu)性:包括數(shù)據(jù)集合和運(yùn)行于其上的程序。73、進(jìn)程的狀態(tài)運(yùn)行狀態(tài)(Running):進(jìn)程占有CPU,并在CPU上運(yùn)行。處于此狀態(tài)的進(jìn)程的數(shù)目小于等于CPU的數(shù)目。在沒(méi)有其他進(jìn)程可以執(zhí)行時(shí)(如所有進(jìn)程都在阻塞狀態(tài)),通常會(huì)自動(dòng)執(zhí)行系統(tǒng)的idle進(jìn)程(相當(dāng)于空操作)。就緒狀態(tài)(Ready):進(jìn)程已獲得除處理機(jī)外的所需資源,等待分配處理機(jī)資源;只要分配CPU就可執(zhí)行??梢园炊鄠€(gè)優(yōu)先級(jí)來(lái)劃分隊(duì)列,如:時(shí)間片用完->低優(yōu),I/O完成->中優(yōu),頁(yè)面調(diào)入完成->高優(yōu)等待狀態(tài)(Blocked):指進(jìn)程因等待某種事件的發(fā)生而暫時(shí)不能運(yùn)行的狀態(tài)(即使CPU空閑,該進(jìn)程也不可運(yùn)行)。等待的事件可以為:I/O操作或進(jìn)程同步等。
3、進(jìn)程的狀態(tài)運(yùn)行狀態(tài)(Running):進(jìn)程占有CPU,并8進(jìn)程狀態(tài)轉(zhuǎn)換
在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變化,這三種基本狀態(tài)可以依據(jù)一定的條件相互轉(zhuǎn)換。
就緒—運(yùn)行運(yùn)行—就緒
運(yùn)行—等待等待—就緒
進(jìn)程狀態(tài)轉(zhuǎn)換在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情9進(jìn)程的狀態(tài)轉(zhuǎn)換運(yùn)行就緒等待1、就緒—運(yùn)行2、運(yùn)行—就緒3、運(yùn)行—等待4、等待—就緒進(jìn)程的狀態(tài)轉(zhuǎn)換運(yùn)行就緒等待1、就緒—運(yùn)行10進(jìn)程轉(zhuǎn)換就緒-->運(yùn)行調(diào)度:調(diào)度程序選擇一個(gè)新的進(jìn)程運(yùn)行該轉(zhuǎn)換可以由其他轉(zhuǎn)換引起運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時(shí)間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級(jí)進(jìn)程處 于就緒狀態(tài)該轉(zhuǎn)換可以引起其他轉(zhuǎn)換發(fā)生進(jìn)程轉(zhuǎn)換就緒-->運(yùn)行11進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待當(dāng)一進(jìn)程必須等待某事件發(fā)生,OS尚未完成服務(wù)對(duì)一資源的訪問(wèn)尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)可以引起其他轉(zhuǎn)換發(fā)生等待-->就緒當(dāng)所等待的事件發(fā)生時(shí)進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待12因果變遷如果一個(gè)狀態(tài)變遷是由于另一個(gè)狀態(tài)變遷引起的,則這兩個(gè)變遷為因果變遷。思考下列說(shuō)法是否對(duì),為什么?
(1)一個(gè)進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)態(tài),一定會(huì)引起另一個(gè)進(jìn)程從就緒狀態(tài)態(tài)變?yōu)檫\(yùn)行狀態(tài)。(2)一個(gè)進(jìn)程從運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)態(tài),一定會(huì)引起另一進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)。
(3)一個(gè)進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),一定會(huì)引起另一個(gè)進(jìn)程從就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)。因果變遷如果一個(gè)狀態(tài)變遷是由于另一個(gè)狀態(tài)變遷引起的,則這兩個(gè)13三狀態(tài)進(jìn)程模型(單隊(duì)列結(jié)構(gòu))三狀態(tài)進(jìn)程模型(單隊(duì)列結(jié)構(gòu))14進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適應(yīng)系統(tǒng)的功能目標(biāo),許多系統(tǒng)都有“掛起”和“解掛”一個(gè)進(jìn)程的功能,原因在于:系統(tǒng)有時(shí)可能出故障或某些功能受到破壞,需要暫時(shí)將系統(tǒng)中的進(jìn)程掛起,以便故障消除后再恢復(fù)。用戶(hù)在執(zhí)行自己的作業(yè)過(guò)程中,要求掛起他的進(jìn)程,以便進(jìn)行某些檢查和改正。系統(tǒng)中負(fù)載過(guò)重,資源相對(duì)不足,造成系統(tǒng)效率下降,需要掛起一部分進(jìn)程以調(diào)整系統(tǒng)負(fù)荷進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適15具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生掛起解除掛起時(shí)間片完成被調(diào)度掛起時(shí)間發(fā)生掛起解除掛起等待事件1RunningBlockedsBlockedaReadyaReadys4325678910具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生1RunningBlock16狀態(tài)就緒狀態(tài)(Readya):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行狀態(tài);等待狀態(tài)(Blockeda):進(jìn)程在內(nèi)存并等待某事件的出現(xiàn);掛起等待狀態(tài)(Blockeds):進(jìn)程在外存并等待某事件的出現(xiàn);掛起就緒狀態(tài)(Readys):進(jìn)程在外存,但只要進(jìn)入內(nèi)存,即可運(yùn)行;狀態(tài)就緒狀態(tài)(Readya):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行狀態(tài)17轉(zhuǎn)換掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:等待到掛起等待:沒(méi)有進(jìn)程處于就緒狀態(tài)或就緒進(jìn)程要求更多內(nèi)存資源時(shí),會(huì)進(jìn)行這種轉(zhuǎ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)會(huì)選擇掛起低優(yōu)先級(jí)就緒進(jìn)程;運(yùn)行到掛起就緒:對(duì)搶先式分時(shí)系統(tǒng),當(dāng)有高優(yōu)先級(jí)掛起等待進(jìn)程因事件出現(xiàn)而進(jìn)入掛起就緒時(shí),系統(tǒng)可能會(huì)把運(yùn)行進(jìn)程轉(zhuǎn)到掛起就緒狀態(tài);轉(zhuǎn)換掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有18解掛(Activate):把一個(gè)進(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)一個(gè)進(jìn)程釋放足夠內(nèi)存時(shí),系統(tǒng)會(huì)把一個(gè)高優(yōu)先級(jí)掛起等待(系統(tǒng)認(rèn)為會(huì)很快出現(xiàn)所等待的事件)進(jìn)程;解掛(Activate):把一個(gè)進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以194、進(jìn)程的描述進(jìn)程程序塊進(jìn)程數(shù)據(jù)塊系統(tǒng)/用戶(hù)堆棧進(jìn)程控制塊進(jìn)程標(biāo)識(shí)信息進(jìn)程狀態(tài)信息進(jìn)程控制信息用戶(hù)堆棧共享地址空間用戶(hù)私有地址空間(代碼、數(shù)據(jù))進(jìn)程控制塊4、進(jìn)程的描述進(jìn)程程序塊進(jìn)程標(biāo)識(shí)信息進(jìn)程狀態(tài)信息進(jìn)程控制信20進(jìn)程控制塊(ProcessControlBlock)存放進(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)程撤消而撤消。用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程。系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。PCB就象我們的戶(hù)口。進(jìn)程與PCB是一一對(duì)應(yīng)的。進(jìn)程控制塊(ProcessControlBlock)存放21進(jìn)程控制塊的內(nèi)容包含以下三類(lèi)信息:進(jìn)程標(biāo)志信息處理器狀態(tài)信息進(jìn)程控制信息進(jìn)程控制塊的內(nèi)容包含以下三類(lèi)信息:22進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:通常用系統(tǒng)中唯一的數(shù)字作為標(biāo)記,該數(shù)字實(shí)際是該進(jìn)程的PCB在系統(tǒng)的PCB表中的表目序號(hào)。建立本進(jìn)程的進(jìn)程(父進(jìn)程)的標(biāo)志ID用戶(hù)標(biāo)記進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:23處理器狀態(tài)信息用戶(hù)使用的寄存器控制和狀態(tài)寄存器:包括程序計(jì)數(shù)器PC和條件寄存器(或程序狀態(tài)字PSW).堆棧指針處理器狀態(tài)信息用戶(hù)使用的寄存器24進(jìn)程控制信息調(diào)度和狀態(tài)信息:進(jìn)程的狀態(tài),進(jìn)程的調(diào)度優(yōu)先級(jí),與調(diào)度有關(guān)的信息進(jìn)程在有關(guān)隊(duì)列中的鏈接指針進(jìn)程間的通信信息:包括標(biāo)志位、信號(hào)或信號(hào)量、消息隊(duì)列等主存使用信息:包括分給進(jìn)程的主存大小和位置進(jìn)程使用的其他資源信息進(jìn)程得到有關(guān)服務(wù)的優(yōu)先級(jí)進(jìn)程控制信息調(diào)度和狀態(tài)信息:25進(jìn)程管理
系統(tǒng)中的進(jìn)程是很多的,狀態(tài)也不一樣。為了調(diào)度和管理進(jìn)程,需將各進(jìn)程的PCB用適當(dāng)?shù)姆椒ńM織起來(lái),以下有三種方法:?jiǎn)伪恚喊阉械腜CB組織在一個(gè)表格中。索引表:同一狀態(tài)的進(jìn)程歸入一個(gè)index表(由index指向PCB),多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不同的index表。各狀態(tài)的進(jìn)程形成不同的索引表:就緒索引表、阻塞索引表鏈表:分別把具有相同狀態(tài)的所有進(jìn)程的PCB按優(yōu)先級(jí)排成一個(gè)或多個(gè)隊(duì)列,同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不同的鏈表各狀態(tài)的進(jìn)程形成不同的鏈表:就緒鏈表、阻塞鏈表進(jìn)程管理系統(tǒng)中的進(jìn)程是很多的,狀態(tài)也不一樣26PCB組織形式PCB組織形式27系操作系統(tǒng)課件3285、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換,通常由具有特定功能的原語(yǔ)完成。建立進(jìn)程原語(yǔ)撤銷(xiāo)進(jìn)程原語(yǔ)阻塞進(jìn)程原語(yǔ)喚醒進(jìn)程原語(yǔ)掛起進(jìn)程原語(yǔ)解除掛起進(jìn)程原語(yǔ)改變優(yōu)先數(shù)原語(yǔ)調(diào)度進(jìn)程原語(yǔ)5、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間29創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件用戶(hù)登錄。
作業(yè)調(diào)度。
提供服務(wù)。
應(yīng)用請(qǐng)求。
創(chuàng)建進(jìn)程的過(guò)程創(chuàng)建一個(gè)PCB賦予一個(gè)統(tǒng)一進(jìn)程標(biāo)識(shí)符為進(jìn)程映象分配空間初始化進(jìn)程控制塊許多默認(rèn)值(如:狀態(tài)為New,無(wú)I/O設(shè)備或文件...)設(shè)置相應(yīng)的鏈接如:把新進(jìn)程加到就緒隊(duì)列的鏈表中創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件30進(jìn)程創(chuàng)建系統(tǒng)調(diào)用:create(name,priority,start-addr)UNIX系統(tǒng): fork()進(jìn)程創(chuàng)建系統(tǒng)調(diào)用:31系操作系統(tǒng)課件332撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤消原語(yǔ))撤消進(jìn)程。在一般操作系統(tǒng)中進(jìn)程撤消的系統(tǒng)調(diào)用是:kill
UNIX系統(tǒng)中是exit()。引起進(jìn)程撤銷(xiāo)的事件
正常結(jié)束。
異常結(jié)束。
外界干預(yù)。
撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(33撤消進(jìn)程兩種策略:僅撤銷(xiāo)指定標(biāo)識(shí)符的進(jìn)程;撤銷(xiāo)一個(gè)子進(jìn)程及該子進(jìn)程的所有子孫。撤消進(jìn)程兩種策略:34撤消進(jìn)程根據(jù)撤銷(xiāo)進(jìn)程標(biāo)識(shí)號(hào),從相應(yīng)隊(duì)列中找到它的PCB將該進(jìn)程擁有的資源歸還給父進(jìn)程或操作系統(tǒng)若該進(jìn)程擁有子進(jìn)程,應(yīng)先撤銷(xiāo)元的所有子孫進(jìn)程,以防它們脫離控制被撤銷(xiāo)進(jìn)程出隊(duì),將它的PCB歸還到PCB池撤消進(jìn)程根據(jù)撤銷(xiāo)進(jìn)程標(biāo)識(shí)號(hào),從相應(yīng)隊(duì)列中找到它的PCB35系操作系統(tǒng)課件336進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件
請(qǐng)求系統(tǒng)服務(wù)。
啟動(dòng)某種操作并等待操作完成。
等待合作進(jìn)程的協(xié)同配合。
系統(tǒng)進(jìn)程無(wú)新工作可做。進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件37進(jìn)程的阻塞和喚醒進(jìn)程阻塞過(guò)程停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場(chǎng)信息;將進(jìn)程狀態(tài)改為阻塞態(tài),并將其PCB入相應(yīng)的阻塞隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度程序。進(jìn)程喚醒過(guò)程首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。進(jìn)程的阻塞和喚醒進(jìn)程阻塞過(guò)程38進(jìn)程切換進(jìn)程切換:中斷處于運(yùn)行態(tài)的進(jìn)程運(yùn)行,讓出處理器,恢復(fù)新進(jìn)程的狀態(tài),使新進(jìn)程投入運(yùn)行。當(dāng)系統(tǒng)調(diào)度新進(jìn)程占有處理器時(shí),新老進(jìn)程隨之發(fā)生上下文切換。進(jìn)程的運(yùn)行被認(rèn)為是在進(jìn)程的上下文中執(zhí)行的。進(jìn)程上下文:操作系統(tǒng)中把進(jìn)程物理實(shí)體和支持進(jìn)程運(yùn)行的環(huán)境合稱(chēng)為進(jìn)程上下文(context)。進(jìn)程實(shí)體+運(yùn)行環(huán)境。進(jìn)程切換進(jìn)程切換:中斷處于運(yùn)行態(tài)的進(jìn)程運(yùn)行,讓出處理器,恢復(fù)39進(jìn)程切換進(jìn)程上下文組成:用戶(hù)級(jí)上下文:由用戶(hù)程序塊、用戶(hù)數(shù)據(jù)塊和用戶(hù)堆棧組成的進(jìn)程地址空間。系統(tǒng)級(jí)上下文:又進(jìn)程控制塊、內(nèi)存管理信息、進(jìn)程環(huán)境塊,及系統(tǒng)堆棧等組成的進(jìn)程地址空間。寄存器上下文:由PSW寄存器和各類(lèi)控制寄存器、地址寄存器、通用寄存器組成、用戶(hù)棧指針等組成。進(jìn)程切換進(jìn)程上下文組成:40進(jìn)程切換進(jìn)程切換步驟:保存被中斷進(jìn)程的處理器現(xiàn)場(chǎng)信息修改被中斷進(jìn)程的進(jìn)程控制塊的有關(guān)信息,如進(jìn)程狀態(tài)等把被中斷進(jìn)程的PCB加入有關(guān)隊(duì)列選擇下一個(gè)占有處理器運(yùn)行的進(jìn)程修改被選中進(jìn)程的PCB的有關(guān)信息根據(jù)被選中進(jìn)程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲(chǔ)保護(hù)信息根據(jù)被選中進(jìn)程恢復(fù)處理器現(xiàn)場(chǎng)進(jìn)程切換進(jìn)程切換步驟:41改變優(yōu)先級(jí)數(shù)原語(yǔ)進(jìn)程的優(yōu)先級(jí)數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先級(jí),進(jìn)程調(diào)度程序以此來(lái)確定優(yōu)先調(diào)用哪一個(gè)進(jìn)程到處理機(jī)上運(yùn)行。為防止一些進(jìn)程因優(yōu)先數(shù)太低而長(zhǎng)期不能運(yùn)行,許多系統(tǒng)采用動(dòng)態(tài)優(yōu)先數(shù)。影響優(yōu)先數(shù)的因素作業(yè)開(kāi)始時(shí)的靜態(tài)優(yōu)先數(shù)過(guò)程的類(lèi)型過(guò)程所使用的資源量在系統(tǒng)中的等待時(shí)間改變優(yōu)先級(jí)數(shù)原語(yǔ)進(jìn)程的優(yōu)先級(jí)數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先426.操作系統(tǒng)代碼的執(zhí)行通常,OS核心不是一個(gè)進(jìn)程,其執(zhí)行不被調(diào)度。OS通過(guò)中斷方式獲得CPU控制權(quán)。OS與應(yīng)用程序的切換會(huì)引起兩個(gè)開(kāi)關(guān)的變化:CPU執(zhí)行模式開(kāi)關(guān):開(kāi)銷(xiāo)小存取PSW和模式改變指令進(jìn)程間開(kāi)關(guān):開(kāi)銷(xiāo)大進(jìn)程地址空間變換維護(hù)PCB信息6.操作系統(tǒng)代碼的執(zhí)行通常,OS核心不是一個(gè)進(jìn)程,其執(zhí)行不43核心態(tài)運(yùn)行系統(tǒng)調(diào)用或中斷(含模式切換)用戶(hù)態(tài)運(yùn)行等待狀態(tài)就緒狀態(tài)等待發(fā)生事件喚醒調(diào)度進(jìn)程中斷、中斷返回運(yùn)行狀態(tài)允許進(jìn)程切換核心態(tài)系統(tǒng)調(diào)用或中斷(含模式切換)用戶(hù)態(tài)等待就緒等待發(fā)生事件446.操作系統(tǒng)代碼的執(zhí)行(續(xù))OS和進(jìn)程的關(guān)系:OS不作為進(jìn)程地址空間的一部分:傳統(tǒng)方法。OS作為進(jìn)程地址空間的一部分:如UNIXOS功能分別在核心和系統(tǒng)服務(wù)進(jìn)程中,只有OS核心作為進(jìn)程地址空間的一部分:如WindowsNT6.操作系統(tǒng)代碼的執(zhí)行(續(xù))OS和進(jìn)程的關(guān)系:457WindowsNT進(jìn)程管理舉例NT的進(jìn)程作為對(duì)象(Object),以句柄(handle)來(lái)引用。相應(yīng)地有控制對(duì)象的服務(wù)(services)。進(jìn)程對(duì)象的屬性;PID,AccessToken,BasePriority,默認(rèn)處理器集合等1.概述7WindowsNT進(jìn)程管理舉例NT的進(jìn)程作為對(duì)象(Ob467.1NT的進(jìn)程關(guān)系對(duì)NT核心而言,進(jìn)程之間沒(méi)有任何關(guān)系(包括父子關(guān)系)。那么,如何表達(dá)UNIX進(jìn)程之間的父子關(guān)系(以及其他關(guān)系)?由POSIX子系統(tǒng)來(lái)建立和維護(hù)7.1NT的進(jìn)程關(guān)系對(duì)NT核心而言,進(jìn)程之間沒(méi)有任何關(guān)系(477.2NT進(jìn)程結(jié)構(gòu)7.2NT進(jìn)程結(jié)構(gòu)487.3.進(jìn)程控制創(chuàng)建:CreateProcess()函數(shù)用于創(chuàng)建新進(jìn)程及其主線程,以執(zhí)行指定的程序。新進(jìn)程可以繼承:打開(kāi)文件的句柄、各種對(duì)象(如進(jìn)程、線程、信號(hào)量、管道等)的句柄、環(huán)境變量、當(dāng)前目錄、原進(jìn)程的控制終端、原進(jìn)程的進(jìn)程組(用于發(fā)送Ctrl+C或Ctrl+Break信號(hào)給多個(gè)進(jìn)程)--每個(gè)句柄在創(chuàng)建或打開(kāi)時(shí)能指定是否可繼承;新進(jìn)程不能繼承:優(yōu)先權(quán)類(lèi)、內(nèi)存句柄、DLL模塊句柄CREATE_NEW_CONSOLE表示新進(jìn)程有一個(gè)新的控制臺(tái)CREATE_NEW_PROCESS_GROUP表示新進(jìn)程是一個(gè)新的進(jìn)程組的根。7.3.進(jìn)程控制創(chuàng)建:CreateProcess()函數(shù)用49退出:ExitProcess()或TerminateProcess(),則進(jìn)程包含的線程全部終止;ExitProcess()終止一個(gè)進(jìn)程和它的所有線程;它的終止操作是完整的,包括關(guān)閉所有對(duì)象句柄、它的所有線程等;TerminateProcess()終止指定的進(jìn)程和它的所有線程;它的終止操作是不完整的(如:不向相關(guān)DLL通報(bào)關(guān)閉情況),通常只用于異常情況下對(duì)進(jìn)程的終止。退出:ExitProcess()或TerminateProc50小結(jié)掌握多道程序系統(tǒng)的特點(diǎn)進(jìn)程:定義、三個(gè)基本狀態(tài)、狀態(tài)變遷原因及因果關(guān)系進(jìn)程控制塊:定義、作用、包含的內(nèi)容、組織形式了解進(jìn)程控制原語(yǔ)小結(jié)掌握51作業(yè)3.83.10作業(yè)3.852第三章進(jìn)程管理掌握多道程序系統(tǒng)的特點(diǎn)進(jìn)程的引入和定義進(jìn)程的狀態(tài)及狀態(tài)變遷進(jìn)程的描述:PCB了解進(jìn)程的控制第三章進(jìn)程管理掌握531、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重要的概念。它是在多道程序系統(tǒng)出現(xiàn)以后,為了刻畫(huà)系統(tǒng)內(nèi)部出現(xiàn)的情況,描述系統(tǒng)內(nèi)部各作業(yè)的活動(dòng)規(guī)律而引進(jìn)的一個(gè)新概念,它是對(duì)程序的抽象。1、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重54多道程序系統(tǒng)的特點(diǎn)并行性在主存中同時(shí)存放多道作業(yè),充分利用系統(tǒng)資源。制約性各程序同時(shí)存在于主存,可能因?yàn)楦?jìng)爭(zhēng)同一資源(如處理器、外部設(shè)備)而相互制約。動(dòng)態(tài)性各程序在系統(tǒng)中所處的狀態(tài)在不變化。多道程序系統(tǒng)的特點(diǎn)并行性552、進(jìn)程的概念定義:Process進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。它對(duì)應(yīng)處理機(jī)、存儲(chǔ)器和外設(shè)等資源的分配和回收;引入多進(jìn)程,提高了對(duì)硬件資源的利用率,但又帶來(lái)額外的空間和時(shí)間開(kāi)銷(xiāo),增加了OS的復(fù)雜性;2、進(jìn)程的概念定義:Process56進(jìn)程與程序的區(qū)別進(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è)程序。進(jìn)程與程序的區(qū)別進(jìn)程是動(dòng)態(tài)的,程序是靜態(tài)的:程序是有序代碼的57進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)。并發(fā)和異步特性會(huì)導(dǎo)致程序執(zhí)行的不可再現(xiàn)性。制約性:并發(fā)進(jìn)程之間存在著制約性,在進(jìn)行的關(guān)鍵點(diǎn)上需要相互等待或互通消息。動(dòng)態(tài)性:進(jìn)程是程序在數(shù)據(jù)集合上的一次執(zhí)行過(guò)程,是動(dòng)態(tài)概念;而程序是一組有序指令序列,是靜態(tài)概念。進(jìn)程有一個(gè)生命過(guò)程:創(chuàng)建、運(yùn)行、等待等。進(jìn)程具有動(dòng)態(tài)的地址空間(數(shù)量和內(nèi)容),地址空間上包括:代碼(指令執(zhí)行和CPU狀態(tài)的改變)數(shù)據(jù)(變量的生成和賦值)系統(tǒng)控制信息(進(jìn)程控制塊的生成和刪除)進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)58進(jìn)程的性質(zhì)結(jié)構(gòu)性:包括數(shù)據(jù)集合和運(yùn)行于其上的程序。代碼段、數(shù)據(jù)段和核心段(在地址空間中);程序文件中通常也劃分了代碼段和數(shù)據(jù)段,而核心段通常就是OS核心(由各個(gè)進(jìn)程共享,包括各進(jìn)程的PCB) 共享性:同一程序同時(shí)運(yùn)行于不同數(shù)據(jù)集合上時(shí),構(gòu)成不同的進(jìn)程。獨(dú)立性:是系統(tǒng)中資源分配和保護(hù)的基本單位,也是系統(tǒng)調(diào)度的獨(dú)立單位(單線程進(jìn)程)。每個(gè)進(jìn)程的地址空間相互獨(dú)立,除非采用進(jìn)程間通信手段;進(jìn)程的性質(zhì)結(jié)構(gòu)性:包括數(shù)據(jù)集合和運(yùn)行于其上的程序。593、進(jìn)程的狀態(tài)運(yùn)行狀態(tài)(Running):進(jìn)程占有CPU,并在CPU上運(yùn)行。處于此狀態(tài)的進(jìn)程的數(shù)目小于等于CPU的數(shù)目。在沒(méi)有其他進(jìn)程可以執(zhí)行時(shí)(如所有進(jìn)程都在阻塞狀態(tài)),通常會(huì)自動(dòng)執(zhí)行系統(tǒng)的idle進(jìn)程(相當(dāng)于空操作)。就緒狀態(tài)(Ready):進(jìn)程已獲得除處理機(jī)外的所需資源,等待分配處理機(jī)資源;只要分配CPU就可執(zhí)行??梢园炊鄠€(gè)優(yōu)先級(jí)來(lái)劃分隊(duì)列,如:時(shí)間片用完->低優(yōu),I/O完成->中優(yōu),頁(yè)面調(diào)入完成->高優(yōu)等待狀態(tài)(Blocked):指進(jìn)程因等待某種事件的發(fā)生而暫時(shí)不能運(yùn)行的狀態(tài)(即使CPU空閑,該進(jìn)程也不可運(yùn)行)。等待的事件可以為:I/O操作或進(jìn)程同步等。
3、進(jìn)程的狀態(tài)運(yùn)行狀態(tài)(Running):進(jìn)程占有CPU,并60進(jìn)程狀態(tài)轉(zhuǎn)換
在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情況及外界環(huán)境的變化,這三種基本狀態(tài)可以依據(jù)一定的條件相互轉(zhuǎn)換。
就緒—運(yùn)行運(yùn)行—就緒
運(yùn)行—等待等待—就緒
進(jìn)程狀態(tài)轉(zhuǎn)換在進(jìn)程運(yùn)行過(guò)程中,由于進(jìn)程自身進(jìn)展情61進(jìn)程的狀態(tài)轉(zhuǎn)換運(yùn)行就緒等待1、就緒—運(yùn)行2、運(yùn)行—就緒3、運(yùn)行—等待4、等待—就緒進(jìn)程的狀態(tài)轉(zhuǎn)換運(yùn)行就緒等待1、就緒—運(yùn)行62進(jìn)程轉(zhuǎn)換就緒-->運(yùn)行調(diào)度:調(diào)度程序選擇一個(gè)新的進(jìn)程運(yùn)行該轉(zhuǎn)換可以由其他轉(zhuǎn)換引起運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時(shí)間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級(jí)進(jìn)程處 于就緒狀態(tài)該轉(zhuǎn)換可以引起其他轉(zhuǎn)換發(fā)生進(jìn)程轉(zhuǎn)換就緒-->運(yùn)行63進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待當(dāng)一進(jìn)程必須等待某事件發(fā)生,OS尚未完成服務(wù)對(duì)一資源的訪問(wèn)尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)可以引起其他轉(zhuǎn)換發(fā)生等待-->就緒當(dāng)所等待的事件發(fā)生時(shí)進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待64因果變遷如果一個(gè)狀態(tài)變遷是由于另一個(gè)狀態(tài)變遷引起的,則這兩個(gè)變遷為因果變遷。思考下列說(shuō)法是否對(duì),為什么?
(1)一個(gè)進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)態(tài),一定會(huì)引起另一個(gè)進(jìn)程從就緒狀態(tài)態(tài)變?yōu)檫\(yùn)行狀態(tài)。(2)一個(gè)進(jìn)程從運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)態(tài),一定會(huì)引起另一進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)。
(3)一個(gè)進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),一定會(huì)引起另一個(gè)進(jìn)程從就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)。因果變遷如果一個(gè)狀態(tài)變遷是由于另一個(gè)狀態(tài)變遷引起的,則這兩個(gè)65三狀態(tài)進(jìn)程模型(單隊(duì)列結(jié)構(gòu))三狀態(tài)進(jìn)程模型(單隊(duì)列結(jié)構(gòu))66進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適應(yīng)系統(tǒng)的功能目標(biāo),許多系統(tǒng)都有“掛起”和“解掛”一個(gè)進(jìn)程的功能,原因在于:系統(tǒng)有時(shí)可能出故障或某些功能受到破壞,需要暫時(shí)將系統(tǒng)中的進(jìn)程掛起,以便故障消除后再恢復(fù)。用戶(hù)在執(zhí)行自己的作業(yè)過(guò)程中,要求掛起他的進(jìn)程,以便進(jìn)行某些檢查和改正。系統(tǒng)中負(fù)載過(guò)重,資源相對(duì)不足,造成系統(tǒng)效率下降,需要掛起一部分進(jìn)程以調(diào)整系統(tǒng)負(fù)荷進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適67具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生掛起解除掛起時(shí)間片完成被調(diào)度掛起時(shí)間發(fā)生掛起解除掛起等待事件1RunningBlockedsBlockedaReadyaReadys4325678910具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生1RunningBlock68狀態(tài)就緒狀態(tài)(Readya):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行狀態(tài);等待狀態(tài)(Blockeda):進(jìn)程在內(nèi)存并等待某事件的出現(xiàn);掛起等待狀態(tài)(Blockeds):進(jìn)程在外存并等待某事件的出現(xiàn);掛起就緒狀態(tài)(Readys):進(jìn)程在外存,但只要進(jìn)入內(nèi)存,即可運(yùn)行;狀態(tài)就緒狀態(tài)(Readya):進(jìn)程在內(nèi)存且可立即進(jìn)入運(yùn)行狀態(tài)69轉(zhuǎn)換掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:等待到掛起等待:沒(méi)有進(jìn)程處于就緒狀態(tài)或就緒進(jìn)程要求更多內(nèi)存資源時(shí),會(huì)進(jìn)行這種轉(zhuǎ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)會(huì)選擇掛起低優(yōu)先級(jí)就緒進(jìn)程;運(yùn)行到掛起就緒:對(duì)搶先式分時(shí)系統(tǒng),當(dāng)有高優(yōu)先級(jí)掛起等待進(jìn)程因事件出現(xiàn)而進(jìn)入掛起就緒時(shí),系統(tǒng)可能會(huì)把運(yùn)行進(jìn)程轉(zhuǎn)到掛起就緒狀態(tài);轉(zhuǎn)換掛起(Suspend):把一個(gè)進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有70解掛(Activate):把一個(gè)進(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)一個(gè)進(jìn)程釋放足夠內(nèi)存時(shí),系統(tǒng)會(huì)把一個(gè)高優(yōu)先級(jí)掛起等待(系統(tǒng)認(rèn)為會(huì)很快出現(xiàn)所等待的事件)進(jìn)程;解掛(Activate):把一個(gè)進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以714、進(jìn)程的描述進(jìn)程程序塊進(jìn)程數(shù)據(jù)塊系統(tǒng)/用戶(hù)堆棧進(jìn)程控制塊進(jìn)程標(biāo)識(shí)信息進(jìn)程狀態(tài)信息進(jìn)程控制信息用戶(hù)堆棧共享地址空間用戶(hù)私有地址空間(代碼、數(shù)據(jù))進(jìn)程控制塊4、進(jìn)程的描述進(jìn)程程序塊進(jìn)程標(biāo)識(shí)信息進(jìn)程狀態(tài)信息進(jìn)程控制信72進(jìn)程控制塊(ProcessControlBlock)存放進(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)程撤消而撤消。用它來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過(guò)程。系統(tǒng)利用PCB來(lái)控制和管理進(jìn)程,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。PCB就象我們的戶(hù)口。進(jìn)程與PCB是一一對(duì)應(yīng)的。進(jìn)程控制塊(ProcessControlBlock)存放73進(jìn)程控制塊的內(nèi)容包含以下三類(lèi)信息:進(jìn)程標(biāo)志信息處理器狀態(tài)信息進(jìn)程控制信息進(jìn)程控制塊的內(nèi)容包含以下三類(lèi)信息:74進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:通常用系統(tǒng)中唯一的數(shù)字作為標(biāo)記,該數(shù)字實(shí)際是該進(jìn)程的PCB在系統(tǒng)的PCB表中的表目序號(hào)。建立本進(jìn)程的進(jìn)程(父進(jìn)程)的標(biāo)志ID用戶(hù)標(biāo)記進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:75處理器狀態(tài)信息用戶(hù)使用的寄存器控制和狀態(tài)寄存器:包括程序計(jì)數(shù)器PC和條件寄存器(或程序狀態(tài)字PSW).堆棧指針處理器狀態(tài)信息用戶(hù)使用的寄存器76進(jìn)程控制信息調(diào)度和狀態(tài)信息:進(jìn)程的狀態(tài),進(jìn)程的調(diào)度優(yōu)先級(jí),與調(diào)度有關(guān)的信息進(jìn)程在有關(guān)隊(duì)列中的鏈接指針進(jìn)程間的通信信息:包括標(biāo)志位、信號(hào)或信號(hào)量、消息隊(duì)列等主存使用信息:包括分給進(jìn)程的主存大小和位置進(jìn)程使用的其他資源信息進(jìn)程得到有關(guān)服務(wù)的優(yōu)先級(jí)進(jìn)程控制信息調(diào)度和狀態(tài)信息:77進(jìn)程管理
系統(tǒng)中的進(jìn)程是很多的,狀態(tài)也不一樣。為了調(diào)度和管理進(jìn)程,需將各進(jìn)程的PCB用適當(dāng)?shù)姆椒ńM織起來(lái),以下有三種方法:?jiǎn)伪恚喊阉械腜CB組織在一個(gè)表格中。索引表:同一狀態(tài)的進(jìn)程歸入一個(gè)index表(由index指向PCB),多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不同的index表。各狀態(tài)的進(jìn)程形成不同的索引表:就緒索引表、阻塞索引表鏈表:分別把具有相同狀態(tài)的所有進(jìn)程的PCB按優(yōu)先級(jí)排成一個(gè)或多個(gè)隊(duì)列,同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個(gè)狀態(tài)對(duì)應(yīng)多個(gè)不同的鏈表各狀態(tài)的進(jìn)程形成不同的鏈表:就緒鏈表、阻塞鏈表進(jìn)程管理系統(tǒng)中的進(jìn)程是很多的,狀態(tài)也不一樣78PCB組織形式PCB組織形式79系操作系統(tǒng)課件3805、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間的轉(zhuǎn)換,通常由具有特定功能的原語(yǔ)完成。建立進(jìn)程原語(yǔ)撤銷(xiāo)進(jìn)程原語(yǔ)阻塞進(jìn)程原語(yǔ)喚醒進(jìn)程原語(yǔ)掛起進(jìn)程原語(yǔ)解除掛起進(jìn)程原語(yǔ)改變優(yōu)先數(shù)原語(yǔ)調(diào)度進(jìn)程原語(yǔ)5、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間81創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件用戶(hù)登錄。
作業(yè)調(diào)度。
提供服務(wù)。
應(yīng)用請(qǐng)求。
創(chuàng)建進(jìn)程的過(guò)程創(chuàng)建一個(gè)PCB賦予一個(gè)統(tǒng)一進(jìn)程標(biāo)識(shí)符為進(jìn)程映象分配空間初始化進(jìn)程控制塊許多默認(rèn)值(如:狀態(tài)為New,無(wú)I/O設(shè)備或文件...)設(shè)置相應(yīng)的鏈接如:把新進(jìn)程加到就緒隊(duì)列的鏈表中創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件82進(jìn)程創(chuàng)建系統(tǒng)調(diào)用:create(name,priority,start-addr)UNIX系統(tǒng): fork()進(jìn)程創(chuàng)建系統(tǒng)調(diào)用:83系操作系統(tǒng)課件384撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤消原語(yǔ))撤消進(jìn)程。在一般操作系統(tǒng)中進(jìn)程撤消的系統(tǒng)調(diào)用是:kill
UNIX系統(tǒng)中是exit()。引起進(jìn)程撤銷(xiāo)的事件
正常結(jié)束。
異常結(jié)束。
外界干預(yù)。
撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(85撤消進(jìn)程兩種策略:僅撤銷(xiāo)指定標(biāo)識(shí)符的進(jìn)程;撤銷(xiāo)一個(gè)子進(jìn)程及該子進(jìn)程的所有子孫。撤消進(jìn)程兩種策略:86撤消進(jìn)程根據(jù)撤銷(xiāo)進(jìn)程標(biāo)識(shí)號(hào),從相應(yīng)隊(duì)列中找到它的PCB將該進(jìn)程擁有的資源歸還給父進(jìn)程或操作系統(tǒng)若該進(jìn)程擁有子進(jìn)程,應(yīng)先撤銷(xiāo)元的所有子孫進(jìn)程,以防它們脫離控制被撤銷(xiāo)進(jìn)程出隊(duì),將它的PCB歸還到PCB池撤消進(jìn)程根據(jù)撤銷(xiāo)進(jìn)程標(biāo)識(shí)號(hào),從相應(yīng)隊(duì)列中找到它的PCB87系操作系統(tǒng)課件388進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件
請(qǐng)求系統(tǒng)服務(wù)。
啟動(dòng)某種操作并等待操作完成。
等待合作進(jìn)程的協(xié)同配合。
系統(tǒng)進(jìn)程無(wú)新工作可做。進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件89進(jìn)程的阻塞和喚醒進(jìn)程阻塞過(guò)程停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場(chǎng)信息;將進(jìn)程狀態(tài)改為阻塞態(tài),并將其PCB入相應(yīng)的阻塞隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度程序。進(jìn)程喚醒過(guò)程首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。進(jìn)程的阻塞和喚醒進(jìn)程阻塞過(guò)程90進(jìn)程切換進(jìn)程切換:中斷處于運(yùn)行態(tài)的進(jìn)程運(yùn)行,讓出處理器,恢復(fù)新進(jìn)程的狀態(tài),使新進(jìn)程投入運(yùn)行。當(dāng)系統(tǒng)調(diào)度新進(jìn)程占有處理器時(shí),新老進(jìn)程隨之發(fā)生上下文切換。進(jìn)程的運(yùn)行被認(rèn)為是在進(jìn)程的上下文中執(zhí)行的。進(jìn)程上下文:操作系統(tǒng)中把進(jìn)程物理實(shí)體和支持進(jìn)程運(yùn)行的環(huán)境合稱(chēng)為進(jìn)程上下文(context)。進(jìn)程實(shí)體+運(yùn)行環(huán)境。進(jìn)程切換進(jìn)程切換:中斷處于運(yùn)行態(tài)的進(jìn)程運(yùn)行,讓出處理器,恢復(fù)91進(jìn)程切換進(jìn)程上下文組成:用戶(hù)級(jí)上下文:由用戶(hù)程序塊、用戶(hù)數(shù)據(jù)塊和用戶(hù)堆棧組成的進(jìn)程地址空間。系統(tǒng)級(jí)上下文:又進(jìn)程控制塊、內(nèi)存管理信息、進(jìn)程環(huán)境塊,及系統(tǒng)堆棧等組成的進(jìn)程地址空間。寄存器上下文:由PSW寄存器和各類(lèi)控制寄存器、地址寄存器、通用寄存器組成、用戶(hù)棧指針等組成。進(jìn)程切換進(jìn)程上下文組成:92進(jìn)程切換進(jìn)程切換步驟:保存被中斷進(jìn)程的處理器現(xiàn)場(chǎng)信息修改被中斷進(jìn)程的進(jìn)程控制塊的有關(guān)信息,如進(jìn)程狀態(tài)等把被中斷進(jìn)程的PCB加入有關(guān)隊(duì)列選擇下一個(gè)占有處理器運(yùn)行的進(jìn)程修改被選中進(jìn)程的PCB的有關(guān)信息根據(jù)被選中進(jìn)程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲(chǔ)保護(hù)信息根據(jù)被選中進(jìn)程恢復(fù)處理器現(xiàn)場(chǎng)進(jìn)程切換進(jìn)程切換步驟:93改變優(yōu)先級(jí)數(shù)原語(yǔ)進(jìn)程的優(yōu)先級(jí)數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先級(jí),進(jìn)程調(diào)度程序
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 靜療的試題及答案
- 醫(yī)院感染和控制試題及答案
- 物資管理考試試題及答案大全
- 基本公共衛(wèi)生服務(wù)規(guī)范測(cè)試題(孕產(chǎn)婦健康管理部分)附答案
- 經(jīng)濟(jì)師考試初級(jí)經(jīng)濟(jì)基礎(chǔ)考試試題及答案
- 非法學(xué)題庫(kù)及答案
- 法律考試題及答案
- 財(cái)務(wù)人員法律試題及答案
- 宜賓時(shí)政考試真題及答案
- 20263D模型師招聘試題及答案
- 學(xué)生計(jì)算錯(cuò)誤原因分析及對(duì)策
- DB32T 4398-2022《建筑物掏土糾偏技術(shù)標(biāo)準(zhǔn)》
- (精確版)消防工程施工進(jìn)度表
- 保險(xiǎn)公司資產(chǎn)負(fù)債表、利潤(rùn)表、現(xiàn)金流量表和所有者權(quán)益變動(dòng)表格式
- 送貨單格式模板
- 防止激情違紀(jì)和犯罪授課講義
- XX少兒棋院加盟協(xié)議
- 五年級(jí)數(shù)學(xué)應(yīng)用題專(zhuān)題訓(xùn)練50題
- 2021年四川省資陽(yáng)市中考數(shù)學(xué)試卷
- 河南省鄭氏中原纖維素有限公司年產(chǎn) 0.2 萬(wàn)噸預(yù)糊化淀粉、0.5 萬(wàn)噸羧甲基纖維素鈉、1.3 萬(wàn)噸羧甲基淀粉鈉項(xiàng)目環(huán)境影響報(bào)告
- 高處作業(yè)安全培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論