版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章進(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)以后,為了刻畫系統(tǒng)內(nèi)部出現(xiàn)的情況,描述系統(tǒng)內(nèi)部各作業(yè)的活動規(guī)律而引進(jìn)的一個新概念,它是對程序的抽象。1、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重2多道程序系統(tǒng)的特點(diǎn)并行性在主存中同時存放多道作業(yè),充分利用系統(tǒng)資源。制約性各程序同時存在于主存,可能因?yàn)楦偁幫毁Y源(如處理器、外部設(shè)備)而相互制約。動態(tài)性各程序在系統(tǒng)中所處的狀態(tài)在不變化。多道程序系統(tǒng)的特點(diǎn)并行性32、進(jìn)程的概念定義:Process進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。它對應(yīng)處理機(jī)、存儲器和外設(shè)等資源的分配和回收;引入多進(jìn)程,提高了對硬件資源的利用率,但又帶來額外的空間和時間開銷,增加了OS的復(fù)雜性;2、進(jìn)程的概念定義:Process4進(jìn)程與程序的區(qū)別進(jìn)程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序的執(zhí)行。通常進(jìn)程不可在計(jì)算機(jī)之間遷移;而程序通常對應(yīng)著文件、靜態(tài)和可以復(fù)制。進(jìn)程是暫時的,程序的永久的:進(jìn)程是一個狀態(tài)變化的過程,程序可長久保存。進(jìn)程與程序的組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊(即進(jìn)程狀態(tài)信息)。進(jìn)程與程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程序可對應(yīng)多個進(jìn)程;通過調(diào)用關(guān)系,一個進(jìn)程可包括多個程序。進(jìn)程與程序的區(qū)別進(jìn)程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的5進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)。并發(fā)和異步特性會導(dǎo)致程序執(zhí)行的不可再現(xiàn)性。制約性:并發(fā)進(jìn)程之間存在著制約性,在進(jìn)行的關(guān)鍵點(diǎn)上需要相互等待或互通消息。動態(tài)性:進(jìn)程是程序在數(shù)據(jù)集合上的一次執(zhí)行過程,是動態(tài)概念;而程序是一組有序指令序列,是靜態(tài)概念。進(jìn)程有一個生命過程:創(chuàng)建、運(yùn)行、等待等。進(jìn)程具有動態(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核心(由各個進(jìn)程共享,包括各進(jìn)程的PCB) 共享性:同一程序同時運(yùn)行于不同數(shù)據(jù)集合上時,構(gòu)成不同的進(jìn)程。獨(dú)立性:是系統(tǒng)中資源分配和保護(hù)的基本單位,也是系統(tǒng)調(diào)度的獨(dú)立單位(單線程進(jìn)程)。每個進(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ù)目。在沒有其他進(jìn)程可以執(zhí)行時(如所有進(jìn)程都在阻塞狀態(tài)),通常會自動執(zhí)行系統(tǒng)的idle進(jìn)程(相當(dāng)于空操作)。就緒狀態(tài)(Ready):進(jìn)程已獲得除處理機(jī)外的所需資源,等待分配處理機(jī)資源;只要分配CPU就可執(zhí)行??梢园炊鄠€優(yōu)先級來劃分隊(duì)列,如:時間片用完->低優(yōu),I/O完成->中優(yōu),頁面調(diào)入完成->高優(yōu)等待狀態(tài)(Blocked):指進(jìn)程因等待某種事件的發(fā)生而暫時不能運(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)行過程中,由于進(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)行過程中,由于進(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)度程序選擇一個新的進(jìn)程運(yùn)行該轉(zhuǎn)換可以由其他轉(zhuǎn)換引起運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級進(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ù)對一資源的訪問尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)可以引起其他轉(zhuǎn)換發(fā)生等待-->就緒當(dāng)所等待的事件發(fā)生時進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待12因果變遷如果一個狀態(tài)變遷是由于另一個狀態(tài)變遷引起的,則這兩個變遷為因果變遷。思考下列說法是否對,為什么?
(1)一個進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)態(tài),一定會引起另一個進(jìn)程從就緒狀態(tài)態(tài)變?yōu)檫\(yùn)行狀態(tài)。(2)一個進(jìn)程從運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)態(tài),一定會引起另一進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)。
(3)一個進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),一定會引起另一個進(jìn)程從就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)。因果變遷如果一個狀態(tài)變遷是由于另一個狀態(tài)變遷引起的,則這兩個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)都有“掛起”和“解掛”一個進(jìn)程的功能,原因在于:系統(tǒng)有時可能出故障或某些功能受到破壞,需要暫時將系統(tǒng)中的進(jìn)程掛起,以便故障消除后再恢復(fù)。用戶在執(zhí)行自己的作業(yè)過程中,要求掛起他的進(jìn)程,以便進(jìn)行某些檢查和改正。系統(tǒng)中負(fù)載過重,資源相對不足,造成系統(tǒng)效率下降,需要掛起一部分進(jìn)程以調(diào)整系統(tǒng)負(fù)荷進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適15具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生掛起解除掛起時間片完成被調(diào)度掛起時間發(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):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:等待到掛起等待:沒有進(jìn)程處于就緒狀態(tài)或就緒進(jìn)程要求更多內(nèi)存資源時,會進(jìn)行這種轉(zhuǎn)換,以提交新進(jìn)程或運(yùn)行就緒進(jìn)程;就緒到掛起就緒:當(dāng)有高優(yōu)先級等待(系統(tǒng)認(rèn)為會很快就緒的)進(jìn)程和低優(yōu)先級就緒進(jìn)程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進(jìn)程;運(yùn)行到掛起就緒:對搶先式分時系統(tǒng),當(dāng)有高優(yōu)先級掛起等待進(jìn)程因事件出現(xiàn)而進(jìn)入掛起就緒時,系統(tǒng)可能會把運(yùn)行進(jìn)程轉(zhuǎn)到掛起就緒狀態(tài);轉(zhuǎn)換掛起(Suspend):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有18解掛(Activate):把一個進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:掛起就緒到就緒:沒有就緒進(jìn)程或掛起就緒進(jìn)程優(yōu)先級高于就緒進(jìn)程時,會進(jìn)行這種轉(zhuǎn)換;掛起等待到等待:當(dāng)一個進(jìn)程釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級掛起等待(系統(tǒng)認(rèn)為會很快出現(xiàn)所等待的事件)進(jìn)程;解掛(Activate):把一個進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以194、進(jìn)程的描述進(jìn)程程序塊進(jìn)程數(shù)據(jù)塊系統(tǒng)/用戶堆棧進(jìn)程控制塊進(jìn)程標(biāo)識信息進(jìn)程狀態(tài)信息進(jìn)程控制信息用戶堆棧共享地址空間用戶私有地址空間(代碼、數(shù)據(jù))進(jìn)程控制塊4、進(jìn)程的描述進(jìn)程程序塊進(jìn)程標(biāo)識信息進(jìn)程狀態(tài)信息進(jìn)程控制信20進(jìn)程控制塊(ProcessControlBlock)存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時,建立PCB,并伴隨進(jìn)程運(yùn)行的全過程,直到進(jìn)程撤消而撤消。用它來記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動變化過程。系統(tǒng)利用PCB來控制和管理進(jìn)程,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。PCB就象我們的戶口。進(jìn)程與PCB是一一對應(yīng)的。進(jìn)程控制塊(ProcessControlBlock)存放21進(jìn)程控制塊的內(nèi)容包含以下三類信息:進(jìn)程標(biāo)志信息處理器狀態(tài)信息進(jìn)程控制信息進(jìn)程控制塊的內(nèi)容包含以下三類信息:22進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:通常用系統(tǒng)中唯一的數(shù)字作為標(biāo)記,該數(shù)字實(shí)際是該進(jìn)程的PCB在系統(tǒng)的PCB表中的表目序號。建立本進(jìn)程的進(jìn)程(父進(jìn)程)的標(biāo)志ID用戶標(biāo)記進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:23處理器狀態(tài)信息用戶使用的寄存器控制和狀態(tài)寄存器:包括程序計(jì)數(shù)器PC和條件寄存器(或程序狀態(tài)字PSW).堆棧指針處理器狀態(tài)信息用戶使用的寄存器24進(jìn)程控制信息調(diào)度和狀態(tài)信息:進(jìn)程的狀態(tài),進(jìn)程的調(diào)度優(yōu)先級,與調(diào)度有關(guān)的信息進(jìn)程在有關(guān)隊(duì)列中的鏈接指針進(jìn)程間的通信信息:包括標(biāo)志位、信號或信號量、消息隊(duì)列等主存使用信息:包括分給進(jìn)程的主存大小和位置進(jìn)程使用的其他資源信息進(jìn)程得到有關(guān)服務(wù)的優(yōu)先級進(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織起來,以下有三種方法:單表:把所有的PCB組織在一個表格中。索引表:同一狀態(tài)的進(jìn)程歸入一個index表(由index指向PCB),多個狀態(tài)對應(yīng)多個不同的index表。各狀態(tài)的進(jìn)程形成不同的索引表:就緒索引表、阻塞索引表鏈表:分別把具有相同狀態(tài)的所有進(jìn)程的PCB按優(yōu)先級排成一個或多個隊(duì)列,同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表各狀態(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)換,通常由具有特定功能的原語完成。建立進(jìn)程原語撤銷進(jìn)程原語阻塞進(jìn)程原語喚醒進(jìn)程原語掛起進(jìn)程原語解除掛起進(jìn)程原語改變優(yōu)先數(shù)原語調(diào)度進(jìn)程原語5、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間29創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件用戶登錄。
作業(yè)調(diào)度。
提供服務(wù)。
應(yīng)用請求。
創(chuàng)建進(jìn)程的過程創(chuàng)建一個PCB賦予一個統(tǒng)一進(jìn)程標(biāo)識符為進(jìn)程映象分配空間初始化進(jìn)程控制塊許多默認(rèn)值(如:狀態(tài)為New,無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ù),希望終止時,調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤消原語)撤消進(jìn)程。在一般操作系統(tǒng)中進(jìn)程撤消的系統(tǒng)調(diào)用是:kill
UNIX系統(tǒng)中是exit()。引起進(jìn)程撤銷的事件
正常結(jié)束。
異常結(jié)束。
外界干預(yù)。
撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時,調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(33撤消進(jìn)程兩種策略:僅撤銷指定標(biāo)識符的進(jìn)程;撤銷一個子進(jìn)程及該子進(jìn)程的所有子孫。撤消進(jìn)程兩種策略:34撤消進(jìn)程根據(jù)撤銷進(jìn)程標(biāo)識號,從相應(yīng)隊(duì)列中找到它的PCB將該進(jìn)程擁有的資源歸還給父進(jìn)程或操作系統(tǒng)若該進(jìn)程擁有子進(jìn)程,應(yīng)先撤銷元的所有子孫進(jìn)程,以防它們脫離控制被撤銷進(jìn)程出隊(duì),將它的PCB歸還到PCB池撤消進(jìn)程根據(jù)撤銷進(jìn)程標(biāo)識號,從相應(yīng)隊(duì)列中找到它的PCB35系操作系統(tǒng)課件336進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件
請求系統(tǒng)服務(wù)。
啟動某種操作并等待操作完成。
等待合作進(jìn)程的協(xié)同配合。
系統(tǒng)進(jìn)程無新工作可做。進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件37進(jìn)程的阻塞和喚醒進(jìn)程阻塞過程停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場信息;將進(jìn)程狀態(tài)改為阻塞態(tài),并將其PCB入相應(yīng)的阻塞隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度程序。進(jìn)程喚醒過程首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。進(jìn)程的阻塞和喚醒進(jìn)程阻塞過程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)程占有處理器時,新老進(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)境合稱為進(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)程上下文組成:用戶級上下文:由用戶程序塊、用戶數(shù)據(jù)塊和用戶堆棧組成的進(jìn)程地址空間。系統(tǒng)級上下文:又進(jìn)程控制塊、內(nèi)存管理信息、進(jìn)程環(huán)境塊,及系統(tǒng)堆棧等組成的進(jìn)程地址空間。寄存器上下文:由PSW寄存器和各類控制寄存器、地址寄存器、通用寄存器組成、用戶棧指針等組成。進(jìn)程切換進(jìn)程上下文組成:40進(jìn)程切換進(jìn)程切換步驟:保存被中斷進(jìn)程的處理器現(xiàn)場信息修改被中斷進(jìn)程的進(jìn)程控制塊的有關(guān)信息,如進(jìn)程狀態(tài)等把被中斷進(jìn)程的PCB加入有關(guān)隊(duì)列選擇下一個占有處理器運(yùn)行的進(jìn)程修改被選中進(jìn)程的PCB的有關(guān)信息根據(jù)被選中進(jìn)程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲保護(hù)信息根據(jù)被選中進(jìn)程恢復(fù)處理器現(xiàn)場進(jìn)程切換進(jìn)程切換步驟:41改變優(yōu)先級數(shù)原語進(jìn)程的優(yōu)先級數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先級,進(jìn)程調(diào)度程序以此來確定優(yōu)先調(diào)用哪一個進(jìn)程到處理機(jī)上運(yùn)行。為防止一些進(jìn)程因優(yōu)先數(shù)太低而長期不能運(yùn)行,許多系統(tǒng)采用動態(tài)優(yōu)先數(shù)。影響優(yōu)先數(shù)的因素作業(yè)開始時的靜態(tài)優(yōu)先數(shù)過程的類型過程所使用的資源量在系統(tǒng)中的等待時間改變優(yōu)先級數(shù)原語進(jìn)程的優(yōu)先級數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先426.操作系統(tǒng)代碼的執(zhí)行通常,OS核心不是一個進(jìn)程,其執(zhí)行不被調(diào)度。OS通過中斷方式獲得CPU控制權(quán)。OS與應(yīng)用程序的切換會引起兩個開關(guān)的變化:CPU執(zhí)行模式開關(guān):開銷小存取PSW和模式改變指令進(jìn)程間開關(guān):開銷大進(jìn)程地址空間變換維護(hù)PCB信息6.操作系統(tǒng)代碼的執(zhí)行通常,OS核心不是一個進(jìn)程,其執(zhí)行不43核心態(tài)運(yùn)行系統(tǒng)調(diào)用或中斷(含模式切換)用戶態(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)用或中斷(含模式切換)用戶態(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)程作為對象(Object),以句柄(handle)來引用。相應(yīng)地有控制對象的服務(wù)(services)。進(jìn)程對象的屬性;PID,AccessToken,BasePriority,默認(rèn)處理器集合等1.概述7WindowsNT進(jìn)程管理舉例NT的進(jìn)程作為對象(Ob467.1NT的進(jìn)程關(guān)系對NT核心而言,進(jìn)程之間沒有任何關(guān)系(包括父子關(guān)系)。那么,如何表達(dá)UNIX進(jìn)程之間的父子關(guān)系(以及其他關(guān)系)?由POSIX子系統(tǒng)來建立和維護(hù)7.1NT的進(jìn)程關(guān)系對NT核心而言,進(jìn)程之間沒有任何關(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)程可以繼承:打開文件的句柄、各種對象(如進(jìn)程、線程、信號量、管道等)的句柄、環(huán)境變量、當(dāng)前目錄、原進(jìn)程的控制終端、原進(jìn)程的進(jìn)程組(用于發(fā)送Ctrl+C或Ctrl+Break信號給多個進(jìn)程)--每個句柄在創(chuàng)建或打開時能指定是否可繼承;新進(jìn)程不能繼承:優(yōu)先權(quán)類、內(nèi)存句柄、DLL模塊句柄CREATE_NEW_CONSOLE表示新進(jìn)程有一個新的控制臺CREATE_NEW_PROCESS_GROUP表示新進(jìn)程是一個新的進(jìn)程組的根。7.3.進(jìn)程控制創(chuàng)建:CreateProcess()函數(shù)用49退出:ExitProcess()或TerminateProcess(),則進(jìn)程包含的線程全部終止;ExitProcess()終止一個進(jìn)程和它的所有線程;它的終止操作是完整的,包括關(guān)閉所有對象句柄、它的所有線程等;TerminateProcess()終止指定的進(jìn)程和它的所有線程;它的終止操作是不完整的(如:不向相關(guān)DLL通報關(guān)閉情況),通常只用于異常情況下對進(jìn)程的終止。退出:ExitProcess()或TerminateProc50小結(jié)掌握多道程序系統(tǒng)的特點(diǎn)進(jìn)程:定義、三個基本狀態(tài)、狀態(tài)變遷原因及因果關(guān)系進(jìn)程控制塊:定義、作用、包含的內(nèi)容、組織形式了解進(jìn)程控制原語小結(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)以后,為了刻畫系統(tǒng)內(nèi)部出現(xiàn)的情況,描述系統(tǒng)內(nèi)部各作業(yè)的活動規(guī)律而引進(jìn)的一個新概念,它是對程序的抽象。1、進(jìn)程的引入 進(jìn)程的概念是操作系統(tǒng)中最基本、最重54多道程序系統(tǒng)的特點(diǎn)并行性在主存中同時存放多道作業(yè),充分利用系統(tǒng)資源。制約性各程序同時存在于主存,可能因?yàn)楦偁幫毁Y源(如處理器、外部設(shè)備)而相互制約。動態(tài)性各程序在系統(tǒng)中所處的狀態(tài)在不變化。多道程序系統(tǒng)的特點(diǎn)并行性552、進(jìn)程的概念定義:Process進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。它對應(yīng)處理機(jī)、存儲器和外設(shè)等資源的分配和回收;引入多進(jìn)程,提高了對硬件資源的利用率,但又帶來額外的空間和時間開銷,增加了OS的復(fù)雜性;2、進(jìn)程的概念定義:Process56進(jìn)程與程序的區(qū)別進(jìn)程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的集合;進(jìn)程是程序的執(zhí)行。通常進(jìn)程不可在計(jì)算機(jī)之間遷移;而程序通常對應(yīng)著文件、靜態(tài)和可以復(fù)制。進(jìn)程是暫時的,程序的永久的:進(jìn)程是一個狀態(tài)變化的過程,程序可長久保存。進(jìn)程與程序的組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊(即進(jìn)程狀態(tài)信息)。進(jìn)程與程序的對應(yīng)關(guān)系:通過多次執(zhí)行,一個程序可對應(yīng)多個進(jìn)程;通過調(diào)用關(guān)系,一個進(jìn)程可包括多個程序。進(jìn)程與程序的區(qū)別進(jìn)程是動態(tài)的,程序是靜態(tài)的:程序是有序代碼的57進(jìn)程的性質(zhì)并行性:各進(jìn)行按各自獨(dú)立的,不可預(yù)知的速度并發(fā)推進(jìn)。并發(fā)和異步特性會導(dǎo)致程序執(zhí)行的不可再現(xiàn)性。制約性:并發(fā)進(jìn)程之間存在著制約性,在進(jìn)行的關(guān)鍵點(diǎn)上需要相互等待或互通消息。動態(tài)性:進(jìn)程是程序在數(shù)據(jù)集合上的一次執(zhí)行過程,是動態(tài)概念;而程序是一組有序指令序列,是靜態(tài)概念。進(jìn)程有一個生命過程:創(chuàng)建、運(yùn)行、等待等。進(jìn)程具有動態(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核心(由各個進(jìn)程共享,包括各進(jìn)程的PCB) 共享性:同一程序同時運(yùn)行于不同數(shù)據(jù)集合上時,構(gòu)成不同的進(jìn)程。獨(dú)立性:是系統(tǒng)中資源分配和保護(hù)的基本單位,也是系統(tǒng)調(diào)度的獨(dú)立單位(單線程進(jìn)程)。每個進(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ù)目。在沒有其他進(jìn)程可以執(zhí)行時(如所有進(jìn)程都在阻塞狀態(tài)),通常會自動執(zhí)行系統(tǒng)的idle進(jìn)程(相當(dāng)于空操作)。就緒狀態(tài)(Ready):進(jìn)程已獲得除處理機(jī)外的所需資源,等待分配處理機(jī)資源;只要分配CPU就可執(zhí)行??梢园炊鄠€優(yōu)先級來劃分隊(duì)列,如:時間片用完->低優(yōu),I/O完成->中優(yōu),頁面調(diào)入完成->高優(yōu)等待狀態(tài)(Blocked):指進(jìn)程因等待某種事件的發(fā)生而暫時不能運(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)行過程中,由于進(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)行過程中,由于進(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)度程序選擇一個新的進(jìn)程運(yùn)行該轉(zhuǎn)換可以由其他轉(zhuǎn)換引起運(yùn)行-->就緒運(yùn)行進(jìn)程用完了時間片運(yùn)行進(jìn)程被中斷,因?yàn)橐桓邇?yōu)先級進(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ù)對一資源的訪問尚不能進(jìn)行初始化I/O且必須等待結(jié)果等待某一進(jìn)程提供輸入(IPC)可以引起其他轉(zhuǎn)換發(fā)生等待-->就緒當(dāng)所等待的事件發(fā)生時進(jìn)程轉(zhuǎn)換(續(xù))運(yùn)行-->等待64因果變遷如果一個狀態(tài)變遷是由于另一個狀態(tài)變遷引起的,則這兩個變遷為因果變遷。思考下列說法是否對,為什么?
(1)一個進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)態(tài),一定會引起另一個進(jìn)程從就緒狀態(tài)態(tài)變?yōu)檫\(yùn)行狀態(tài)。(2)一個進(jìn)程從運(yùn)行狀態(tài)變?yōu)樽枞麪顟B(tài)態(tài),一定會引起另一進(jìn)程從運(yùn)行狀態(tài)變?yōu)榫途w狀態(tài)。
(3)一個進(jìn)程從阻塞狀態(tài)變?yōu)榫途w狀態(tài),一定會引起另一個進(jìn)程從就緒狀態(tài)變?yōu)檫\(yùn)行狀態(tài)。因果變遷如果一個狀態(tài)變遷是由于另一個狀態(tài)變遷引起的,則這兩個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)都有“掛起”和“解掛”一個進(jìn)程的功能,原因在于:系統(tǒng)有時可能出故障或某些功能受到破壞,需要暫時將系統(tǒng)中的進(jìn)程掛起,以便故障消除后再恢復(fù)。用戶在執(zhí)行自己的作業(yè)過程中,要求掛起他的進(jìn)程,以便進(jìn)行某些檢查和改正。系統(tǒng)中負(fù)載過重,資源相對不足,造成系統(tǒng)效率下降,需要掛起一部分進(jìn)程以調(diào)整系統(tǒng)負(fù)荷進(jìn)程的掛起和解掛為了更好的管理和調(diào)度進(jìn)程及適67具有掛起功能的進(jìn)程狀態(tài)變化事件發(fā)生掛起解除掛起時間片完成被調(diào)度掛起時間發(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):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有以下幾種情況:等待到掛起等待:沒有進(jìn)程處于就緒狀態(tài)或就緒進(jìn)程要求更多內(nèi)存資源時,會進(jìn)行這種轉(zhuǎn)換,以提交新進(jìn)程或運(yùn)行就緒進(jìn)程;就緒到掛起就緒:當(dāng)有高優(yōu)先級等待(系統(tǒng)認(rèn)為會很快就緒的)進(jìn)程和低優(yōu)先級就緒進(jìn)程時,系統(tǒng)會選擇掛起低優(yōu)先級就緒進(jìn)程;運(yùn)行到掛起就緒:對搶先式分時系統(tǒng),當(dāng)有高優(yōu)先級掛起等待進(jìn)程因事件出現(xiàn)而進(jìn)入掛起就緒時,系統(tǒng)可能會把運(yùn)行進(jìn)程轉(zhuǎn)到掛起就緒狀態(tài);轉(zhuǎn)換掛起(Suspend):把一個進(jìn)程從內(nèi)存轉(zhuǎn)到外存;可能有70解掛(Activate):把一個進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以下幾種情況:掛起就緒到就緒:沒有就緒進(jìn)程或掛起就緒進(jìn)程優(yōu)先級高于就緒進(jìn)程時,會進(jìn)行這種轉(zhuǎn)換;掛起等待到等待:當(dāng)一個進(jìn)程釋放足夠內(nèi)存時,系統(tǒng)會把一個高優(yōu)先級掛起等待(系統(tǒng)認(rèn)為會很快出現(xiàn)所等待的事件)進(jìn)程;解掛(Activate):把一個進(jìn)程從外存轉(zhuǎn)到內(nèi)存;可能有以714、進(jìn)程的描述進(jìn)程程序塊進(jìn)程數(shù)據(jù)塊系統(tǒng)/用戶堆棧進(jìn)程控制塊進(jìn)程標(biāo)識信息進(jìn)程狀態(tài)信息進(jìn)程控制信息用戶堆棧共享地址空間用戶私有地址空間(代碼、數(shù)據(jù))進(jìn)程控制塊4、進(jìn)程的描述進(jìn)程程序塊進(jìn)程標(biāo)識信息進(jìn)程狀態(tài)信息進(jìn)程控制信72進(jìn)程控制塊(ProcessControlBlock)存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時,建立PCB,并伴隨進(jìn)程運(yùn)行的全過程,直到進(jìn)程撤消而撤消。用它來記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動變化過程。系統(tǒng)利用PCB來控制和管理進(jìn)程,PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。PCB就象我們的戶口。進(jìn)程與PCB是一一對應(yīng)的。進(jìn)程控制塊(ProcessControlBlock)存放73進(jìn)程控制塊的內(nèi)容包含以下三類信息:進(jìn)程標(biāo)志信息處理器狀態(tài)信息進(jìn)程控制信息進(jìn)程控制塊的內(nèi)容包含以下三類信息:74進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:通常用系統(tǒng)中唯一的數(shù)字作為標(biāo)記,該數(shù)字實(shí)際是該進(jìn)程的PCB在系統(tǒng)的PCB表中的表目序號。建立本進(jìn)程的進(jìn)程(父進(jìn)程)的標(biāo)志ID用戶標(biāo)記進(jìn)程標(biāo)志信息本進(jìn)程的標(biāo)志ID:75處理器狀態(tài)信息用戶使用的寄存器控制和狀態(tài)寄存器:包括程序計(jì)數(shù)器PC和條件寄存器(或程序狀態(tài)字PSW).堆棧指針處理器狀態(tài)信息用戶使用的寄存器76進(jìn)程控制信息調(diào)度和狀態(tài)信息:進(jìn)程的狀態(tài),進(jìn)程的調(diào)度優(yōu)先級,與調(diào)度有關(guān)的信息進(jìn)程在有關(guān)隊(duì)列中的鏈接指針進(jìn)程間的通信信息:包括標(biāo)志位、信號或信號量、消息隊(duì)列等主存使用信息:包括分給進(jìn)程的主存大小和位置進(jìn)程使用的其他資源信息進(jìn)程得到有關(guān)服務(wù)的優(yōu)先級進(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織起來,以下有三種方法:單表:把所有的PCB組織在一個表格中。索引表:同一狀態(tài)的進(jìn)程歸入一個index表(由index指向PCB),多個狀態(tài)對應(yīng)多個不同的index表。各狀態(tài)的進(jìn)程形成不同的索引表:就緒索引表、阻塞索引表鏈表:分別把具有相同狀態(tài)的所有進(jìn)程的PCB按優(yōu)先級排成一個或多個隊(duì)列,同一狀態(tài)的進(jìn)程其PCB成一鏈表,多個狀態(tài)對應(yīng)多個不同的鏈表各狀態(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)換,通常由具有特定功能的原語完成。建立進(jìn)程原語撤銷進(jìn)程原語阻塞進(jìn)程原語喚醒進(jìn)程原語掛起進(jìn)程原語解除掛起進(jìn)程原語改變優(yōu)先數(shù)原語調(diào)度進(jìn)程原語5、進(jìn)程控制創(chuàng)建、撤消進(jìn)程以及完成進(jìn)程各狀態(tài)之間81創(chuàng)建進(jìn)程引起創(chuàng)建進(jìn)程的事件用戶登錄。
作業(yè)調(diào)度。
提供服務(wù)。
應(yīng)用請求。
創(chuàng)建進(jìn)程的過程創(chuàng)建一個PCB賦予一個統(tǒng)一進(jìn)程標(biāo)識符為進(jìn)程映象分配空間初始化進(jìn)程控制塊許多默認(rèn)值(如:狀態(tài)為New,無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ù),希望終止時,調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤消原語)撤消進(jìn)程。在一般操作系統(tǒng)中進(jìn)程撤消的系統(tǒng)調(diào)用是:kill
UNIX系統(tǒng)中是exit()。引起進(jìn)程撤銷的事件
正常結(jié)束。
異常結(jié)束。
外界干預(yù)。
撤消進(jìn)程進(jìn)程完成其任務(wù),希望終止時,調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(85撤消進(jìn)程兩種策略:僅撤銷指定標(biāo)識符的進(jìn)程;撤銷一個子進(jìn)程及該子進(jìn)程的所有子孫。撤消進(jìn)程兩種策略:86撤消進(jìn)程根據(jù)撤銷進(jìn)程標(biāo)識號,從相應(yīng)隊(duì)列中找到它的PCB將該進(jìn)程擁有的資源歸還給父進(jìn)程或操作系統(tǒng)若該進(jìn)程擁有子進(jìn)程,應(yīng)先撤銷元的所有子孫進(jìn)程,以防它們脫離控制被撤銷進(jìn)程出隊(duì),將它的PCB歸還到PCB池撤消進(jìn)程根據(jù)撤銷進(jìn)程標(biāo)識號,從相應(yīng)隊(duì)列中找到它的PCB87系操作系統(tǒng)課件388進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件
請求系統(tǒng)服務(wù)。
啟動某種操作并等待操作完成。
等待合作進(jìn)程的協(xié)同配合。
系統(tǒng)進(jìn)程無新工作可做。進(jìn)程的阻塞和喚醒引起進(jìn)程阻塞和喚醒的事件89進(jìn)程的阻塞和喚醒進(jìn)程阻塞過程停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場信息;將進(jìn)程狀態(tài)改為阻塞態(tài),并將其PCB入相應(yīng)的阻塞隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度程序。進(jìn)程喚醒過程首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該P(yáng)CB插入到就緒隊(duì)列中。進(jìn)程的阻塞和喚醒進(jìn)程阻塞過程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)程占有處理器時,新老進(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)境合稱為進(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)程上下文組成:用戶級上下文:由用戶程序塊、用戶數(shù)據(jù)塊和用戶堆棧組成的進(jìn)程地址空間。系統(tǒng)級上下文:又進(jìn)程控制塊、內(nèi)存管理信息、進(jìn)程環(huán)境塊,及系統(tǒng)堆棧等組成的進(jìn)程地址空間。寄存器上下文:由PSW寄存器和各類控制寄存器、地址寄存器、通用寄存器組成、用戶棧指針等組成。進(jìn)程切換進(jìn)程上下文組成:92進(jìn)程切換進(jìn)程切換步驟:保存被中斷進(jìn)程的處理器現(xiàn)場信息修改被中斷進(jìn)程的進(jìn)程控制塊的有關(guān)信息,如進(jìn)程狀態(tài)等把被中斷進(jìn)程的PCB加入有關(guān)隊(duì)列選擇下一個占有處理器運(yùn)行的進(jìn)程修改被選中進(jìn)程的PCB的有關(guān)信息根據(jù)被選中進(jìn)程設(shè)置操作系統(tǒng)用到的地址轉(zhuǎn)換和存儲保護(hù)信息根據(jù)被選中進(jìn)程恢復(fù)處理器現(xiàn)場進(jìn)程切換進(jìn)程切換步驟:93改變優(yōu)先級數(shù)原語進(jìn)程的優(yōu)先級數(shù)是表示進(jìn)程的重要性及運(yùn)行的優(yōu)先級,進(jìn)程調(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年旅游服務(wù)代理合同樣本
- 2025年度綠植花卉租賃與城市景觀提升合同范本4篇
- 2025年度綠化工程環(huán)境保護(hù)與節(jié)能減排合同范本4篇
- 2025版綠色建筑項(xiàng)目租賃與能源管理合同4篇
- 2025年度個人二手房交易安全協(xié)議范本4篇
- 個人間短期資金周轉(zhuǎn)合同書版
- 個人買賣合同范文(2024版)
- 二零二五年度風(fēng)力發(fā)電機(jī)組安裝及運(yùn)營維護(hù)協(xié)議3篇
- 2025年度個稅起征點(diǎn)調(diào)整下簽勞務(wù)合同稅務(wù)籌劃合作協(xié)議
- 二零二五年度素食餐飲品牌授權(quán)合作合同
- 車站值班員(中級)鐵路職業(yè)技能鑒定考試題及答案
- 極簡統(tǒng)計(jì)學(xué)(中文版)
- JTG∕T E61-2014 公路路面技術(shù)狀況自動化檢測規(guī)程
- 高中英語短語大全(打印版)
- 2024年資格考試-對外漢語教師資格證筆試參考題庫含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以兩位數(shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計(jì)算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 五年級數(shù)學(xué)應(yīng)用題100道
評論
0/150
提交評論