




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章并發(fā)處理第四章并發(fā)處理4.1并發(fā)活動(dòng)--進(jìn)程的引入操作系統(tǒng)的特性之一是并發(fā)與共享,即在系統(tǒng)中(內(nèi)存)同時(shí)存在幾個(gè)相互獨(dú)立的程序,這些程序在系統(tǒng)中既交叉地運(yùn)行,又要共享系統(tǒng)中的資源,這就會(huì)引起一系列的問(wèn)題,包括:對(duì)資源的競(jìng)爭(zhēng)、運(yùn)行程序之間的通信、程序之間的合作與協(xié)同等。
要解決這些問(wèn)題,用程序的概念已經(jīng)不能描述程序在內(nèi)存中運(yùn)行的狀態(tài),必須引入新的概念--進(jìn)程。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.1程序的順序執(zhí)行一、概念一個(gè)程序由若干個(gè)程序段組成,而這些程序段的執(zhí)行必須是順序的,這種程序執(zhí)行的方式就稱為程序的順序執(zhí)行。例如:I1C1P1I2C2P2作業(yè)1作業(yè)24.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.1程序的順序執(zhí)行
二、程序順序執(zhí)行的特點(diǎn)1.順序性處理機(jī)嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每個(gè)操作必須在下一個(gè)操作開始之前結(jié)束。2.封閉性程序一旦開始執(zhí)行,其計(jì)算結(jié)果不受外界的影響,當(dāng)程序的初始條件給定之后,其后的狀態(tài)只能由程序本身確定,即只有本程序才能改變它。3.可再現(xiàn)性程序執(zhí)行的結(jié)果與初始條件有關(guān),而與執(zhí)行時(shí)間無(wú)關(guān)。即只要程序的初始條件相同,它的執(zhí)行結(jié)果是相同的,不論它在什么時(shí)間執(zhí)行,也不管計(jì)算機(jī)的運(yùn)行速度。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.2程序的并發(fā)執(zhí)行例:在系統(tǒng)中有n個(gè)作業(yè),每個(gè)作業(yè)都有三個(gè)處理步驟,輸入數(shù)據(jù)、處理、輸出,即Ii,Ci,Pi(i=1,2,3,...,n)。這些作業(yè)在系統(tǒng)中執(zhí)行時(shí)是對(duì)時(shí)間的偏序,有些操作必須在其它操作之前執(zhí)行,這是有序的,但有些操作是可以同時(shí)執(zhí)行的。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.2程序的并發(fā)執(zhí)行例如:I1、C1、P1的執(zhí)行必須嚴(yán)格按照I1,C1,P1的順序,而P1與C2,C1與I2,I3與P1是可以同時(shí)執(zhí)行的。I1I2C1I3C2I4C3P1P24.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.2程序的并發(fā)執(zhí)行程序并發(fā)執(zhí)行(定義)
若干個(gè)程序段同時(shí)在系統(tǒng)中運(yùn)行,這些程序的執(zhí)行在時(shí)間上是重迭的,一個(gè)程序段的執(zhí)行尚未結(jié)束,另一個(gè)程序段的執(zhí)行已經(jīng)開始,即使這種重迭是很小的,也稱這幾個(gè)程序段是并發(fā)執(zhí)行的。PQR并發(fā)執(zhí)行區(qū)4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.2程序的并發(fā)執(zhí)行程序并發(fā)執(zhí)行的描述
cobeginS1;S2;S3;...;SNcoend;Si(i=1,2,3,...,n)表示n個(gè)語(yǔ)句(程序段),這n個(gè)語(yǔ)句用cobegin和coend括起來(lái)表示這n個(gè)語(yǔ)句是可以并發(fā)執(zhí)行的。co是concurrent的頭兩個(gè)字符。這是Dijkstra提出的。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.2程序的并發(fā)執(zhí)行假設(shè)有一個(gè)程序有S0~Sn+1個(gè)語(yǔ)句,其中S1~Sn語(yǔ)句是并發(fā)執(zhí)行的,程序如下:
S0;cobeginS1;S2;S3;...;SNcoend;Sn+1;S0Sn+1S1S2S3Sn……4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)行--謄抄
一、一個(gè)循環(huán)程序順序執(zhí)行的謄抄算法1:輸入:f輸出:g{while(f不為空)
{input;output;}}由這個(gè)程序完成謄抄工作是不會(huì)出錯(cuò)的。但是效率不高!4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)行--謄抄
二、兩個(gè)程序并發(fā)執(zhí)行完成謄抄
設(shè)有一臺(tái)標(biāo)準(zhǔn)輸入設(shè)備(鍵盤),和一臺(tái)標(biāo)準(zhǔn)輸出設(shè)備(顯示器或打印機(jī)),輸入程序負(fù)責(zé)從標(biāo)準(zhǔn)設(shè)備中讀取一個(gè)字符,送緩沖區(qū)中。輸出程序從緩沖區(qū)中取數(shù)據(jù),送標(biāo)準(zhǔn)設(shè)備輸出標(biāo)準(zhǔn)輸入(鍵盤)緩沖區(qū)標(biāo)準(zhǔn)輸出(打印機(jī))fg輸入程序輸出程序4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)行--謄抄
二、兩個(gè)程序并發(fā)執(zhí)行完成謄抄算法:2{cobeginwhile(不為結(jié)束符)/*輸入程序段*/{input;/*從標(biāo)準(zhǔn)輸入設(shè)備讀入一個(gè)數(shù)據(jù)*/send;/*將讀入的數(shù)據(jù)送到buffer*/}while(buffer不為空)/*輸出程序段*/{receive;/*從buffer中取數(shù)據(jù)*/output;/*送打印機(jī)輸出*/}coend}4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)現(xiàn)--謄抄
二、兩個(gè)程序并發(fā)執(zhí)行完成謄抄這兩個(gè)程序段并發(fā)執(zhí)行時(shí)可能出現(xiàn)如下情況:1、輸出程序運(yùn)行的速度比輸入程序快時(shí),有些輸出會(huì)重復(fù);如輸入送入了一個(gè)字符“A”,輸出取出打印“A”,當(dāng)輸入還未送入新的數(shù)據(jù),輸出程序已執(zhí)行,又取出“A”打印,這樣“A”的輸出就重復(fù)了,出錯(cuò)。標(biāo)準(zhǔn)輸入(鍵盤)緩沖區(qū)標(biāo)準(zhǔn)輸出(打印機(jī))fg輸入程序輸出程序AA二、兩個(gè)程序并發(fā)執(zhí)行完成謄抄2、輸入程序執(zhí)行的速度比輸出程序快時(shí),有些數(shù)據(jù)會(huì)丟失;如輸入程序送入一個(gè)字符“B”,緊接著(當(dāng)輸出程序還未取走字符“B”)又送入字符“N”,這時(shí)輸出程序取走的是“N”,“B”就丟失了。標(biāo)準(zhǔn)輸入(鍵盤)緩沖區(qū)標(biāo)準(zhǔn)輸出(打印機(jī))fg輸入程序輸出程序BN4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)現(xiàn)--謄抄
三、三個(gè)并發(fā)執(zhí)行程序的謄抄get程序負(fù)責(zé)從輸入序列f中讀取字符并送到緩沖區(qū)s中;copy程序把緩沖區(qū)s中的數(shù)據(jù)復(fù)制到緩沖區(qū)t中去;put程序從緩沖區(qū)t中取出數(shù)據(jù)打印。標(biāo)準(zhǔn)輸入(鍵盤)緩沖區(qū)s標(biāo)準(zhǔn)輸出(打印機(jī))fggetcopy緩沖區(qū)tput4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.3并發(fā)執(zhí)行實(shí)現(xiàn)--謄抄
三、三個(gè)并發(fā)執(zhí)行程序的謄抄算法3輸入:f輸出:g{if(f不為空)
{get(s,f);
while(謄抄未完成)
{t=s;
cobeginput(t,g);
get(s,f);
coend}}}假設(shè)有兩個(gè)緩沖區(qū),每個(gè)緩沖區(qū)只存放一個(gè)字符,get程序負(fù)責(zé)從輸入序列f中讀一個(gè)字符,然后,送到緩沖區(qū)s中,copy程序負(fù)責(zé)將s中的字符復(fù)制到t中,put負(fù)責(zé)從t中提取字符打印。這個(gè)算法是正確的。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.4與時(shí)間有關(guān)的錯(cuò)誤假定f系列中有記錄
f=(R1,R2,...,Rn)g=()在謄抄完成后:
f=()g=(R1,R2,...,Rn)算法中的:copy≡t=sput≡put(t,g)get≡get(s,f)4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.4與時(shí)間有關(guān)的錯(cuò)誤若程序錯(cuò)寫成:while(謄抄未完成){cobegincopy;put;get;coend}初始狀態(tài):
f=(R1,R2,...,Rn)s=()t=()g=()首先執(zhí)行了get(s,f)f=(R1,R2,...,Rn)s=R1,t=(),g=()4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.4與時(shí)間有關(guān)的錯(cuò)誤然后,copy,put,get三個(gè)程序段并發(fā)執(zhí)行,就有六種組合:1、copy;put;get導(dǎo)致結(jié)果:g=(R1,R2)2、copy;get;put導(dǎo)致結(jié)果:g=(R1,R2)3、put;copy;get導(dǎo)致結(jié)果:g=(R1,R1)4、put;get;copy導(dǎo)致結(jié)果:g=(R1,R1)5、get;copy;put導(dǎo)致結(jié)果:g=(R1,R3)6、get;put;copy導(dǎo)致結(jié)果:g=(R1,R1)這就是與時(shí)間有關(guān)的錯(cuò)誤。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.5程序并發(fā)執(zhí)行的特點(diǎn)一、失去了程序的封閉性
如果程序執(zhí)行的結(jié)果是一個(gè)與時(shí)間無(wú)關(guān)的函數(shù),即具有封閉性。若一個(gè)程序的執(zhí)行可改變另一個(gè)程序的變量,像兩個(gè)并發(fā)程序完成謄抄的例子,程序執(zhí)行的結(jié)果不僅依賴于程序的初始條件,還依賴于程序執(zhí)行時(shí)的相對(duì)速度,在這種情況下就失去了程序的封閉性。教材P65介紹了兩個(gè)并發(fā)程序共享變量的例子4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.5程序并發(fā)執(zhí)行的特點(diǎn)二、程序與計(jì)算不再一一對(duì)應(yīng)在程序順序執(zhí)行時(shí),一個(gè)程序總是對(duì)應(yīng)一個(gè)具體的計(jì)算,但在程序的并發(fā)執(zhí)行時(shí),可能有多用戶共享使用同一個(gè)程序,但處理(計(jì)算)的對(duì)象卻是不同的,例如,在多用戶環(huán)境下,可能同時(shí)有多個(gè)用戶調(diào)用C語(yǔ)言的編譯程序,這就是典型的一個(gè)程序?qū)?yīng)多個(gè)用戶源程序的情況。4.1并發(fā)活動(dòng)--進(jìn)程的引入
4.1.5程序并發(fā)執(zhí)行的特點(diǎn)三、程序并發(fā)執(zhí)行的相互制約在多道程序設(shè)計(jì)的環(huán)境下,程序是并發(fā)執(zhí)行的。即系統(tǒng)中有多道程序在“同時(shí)”執(zhí)行,這些程序之間要共享系統(tǒng)的資源,程序之間有合作(通信)的關(guān)系。合作與競(jìng)爭(zhēng)產(chǎn)生一系列的矛盾,這些矛盾實(shí)際上是一種相互制約,有直接的,也有間接。
回頭來(lái),我們?cè)倏纯床僮飨到y(tǒng)的第三個(gè)特性:不確定性*4.2進(jìn)程概念(process)
4.2.1進(jìn)程的定義
在多道程序設(shè)計(jì)的環(huán)境下,為了描述程序在計(jì)算機(jī)系統(tǒng)內(nèi)的執(zhí)行情況,必須引入新的概念--進(jìn)程。進(jìn)程的概念來(lái)自于麻省理工的MULTICS、IBM的TSS/360,在IBM的OS/360/370系統(tǒng)中也曾叫過(guò)任務(wù)(task)。4.2進(jìn)程概念(process)
4.2.1進(jìn)程的定義
進(jìn)程的定義(枚舉法)行為的一個(gè)規(guī)則叫做程序,程序在處理機(jī)上執(zhí)行時(shí)所發(fā)生的活動(dòng)稱為進(jìn)程(Dijkstra)進(jìn)程是這樣的計(jì)算部分,它是可以和其它計(jì)算并行的一個(gè)計(jì)算。(Donovan)進(jìn)程(有時(shí)稱為任務(wù))是一個(gè)程序與其數(shù)據(jù)一道通過(guò)處理機(jī)的執(zhí)行所發(fā)生的活動(dòng)。(Alan.C.Shaw)進(jìn)程是執(zhí)行中的程序。(KenThompsonandDennisRitchie)教材上給出的進(jìn)程的定義:進(jìn)程,即是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。4.2進(jìn)程概念(process)
4.2.1進(jìn)程的定義
進(jìn)程與程序的區(qū)別與聯(lián)系:1、程序是指令的集合,是靜態(tài)的概念。進(jìn)程是程序在處理機(jī)上的一次執(zhí)行的過(guò)程,是動(dòng)態(tài)的概念。程序可以作為軟件資料長(zhǎng)期保存。進(jìn)程是有生命周期的。2、進(jìn)程是一個(gè)獨(dú)立的運(yùn)行單位,能與其它進(jìn)程并行(并發(fā))活動(dòng)。而程序則不是。3、進(jìn)程是競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)有限資源的基本單位,也是進(jìn)行處理機(jī)調(diào)度的基本單位。4、一個(gè)程序可以作為多個(gè)進(jìn)程的運(yùn)行程序,一個(gè)進(jìn)程也可以運(yùn)行多個(gè)程序。4.2進(jìn)程概念(process)
4.2.1進(jìn)程的定義
進(jìn)程與程序的區(qū)別與聯(lián)系:例子:光盤(CD、VCD)光盤(程序)放光盤的活動(dòng)(進(jìn)程)4.2進(jìn)程概念(process)
4.2.2進(jìn)程的類型在系統(tǒng)中同時(shí)有多個(gè)進(jìn)程存在,但歸納起來(lái)有兩大類:1、系統(tǒng)進(jìn)程系統(tǒng)進(jìn)程起著資源管理和控制的作用。
或者:執(zhí)行操作系統(tǒng)核心代碼的進(jìn)程。2、用戶進(jìn)程執(zhí)行用戶程序的進(jìn)程。4.2進(jìn)程概念(process)
4.2.2進(jìn)程的類型系統(tǒng)進(jìn)程與用戶進(jìn)程的區(qū)別:1、系統(tǒng)進(jìn)程被分配一個(gè)初始的資源集合,這些資源可以為它獨(dú)占,也能以最高優(yōu)先權(quán)的資格使用。用戶進(jìn)程通過(guò)系統(tǒng)服務(wù)請(qǐng)求的手段競(jìng)爭(zhēng)使用系統(tǒng)資源;2、用戶進(jìn)程不能直接做I/O操作,而系統(tǒng)進(jìn)程可以做顯示的、直接的I/O操作。3、系統(tǒng)進(jìn)程在管態(tài)下活動(dòng),而用戶進(jìn)程則在用戶態(tài)(目態(tài))下活動(dòng)。另一種分類:計(jì)算進(jìn)程,I/O進(jìn)程等注意:在UNIX系統(tǒng)中沒(méi)有這樣對(duì)進(jìn)程進(jìn)行分類。4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)一、進(jìn)程的基本狀態(tài)進(jìn)程在系統(tǒng)中的活動(dòng)規(guī)律是:執(zhí)行暫停執(zhí)行進(jìn)程的三種基本狀態(tài):
運(yùn)行狀態(tài)就緒狀態(tài)
等待狀態(tài)(又稱阻塞、掛起、睡眠)4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)
一、進(jìn)程的基本狀態(tài)1、就緒狀態(tài)(Ready)
存在于處理機(jī)調(diào)度隊(duì)列中的那些進(jìn)程,它們已經(jīng)準(zhǔn)備就緒,一旦得到CPU,就立即可以運(yùn)行,這些進(jìn)程所取的狀態(tài)為就緒狀態(tài)。(有多個(gè)進(jìn)程處于此狀態(tài))2、運(yùn)行狀態(tài)(Running)
當(dāng)進(jìn)程由調(diào)度/分派程序分派后,得到CPU控制權(quán),它的程序正在運(yùn)行,該進(jìn)程所處的狀態(tài)為運(yùn)行狀態(tài)。(在系統(tǒng)中,總只有一個(gè)進(jìn)程處于此狀態(tài))3、等待狀態(tài)(Wait)
若一個(gè)進(jìn)程正在等待某個(gè)事件的發(fā)生(如等待I/O的完成),而暫停執(zhí)行,這時(shí),即使給它CPU時(shí)間,它也無(wú)法執(zhí)行,則稱該進(jìn)程處于等待狀態(tài)。4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)
二、進(jìn)程狀態(tài)變遷圖進(jìn)程的狀態(tài)不是固定不變的,而是在不斷變換。就緒運(yùn)行等待調(diào)度分派時(shí)間片到等待事件發(fā)生新建進(jìn)程事件已發(fā)生4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)
二、進(jìn)程狀態(tài)變遷圖運(yùn)行
等待等待某事件的發(fā)生(如等待I/O完成)等待就緒事件已經(jīng)發(fā)生(如I/O完成)運(yùn)行就緒時(shí)間片到(例如,兩節(jié)課時(shí)間到,下課)新建進(jìn)程就緒新創(chuàng)建的進(jìn)程進(jìn)入就緒狀態(tài)就緒運(yùn)行當(dāng)處理機(jī)空閉時(shí),由調(diào)度(分派)程序從就緒進(jìn)程隊(duì)列中選擇一個(gè)進(jìn)程占用CPU。4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)三、作業(yè)、作業(yè)狀態(tài)及轉(zhuǎn)移在批處理系統(tǒng)中一個(gè)用戶程序的執(zhí)行的全過(guò)程稱為一個(gè)作業(yè),當(dāng)作業(yè)提交給計(jì)算中心(或機(jī)房)后,由機(jī)房工作人員錄入到存儲(chǔ)設(shè)備上(如磁帶、磁盤等),然后,由作業(yè)調(diào)度程序按某種調(diào)度策略將作業(yè)調(diào)入計(jì)算機(jī)系統(tǒng)執(zhí)行,執(zhí)行完成后,由作業(yè)調(diào)度程序做作業(yè)的善后處理工作,至此一個(gè)作業(yè)完成。4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)
三、作業(yè)、作業(yè)狀態(tài)及轉(zhuǎn)移我們把上述對(duì)作業(yè)的操作歸納成四種狀態(tài):1、提交狀態(tài)用戶將自己的程序和數(shù)據(jù)放在輸入設(shè)備上,等待;2、后備狀態(tài)
系統(tǒng)響應(yīng)用戶的要求,將作業(yè)帶領(lǐng)到直接存取的后援存儲(chǔ)器中,等待調(diào)度;3、執(zhí)行狀態(tài)
從作業(yè)計(jì)算開始,到計(jì)算完成為止,該作業(yè)處于執(zhí)行狀態(tài)。4、完成狀態(tài)
從作業(yè)計(jì)算完成開始,到善后處理完畢退出系統(tǒng)為止,稱為作業(yè)完成狀態(tài)。4.2進(jìn)程概念(process)
4.2.3進(jìn)程的狀態(tài)
三、作業(yè)、作業(yè)狀態(tài)及轉(zhuǎn)移4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述在系統(tǒng)中一個(gè)進(jìn)程存在:
進(jìn)程控制塊(數(shù)據(jù)結(jié)構(gòu))
進(jìn)程的執(zhí)行程序(一個(gè)可執(zhí)行文件)進(jìn)程總是位于某個(gè)隊(duì)列(就緒、等待某事件隊(duì)列)
處于某種狀態(tài)(運(yùn)行、就緒、等待)占用某些系統(tǒng)資源(內(nèi)存,打開某些文件、處理機(jī)、外設(shè))4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述進(jìn)程控制塊
PCB(ProcessControlBlock)
存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時(shí),建立PCB,并伴隨進(jìn)程運(yùn)行的全過(guò)程,直到進(jìn)程撤銷而撤銷。PCB就像我們的戶口。4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述
進(jìn)程控制塊PCB
1、進(jìn)程標(biāo)識(shí)符name
每個(gè)進(jìn)程都必須有一個(gè)唯一的標(biāo)識(shí)符,可以是字符串,也可以是一個(gè)數(shù)字。UNIX系統(tǒng)中就是一個(gè)整型數(shù)。在進(jìn)程創(chuàng)建時(shí)由系統(tǒng)賦予。
2、進(jìn)程當(dāng)前狀態(tài)status
說(shuō)明進(jìn)程當(dāng)前所處的狀態(tài)。為了管理的方便,系統(tǒng)設(shè)計(jì)時(shí)會(huì)將相同的狀態(tài)的進(jìn)程組成一個(gè)隊(duì)列,如就緒進(jìn)程隊(duì)列,等待進(jìn)程則要根據(jù)等待的事件組成多個(gè)等待隊(duì)列,如等待打印機(jī)隊(duì)列、等待磁盤I/O完成隊(duì)列等等。4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述
進(jìn)程控制塊PCB3、當(dāng)前隊(duì)列指針next登記與本進(jìn)程處于同一隊(duì)列的下一個(gè)進(jìn)程的PCB的地址。4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述
進(jìn)程控制塊PCB4、總鏈指針all-q-next5、執(zhí)行程序開始地址start-addr6、進(jìn)程優(yōu)先級(jí)priority
進(jìn)程的優(yōu)先級(jí)反映進(jìn)程的緊迫程序,通常由用戶指定和系統(tǒng)設(shè)置。UNIX系統(tǒng)采用用戶設(shè)置和系統(tǒng)計(jì)算相結(jié)合的方式確定進(jìn)程的優(yōu)先級(jí)。4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述
進(jìn)程控制塊PCB7、CPU現(xiàn)場(chǎng)保護(hù)區(qū)cpustatus
當(dāng)進(jìn)程因某種原因不能繼續(xù)占用CPU時(shí)(等待打印機(jī)),釋放CPU,這時(shí)就要將CPU的各種狀態(tài)信息保護(hù)起來(lái),為將來(lái)再次得到處理機(jī)恢復(fù)CPU的各種狀態(tài),繼續(xù)運(yùn)行。例如,我們下課,這時(shí)我要記住這次講到什么地方,下次課接著講。8、通信信息communicationinformation
是指某個(gè)進(jìn)程在運(yùn)行的過(guò)程中要與其它進(jìn)程進(jìn)行通信,該區(qū)記錄有關(guān)進(jìn)程通信方面的信息。4.2進(jìn)程概念(process)
4.2.4進(jìn)程描述
進(jìn)程控制塊PCB9、家族聯(lián)系processfamily
有的系統(tǒng)允許一個(gè)進(jìn)程可創(chuàng)建自已的子進(jìn)程,子進(jìn)程還可以創(chuàng)建,一個(gè)進(jìn)程往往處在一個(gè)家族之中,就需要記錄進(jìn)程在家族中位置的信息。10、占有資源清單own-resource
進(jìn)程占用系統(tǒng)資源的情況,不同的系統(tǒng)的處理差別很大,UNIX系統(tǒng)中就沒(méi)有此項(xiàng)。4.3進(jìn)程控制
4.3.1進(jìn)程控制的概念
進(jìn)程是有生命周期的,產(chǎn)生、運(yùn)行、暫停、終止。對(duì)進(jìn)程的這些操作叫進(jìn)程控制。
進(jìn)程控制的職責(zé)是對(duì)系統(tǒng)中全部進(jìn)程實(shí)施有效的管理,它是處理機(jī)管理的部分(另一部分是進(jìn)程調(diào)度),當(dāng)系統(tǒng)允許多進(jìn)程并發(fā)執(zhí)行時(shí),為了實(shí)現(xiàn)共享、協(xié)調(diào)并發(fā)進(jìn)程的關(guān)系,處理機(jī)管理必須提供對(duì)進(jìn)程實(shí)行有效的管理。4.3進(jìn)程控制
4.3.1進(jìn)程控制的概念
進(jìn)程控制包括:
進(jìn)程創(chuàng)建、
進(jìn)程撤消、
進(jìn)程阻塞、
進(jìn)程喚醒。
這些操作都要對(duì)應(yīng)地執(zhí)行一個(gè)特殊的程序段(操作系統(tǒng)核心程序),同時(shí)系統(tǒng)也通過(guò)系統(tǒng)調(diào)用給用戶提供進(jìn)程控制的功能。教材上叫原語(yǔ)(一種特殊的系統(tǒng)調(diào)用)。4.3進(jìn)程控制
4.3.1進(jìn)程控制的概念運(yùn)行狀態(tài)
等待狀態(tài)
進(jìn)程阻塞等待狀態(tài)
就緒狀態(tài)進(jìn)程喚醒新建進(jìn)程置為就緒狀態(tài)
進(jìn)程創(chuàng)建進(jìn)程終止(消亡)
進(jìn)程撤消就緒狀態(tài)
運(yùn)行狀態(tài)
進(jìn)程調(diào)度4.3進(jìn)程控制
4.3.1進(jìn)程控制的概念
在UNIX系統(tǒng)中進(jìn)程控制的系統(tǒng)調(diào)用有:
fork()創(chuàng)建子進(jìn)程
sleep()進(jìn)程睡眠
exit()進(jìn)程自己終止(自殺)
wait()(父)等待子進(jìn)程終止
wakeup()
進(jìn)程喚醒在4.9節(jié)介紹。4.3進(jìn)程控制
4.3.2進(jìn)程創(chuàng)建在UNIX系統(tǒng)中用戶鍵入一個(gè)命令(如date,ps,ls),shell就創(chuàng)建一個(gè)進(jìn)程。一個(gè)程序(可執(zhí)行的)如果可分成幾個(gè)程序段,并且這些程序段可并發(fā)執(zhí)行,用戶程序可使用創(chuàng)建程序的系統(tǒng)調(diào)用創(chuàng)建多個(gè)進(jìn)程,每個(gè)進(jìn)程執(zhí)行一個(gè)程序段。例如,放VCD程序。進(jìn)程創(chuàng)建類似于人出生后要到派出所報(bào)戶口。4.3進(jìn)程控制
4.3.2進(jìn)程創(chuàng)建進(jìn)程創(chuàng)建系統(tǒng)調(diào)用:
create(name,priority,start-addr)UNIX系統(tǒng):
fork()4.3進(jìn)程控制
4.3.2進(jìn)程創(chuàng)建4.3進(jìn)程控制
4.3.3進(jìn)程撤銷
進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤銷進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤銷原語(yǔ))撤銷進(jìn)程。相當(dāng)于一個(gè)人死亡后,家人要去派出所銷戶口。
在一般操作系統(tǒng)中進(jìn)程撤銷的系統(tǒng)調(diào)用是:killUNIX系統(tǒng)中是exit()。
4.3進(jìn)程控制
4.3.3進(jìn)程撤銷4.3進(jìn)程控制
4.3.3進(jìn)程撤銷4.3進(jìn)程控制
4.3.4進(jìn)程掛起
當(dāng)一個(gè)處在運(yùn)行狀態(tài)的進(jìn)程,因等待某個(gè)事件的發(fā)生(如等待打印機(jī))而不能繼續(xù)運(yùn)行時(shí),將調(diào)用進(jìn)程掛起系統(tǒng)調(diào)用,把進(jìn)程的狀態(tài)置為阻塞狀態(tài),并調(diào)用進(jìn)程調(diào)度程序(等于讓出處理機(jī))。在UNIX系統(tǒng)中進(jìn)程掛起調(diào)用sleep(chan,pri)。4.3進(jìn)程控制
4.3.4進(jìn)程掛起
進(jìn)程從運(yùn)行狀態(tài)轉(zhuǎn)換成阻塞狀態(tài)是由進(jìn)程掛起原語(yǔ)實(shí)現(xiàn)的,因此,調(diào)用進(jìn)程掛起操作是在進(jìn)程處于運(yùn)行狀態(tài)下執(zhí)行的。它的執(zhí)行將引起等待某事件的隊(duì)列的改變.例如,進(jìn)程是因等待打印機(jī)而進(jìn)入阻塞狀態(tài),則該進(jìn)程將加入到等待打印機(jī)的隊(duì)列。進(jìn)程掛起系統(tǒng)調(diào)用的算法和隊(duì)列變化如下。4.3進(jìn)程控制
4.3.4進(jìn)程掛起進(jìn)程掛起的內(nèi)部調(diào)用形式(UNIX系統(tǒng)):
sleep(chan,pri)
其中:chan進(jìn)程掛起(睡眠)的原因;
pri進(jìn)程被喚醒后的優(yōu)先級(jí)
一般調(diào)用形式:
susp(chan)
其中:chan進(jìn)程等待的原因4.3進(jìn)程控制
4.3.4進(jìn)程掛起4.3進(jìn)程控制
4.3.4進(jìn)程掛起4.3進(jìn)程控制
4.3.5進(jìn)程喚醒
一個(gè)正在運(yùn)行的進(jìn)程會(huì)因等待某事件(例如,等待打印機(jī))的發(fā)生,由運(yùn)行狀態(tài)轉(zhuǎn)換成阻塞狀態(tài),當(dāng)它等待的事件發(fā)生后,這個(gè)進(jìn)程將由阻塞狀態(tài)轉(zhuǎn)換成就緒狀態(tài)。這種轉(zhuǎn)換由進(jìn)程喚醒操作完成。
調(diào)用進(jìn)程喚醒操作一般在中斷處理、進(jìn)程通信等過(guò)程中。例如,打印機(jī)完成中斷處理程序,在完成了打印完成的操作后,就去檢查等待打印機(jī)的隊(duì)列,若不為空,則調(diào)用進(jìn)程喚醒操作,喚醒一個(gè)(或多個(gè))等待打印機(jī)的進(jìn)程。
4.3進(jìn)程控制
4.3.5進(jìn)程喚醒進(jìn)程喚醒原語(yǔ)的形式:
wakeup(chan)
其中:chan喚醒進(jìn)程阻塞的原因。4.3進(jìn)程控制
4.3.5進(jìn)程喚醒算法:wakeup輸入:chan:等待的事件(阻塞原因)輸出:無(wú){
找到chan的等待隊(duì)列的指針;
for(該隊(duì)列不為空)
{從隊(duì)列中移出一個(gè)進(jìn)程;置進(jìn)程狀態(tài)為“就緒”,并加入到就緒隊(duì)列;
}}4.3進(jìn)程控制
4.3.5進(jìn)程喚醒
按此算法,是把等待在chan事件上的所有進(jìn)程喚醒,類似于UNIX系統(tǒng)的處理方式。也有的系統(tǒng)只喚醒一個(gè)等待chan事件的進(jìn)程,若這樣處理,等待隊(duì)列就要按某種優(yōu)先級(jí)排隊(duì)。
進(jìn)程喚醒操作會(huì)引起就緒隊(duì)列和等待chan事件的等待隊(duì)列發(fā)生變化。4.4進(jìn)程的相互制約關(guān)系
在多道程序的環(huán)境中,系統(tǒng)中的多個(gè)進(jìn)程可以并發(fā)執(zhí)行,同時(shí)它們又要共享系統(tǒng)中的資源,這些資源有些是可共享使用的,如磁盤,有些是以獨(dú)占方式使用的,如打印機(jī)。由此將會(huì)引起一系列的矛盾,產(chǎn)生錯(cuò)綜復(fù)雜的相互制約的關(guān)系。
產(chǎn)生這種錯(cuò)綜復(fù)雜的相互制約關(guān)系的原因有二:
資源共享
進(jìn)程合作4.5進(jìn)程互斥
4.5.1互斥的概念
引例:宿舍電話的使用打印機(jī)的使用
1.臨界資源:一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源。引例中的電話和打印機(jī)都屬于臨界資源。除此之外,還有內(nèi)存變量、指針、數(shù)組等等也是臨界資源。4.5進(jìn)程互斥
4.5.1互斥的概念2、臨界區(qū):每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段程序段稱為臨界區(qū)(臨界段)。4.5進(jìn)程互斥
4.5.1互斥的概念3.互斥定義:在操作系統(tǒng)中,當(dāng)某一進(jìn)程正在訪問(wèn)某臨界區(qū)時(shí),就不允許其它進(jìn)程進(jìn)入,否則就會(huì)發(fā)生(后果)無(wú)法估計(jì)的錯(cuò)誤。我們把進(jìn)程之間的這種相互制約的關(guān)系稱為互斥。例如:飛機(jī)定票系統(tǒng)中的機(jī)票庫(kù)4.5進(jìn)程互斥
4.5.1互斥的概念進(jìn)入臨界區(qū)的準(zhǔn)則:(1)每次至多有一個(gè)進(jìn)程處于臨界區(qū);(2)當(dāng)有若干個(gè)進(jìn)程欲進(jìn)入臨界區(qū)時(shí),應(yīng)在有限的時(shí)間內(nèi)使其進(jìn)入;(3)進(jìn)程在臨界區(qū)內(nèi)僅逗留有限的時(shí)間。4.5進(jìn)程互斥
4.5.2鎖和上鎖、開鎖操作解決進(jìn)程互斥的最簡(jiǎn)單的辦法是加鎖。
在系統(tǒng)中為每個(gè)臨界資源設(shè)置一個(gè)鎖位,
0表示資源可用,
1表示資源已被占用(不可用)。這樣當(dāng)一個(gè)進(jìn)程使用某個(gè)臨界資源之前必須完成下列操作:1、考察鎖位的值;2、若原來(lái)的值是為“0”,將鎖位置為“1”(占用該資源);3、若原來(lái)值是為“1”,(該資源已被別人占用),則轉(zhuǎn)到1。當(dāng)進(jìn)程使用完資源后,將鎖位置為“0“,稱為開鎖操作。4.5進(jìn)程互斥
4.5.2鎖和上鎖、開鎖操作4.5進(jìn)程互斥
4.5.2鎖和上鎖、開鎖操作
改進(jìn)的算法4.5進(jìn)程互斥
4.5.3用上鎖原語(yǔ)和開鎖原語(yǔ)實(shí)現(xiàn)互斥假設(shè)有兩個(gè)進(jìn)程共享打印機(jī),兩個(gè)進(jìn)程中使用打印機(jī)的程序段為臨界區(qū)。為保證打印的正確,設(shè)置打印機(jī)的鎖位print,其初值為“0”,表示打印機(jī)可用。4.5進(jìn)程互斥
4.5.3用上鎖原語(yǔ)和開鎖原語(yǔ)實(shí)現(xiàn)互斥4.6信號(hào)燈和P、V操作
4.6.1信號(hào)燈的概念信號(hào)燈的概念是由Dijkstra提出的(1968)。他把互斥的關(guān)鍵概念抽象到信號(hào)量這個(gè)概念中,信號(hào)量是一個(gè)被保護(hù)的變量,只有P操作、V操作和一種稱為信號(hào)量初始化操作才能訪問(wèn)和改變它的值。4.6信號(hào)燈和P、V操作
4.6.1信號(hào)燈的概念
信號(hào)燈的定義:信號(hào)燈是一個(gè)確定的二元組(s,q),s是一個(gè)具有非負(fù)初值的整型變量,q是一個(gè)初始狀態(tài)為空的排隊(duì)棧。
S代表資源的實(shí)體。在實(shí)際應(yīng)用中應(yīng)準(zhǔn)確地說(shuō)明s的意義和初值,每個(gè)信號(hào)燈都有一個(gè)隊(duì)列,其初始狀態(tài)為空。4.6信號(hào)燈和P、V操作
4.6.2P、V操作信號(hào)燈的值僅能由P、V操作來(lái)改變,對(duì)信號(hào)燈的P操作記為:P(S),P操作是一個(gè)原子操作。對(duì)信號(hào)燈的V操作記為:V(S),V操作是一個(gè)原子操作。在實(shí)際操作系統(tǒng)中,一般情況下是由機(jī)器硬件提供P、V操作的指令,當(dāng)然是原子操作,若機(jī)器不提供P、V操作的指令,則操作系統(tǒng)提供P、V操作原語(yǔ)。4.6信號(hào)燈和P、V操作
4.6.2P、V操作P操作:(1)s值減1;(2)若相減結(jié)果大于等于0,則進(jìn)程繼續(xù)執(zhí)行;(3)若結(jié)果小于0,則該進(jìn)程掛起。注:推起該進(jìn)程包括:保留調(diào)用進(jìn)程CPU現(xiàn)場(chǎng);置“等待”狀態(tài);入等待隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度;4.6信號(hào)燈和P、V操作
4.6.2P、V操作V操作:(1)s值加1;(2)若相加結(jié)果大于0,進(jìn)程繼續(xù)執(zhí)行;(3)否則,喚醒一個(gè)(或多個(gè))等待該信號(hào)燈的進(jìn)程,然后本進(jìn)程繼續(xù)執(zhí)行。4.6信號(hào)燈和P、V操作
4.6.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程互斥用兩個(gè)進(jìn)程共享打印機(jī)的例子設(shè)信號(hào)燈print表示打印機(jī),初值為1,表示打印機(jī)可用(也可理解為有一臺(tái)打印機(jī))。(print也是用于互斥的信號(hào)燈,教材上設(shè)置為mutex。)4.6信號(hào)燈和P、V操作
4.6.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程互斥4.7進(jìn)程同步
4.7.1同步的例子引例1:兩位同學(xué)約好星期天去東湖,早上8:00在校門口,不見不散。當(dāng)一個(gè)同學(xué)先來(lái)到校門口,要等另一個(gè)同學(xué),到齊后一道打的去東湖4.7進(jìn)程同步
4.7.2同步的概念互斥的概念來(lái)自于諸進(jìn)程對(duì)獨(dú)占使用資源(設(shè)備)的競(jìng)爭(zhēng),同步來(lái)源于多個(gè)進(jìn)程的合作。在人類社會(huì)中競(jìng)爭(zhēng)與合作是永恒的。同步:所謂同步就是并發(fā)進(jìn)程在一些關(guān)鍵點(diǎn)上可能需要相互等待與互通消息,這樣的相互制約關(guān)系稱為進(jìn)程同步。4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步在操作系統(tǒng)中,同步有各種各樣,但歸納起來(lái)有兩類:諸進(jìn)程合作完成某工作的邏輯順序,如考研問(wèn)題;對(duì)系統(tǒng)資源的共享。如兩個(gè)進(jìn)程共享一個(gè)緩沖區(qū)完成謄抄問(wèn)題4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步(一)合作進(jìn)程的執(zhí)行次序用進(jìn)程流圖來(lái)描述諸進(jìn)程合作完成某一任務(wù)的次序,其規(guī)則如下4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步用信號(hào)燈及P、V操作來(lái)描述左圖1、說(shuō)明進(jìn)程的同步關(guān)系進(jìn)程P1、P2可并行執(zhí)行,P3的執(zhí)行必須等待P1、P2都完成后才能開始執(zhí)行。2、設(shè)置信號(hào)燈,說(shuō)明含義、初值。
s13=0表示進(jìn)程P1尚未執(zhí)行完成;
s23=0表示進(jìn)程P2尚未執(zhí)行完成;4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步(二)共享緩沖區(qū)的合作進(jìn)程的同步
設(shè)有一個(gè)緩沖區(qū)buffer,大小為一個(gè)字節(jié),CP進(jìn)程不斷產(chǎn)生字符,送入buffer,IOP進(jìn)程從buffer中取出字符打印。如不加控制,會(huì)有多種打印結(jié)果,這取決于這兩個(gè)進(jìn)程運(yùn)行的相對(duì)速度。在這眾多的打印結(jié)果中,只有CP、IOP進(jìn)程的運(yùn)行剛好匹配的一種是對(duì)的,其它均為錯(cuò)誤,并且不能重現(xiàn)。4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步要保證打印結(jié)果的正確,CP、IOP必須遵循以下同步規(guī)則:(1)當(dāng)CP把結(jié)果送入buffer后,IOP才能從buffer中取,否則IOP必須等待;(2)當(dāng)IOP從buffer中取走數(shù)據(jù)后,CP才能將新產(chǎn)生數(shù)據(jù)送buffer,否則也必須等待。解決這個(gè)問(wèn)題的步驟:(1)分析問(wèn)題,弄清楚同步關(guān)系,如上分析;(2)設(shè)置信號(hào)燈,說(shuō)明含義、初值;(3)寫出程序描述。4.7進(jìn)程同步
4.7.3用信號(hào)燈實(shí)現(xiàn)進(jìn)程的同步4.7進(jìn)程同步
4.7.4生產(chǎn)者-消費(fèi)者問(wèn)題我們把上面的例子擴(kuò)充,假定緩沖區(qū)buffer是一個(gè)有界緩沖區(qū),可存放n個(gè)數(shù)據(jù),同時(shí)假定有n個(gè)CP進(jìn)程不斷地產(chǎn)生數(shù)據(jù),并送buffer;有m個(gè)IOP進(jìn)程從緩沖區(qū)中取數(shù)據(jù)打印。在我們生活中有很多這樣的例子。4.7進(jìn)程同步
4.7.4生產(chǎn)者-消費(fèi)者問(wèn)題對(duì)于生產(chǎn)者進(jìn)程:產(chǎn)生一個(gè)數(shù)據(jù),當(dāng)要送入緩沖區(qū)時(shí),要檢查緩沖區(qū)是否已滿,若未滿,則可將數(shù)據(jù)送入緩沖區(qū),并通知消費(fèi)者進(jìn)程;否則,等待;對(duì)于消費(fèi)者進(jìn)程:當(dāng)它去取數(shù)據(jù)時(shí),要看緩沖區(qū)中是否有數(shù)據(jù)可取,若有則取走一個(gè)數(shù)據(jù),并通知生產(chǎn)者進(jìn)程,否則,等待。這種相互等待,并互通信息就是典型的進(jìn)程同步。同時(shí),緩沖區(qū)是個(gè)臨界資源,因此,諸進(jìn)程對(duì)緩沖區(qū)的操作程序是一個(gè)共享臨界區(qū),因此,還有個(gè)互斥的問(wèn)題。4.7進(jìn)程同步
4.7.4生產(chǎn)者-消費(fèi)者問(wèn)題4.7進(jìn)程同步
4.7.4生產(chǎn)者-消費(fèi)者問(wèn)題4.7進(jìn)程同步
4.7.4生產(chǎn)者-消費(fèi)者問(wèn)題補(bǔ)充題1:有十個(gè)讀者和兩個(gè)編輯同時(shí)處理一篇文章,對(duì)于讀操作是可以同時(shí)進(jìn)行的,若有讀者正在讀這篇文章,編輯就不能工作,若編輯正在處理這篇文章,讀者就不能作讀操作,編輯與編輯的工作也是互斥的,試用信號(hào)燈及P、V操作寫出讀者與編輯之間協(xié)同工作的程序描述。解:
mutex:用于讀者與編輯、編輯與編輯的互斥信號(hào)燈,初值為1;
mutex1:用于對(duì)couter操作的互斥的信號(hào)燈,初值為1。補(bǔ)充題2:理發(fā)師睡覺(jué)問(wèn)題理發(fā)店里有一位理發(fā)師、一把理發(fā)椅和n把供顧客等候理發(fā)坐的椅子。如果沒(méi)有顧客,則理發(fā)師便在理發(fā)椅上睡覺(jué),當(dāng)一顧客來(lái)到時(shí),他必須先叫醒理發(fā)師,如果理發(fā)師正在理發(fā)時(shí)又有顧客來(lái)到,則如果有空椅子可坐,他們就坐下來(lái)等,如果沒(méi)有空椅子,他就離開。用信號(hào)燈和P、V操作寫出理發(fā)師和顧客行為的程序描述。補(bǔ)充題3:哲學(xué)家就餐問(wèn)題五個(gè)哲學(xué)家圍坐在一個(gè)圓桌周圍,每個(gè)哲學(xué)家面前都有一盤通心面,由于面條很滑,所以要兩把叉子才能夾住。相鄰兩個(gè)盤子間有一把叉子,餐桌如右圖。哲學(xué)家的生活包括兩種活動(dòng):即吃面條和思考。當(dāng)哲學(xué)家覺(jué)得餓時(shí),他就試圖分兩次去取他左邊和右邊的叉子,每次拿一把,不分先后次序,如果成功,他就開始吃面條,吃完后放下叉子,繼續(xù)思考。試用信號(hào)燈及P、V操作寫出哲學(xué)家行為的程序描述,要求不能讓某個(gè)(或某些哲學(xué)家餓死)。補(bǔ)充題3:哲學(xué)家就餐問(wèn)題4.9UNIX系統(tǒng)的進(jìn)程管理4.9.1UNIX系統(tǒng)的進(jìn)程的圖像(image)(一)進(jìn)程圖像的組成
1、進(jìn)程控制塊PCB基本進(jìn)程控制塊proc結(jié)構(gòu):存放進(jìn)程的最基本的控制和管理信息,不論該進(jìn)程是否處于運(yùn)行狀態(tài),系統(tǒng)都要訪問(wèn)的信息,必須常駐內(nèi)存;擴(kuò)充進(jìn)程控制塊user結(jié)構(gòu):存放進(jìn)程的管理和控制信息,這些信息只有當(dāng)進(jìn)程處于運(yùn)行狀態(tài)時(shí),系統(tǒng)才訪問(wèn),不一定常駐內(nèi)存。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.1UNIX系統(tǒng)的進(jìn)程的圖像2、正文段(共享正文段)它是進(jìn)程執(zhí)行程序的一部分,可為多個(gè)進(jìn)程共享執(zhí)行,作為正文段的程序必須是可重入的。3、數(shù)據(jù)段包括:正文段程序的處理對(duì)象--數(shù)據(jù)、進(jìn)程執(zhí)行程序(私有)及數(shù)據(jù)和ppda(進(jìn)程數(shù)據(jù)區(qū))。4、用戶棧4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.1UNIX系統(tǒng)的進(jìn)程的圖像(二)UNIX系統(tǒng)進(jìn)程數(shù)據(jù)結(jié)構(gòu)1、proc結(jié)構(gòu),在UNIX系統(tǒng)的/sys/proc.h文件中;2、user結(jié)構(gòu)
,在UNIX系統(tǒng)的/sys/user.h文件中;3、text結(jié)構(gòu)(用來(lái)管理正文段的數(shù)據(jù)結(jié)構(gòu))
text結(jié)構(gòu)在UNIX系統(tǒng)的/sys/text.h文件中4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷一、UNIX進(jìn)程的兩種運(yùn)行態(tài)
核心態(tài):指進(jìn)程正在執(zhí)行UNIX核心程序;
用戶態(tài):指進(jìn)程正在執(zhí)行用戶程序;4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷在UNIX系統(tǒng)中,一個(gè)進(jìn)程有兩種態(tài),在執(zhí)行用戶程序時(shí)稱為用戶態(tài),當(dāng)發(fā)生中斷(或自陷)時(shí),自動(dòng)轉(zhuǎn)去處理中斷,即開始執(zhí)行中斷處理程序(UNIX核心代碼),進(jìn)程由用戶轉(zhuǎn)為核心態(tài),處理完中斷完后返回用戶程序執(zhí)行,進(jìn)程又由核心態(tài)轉(zhuǎn)為用戶態(tài)。在UNIX系統(tǒng)中除0#進(jìn)程外的所有進(jìn)程都有兩種態(tài)。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
二、UNIX進(jìn)程樹4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
二、UNIX進(jìn)程樹0進(jìn)程:系統(tǒng)初啟時(shí)由系統(tǒng)初啟程序建立,完成系統(tǒng)初啟的相應(yīng)工作后,創(chuàng)建1進(jìn)程;然后的工作有兩項(xiàng),其一是進(jìn)程交換(進(jìn)程圖像的管理);其二是進(jìn)程切換(進(jìn)程調(diào)度)。1進(jìn)程:為系統(tǒng)的每個(gè)聯(lián)機(jī)終端創(chuàng)建一個(gè)終端進(jìn)程,然后就做托管工作。2、3、…、n、n+1進(jìn)程:終端進(jìn)程,執(zhí)行程序是shell,該進(jìn)程執(zhí)行是接受和執(zhí)行用戶鍵入的shell命令,或shell命令程序。用戶創(chuàng)建的進(jìn)程:用戶的shell命令或shell程序所創(chuàng)建的進(jìn)程;用戶在其程序中創(chuàng)建的進(jìn)程。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)(一)運(yùn)行狀態(tài)運(yùn)行狀態(tài)表示進(jìn)程正在處理機(jī)上運(yùn)行。其特征是:p_stat為SRUNp_flag中號(hào)SLOAD位為1,表示該進(jìn)程圖像在內(nèi)存(在目前的UNIX系統(tǒng)中表示該進(jìn)程的U區(qū)在內(nèi)存)。核心態(tài)下的內(nèi)存管理機(jī)制的指針指向ppda,即該進(jìn)程的USER結(jié)構(gòu)。核心態(tài)運(yùn)行用戶態(tài)運(yùn)行4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)(二)就緒狀態(tài)在內(nèi)存中就緒:指進(jìn)程處于就緒狀態(tài),且進(jìn)程圖象在內(nèi)存(現(xiàn)代:進(jìn)程的U區(qū)在內(nèi)存);就緒且換出:指進(jìn)程處于運(yùn)行狀態(tài),且進(jìn)程圖像不在內(nèi)存。p_stat為SRUN;p_flag的SLOAD為1,表示在內(nèi)存中就緒;為0,表示就緒且換出;核心態(tài)下的內(nèi)存管理機(jī)制的指針不指向ppda。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)(三)睡眠狀態(tài)睡眠狀態(tài)是進(jìn)程等待某事件發(fā)生而被迫暫時(shí)讓出處理機(jī)時(shí)所處的狀態(tài)。p_stat為SSLEEP高優(yōu)先級(jí)睡眠狀態(tài);
SWAIT低優(yōu)先級(jí)睡眠狀態(tài);p_flag中的SLOAD為1,表示該進(jìn)程圖像在內(nèi)存,否則不在內(nèi)存。在UNIX系統(tǒng)中,當(dāng)進(jìn)程進(jìn)入睡眠狀態(tài)時(shí),系統(tǒng)會(huì)根據(jù)該進(jìn)程等待事件的輕重緩急的程度賦予不同的優(yōu)先數(shù),該進(jìn)程在被喚醒后,就以系統(tǒng)賦予的優(yōu)先數(shù)參與處理機(jī)的競(jìng)爭(zhēng)。若系統(tǒng)賦予的優(yōu)先數(shù)是小于0(負(fù)數(shù)),進(jìn)程進(jìn)入高優(yōu)先級(jí)睡眠狀態(tài),否則,進(jìn)程進(jìn)入高優(yōu)先級(jí)睡眠狀態(tài)。進(jìn)程的優(yōu)先數(shù):p_pri(-127~127)4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)進(jìn)程進(jìn)入高優(yōu)先級(jí)睡眠的原因:(1)0#進(jìn)程(-100優(yōu)先數(shù));(2)因資源請(qǐng)求得不到滿足的進(jìn)程,磁盤(-80),打印機(jī)
(-20),…;(3)等待塊設(shè)備I/O完成的進(jìn)程,(-50)。進(jìn)程進(jìn)入低優(yōu)先級(jí)睡眠的原因:(1)因等待字符設(shè)備I/O完成的進(jìn)程,(0~20的優(yōu)先數(shù));(2)所有處于用戶態(tài)運(yùn)行的進(jìn)程,優(yōu)先數(shù)一般情況下為大于100。這樣做的目的是為什么?為使系統(tǒng)資源得到充分的利用,換句話說(shuō),是為了提高系統(tǒng)資源的使用效率。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)(四)創(chuàng)建狀態(tài)父進(jìn)程創(chuàng)建子進(jìn)程時(shí)所取的狀態(tài),目的是保證子進(jìn)程能完全復(fù)制父進(jìn)程的圖像。在UNIX系統(tǒng)中,父進(jìn)程創(chuàng)建一個(gè)子進(jìn)程時(shí),子進(jìn)程要復(fù)制父進(jìn)程的全部的進(jìn)程圖像(除proc結(jié)構(gòu)外),當(dāng)有內(nèi)存空間時(shí),能很快完成復(fù)制工作,但若無(wú)內(nèi)存空間時(shí),就要在交換區(qū)中建立子進(jìn)程圖像的復(fù)本,這時(shí)父進(jìn)程將自己置為創(chuàng)建狀態(tài),以保證自己的圖像不被調(diào)出內(nèi)存。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)(五)僵死狀態(tài)僵死狀態(tài)是子進(jìn)程等待父進(jìn)程作善后處理時(shí)所處的狀態(tài)。特征:進(jìn)程轉(zhuǎn)換成僵死狀態(tài)后,就不能再轉(zhuǎn)換成其它任何狀態(tài);進(jìn)程已釋放它占用的所有資源(除proc結(jié)構(gòu)外)。
p_stat為SZOMB(zombi,zombie還魂尸,僵尸)。4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.2UNIX進(jìn)程的狀態(tài)及變遷
三、UNIX進(jìn)程狀態(tài)
(六)進(jìn)程狀態(tài)變遷4.9UNIX系統(tǒng)的進(jìn)程管理
4.9.3進(jìn)程創(chuàng)建進(jìn)程控制的操作有進(jìn)程創(chuàng)建fork()、進(jìn)程睡眠sleep()、進(jìn)程喚醒wakeup()、進(jìn)程終止exit()和等待進(jìn)程終止wait()。進(jìn)程創(chuàng)建fork()調(diào)用形式:pid=fork();功能:創(chuàng)建一個(gè)子進(jìn)程,被創(chuàng)建的子進(jìn)程是父進(jìn)程進(jìn)程圖像的一個(gè)副本(除proc結(jié)構(gòu)外),在UNIX系統(tǒng)中,除了0進(jìn)程外,其它進(jìn)程都是調(diào)用進(jìn)程創(chuàng)建系統(tǒng)調(diào)用創(chuàng)建的。返回:-1創(chuàng)建失敗
0從子進(jìn)程返
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 求職面試公開課教學(xué)計(jì)劃及課件
- 基因型-表型關(guān)聯(lián)建模-洞察及研究
- 工業(yè)設(shè)備定期檢測(cè)工作計(jì)劃
- 農(nóng)業(yè)合作社與農(nóng)業(yè)科研機(jī)構(gòu)合作協(xié)議
- 工業(yè)企業(yè)節(jié)能技術(shù)改造項(xiàng)目計(jì)劃
- 電子商務(wù)實(shí)操項(xiàng)目計(jì)劃書模板
- 農(nóng)業(yè)病蟲害生物防治協(xié)議書
- 養(yǎng)老機(jī)構(gòu)服務(wù)質(zhì)量提升策略研究
- 執(zhí)業(yè)藥師之《西藥學(xué)綜合知識(shí)與技能》復(fù)習(xí)試題附參考答案詳解【預(yù)熱題】
- 2025年上海外國(guó)語(yǔ)大學(xué)賢達(dá)經(jīng)濟(jì)人文學(xué)院?jiǎn)握小段锢怼吩囶}附答案詳解(輕巧奪冠)
- 供貨組織方案范文
- 2025年《藥品經(jīng)營(yíng)和使用質(zhì)量監(jiān)督管理辦法》培訓(xùn)試題及答案
- 2024年云南省縣鄉(xiāng)教師選調(diào)考試《教育學(xué)》真題匯編帶解析(原創(chuàng)題)
- 羊肚菌栽培及其管理課件
- 教師身體健康管理指南
- 2025高空作業(yè)考試試題及答案(完整版)
- 出租車車輛GPS定位承包合同范本
- 2025全國(guó)農(nóng)業(yè)(水產(chǎn))行業(yè)職業(yè)技能大賽(水生物病害防治員)選拔賽試題庫(kù)(含答案)
- 施工安全風(fēng)險(xiǎn)管控措施清單
- 領(lǐng)導(dǎo)科學(xué)概論課件
- 寧波市區(qū)成品住宅裝修工程質(zhì)量分戶驗(yàn)收規(guī)程
評(píng)論
0/150
提交評(píng)論