




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 第四章 并發(fā)處理2第四章 并發(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ì)引起一系列的問題,包括:對(duì)資源的競(jìng)爭(zhēng)、運(yùn)行程序之間的通信、程序之間的合作與協(xié)同等符。 要解決這些問題,用程序的概念已經(jīng)不能描述程序在內(nèi)存中運(yùn)行的狀態(tài),必須引人新的概念進(jìn)程。34.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.1 程序的順序執(zhí)行 一、概念 一個(gè)程序由若干個(gè)程序段組成,而這些程序段的執(zhí)行必須是順序的,這種程序執(zhí)行的方式就稱為程序的順序執(zhí)行。 例如: 44.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.1 程序的順序
2、執(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í)間無關(guān)。即只要程序的初始條件相同,它的執(zhí)行結(jié)果是相同的,不論它在什么時(shí)間執(zhí)行,也不管計(jì)算機(jī)的運(yùn)行速度。54.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)中
3、執(zhí)行時(shí)是對(duì)時(shí)間的偏序,有些操作必須在其它操作之前執(zhí)行,這是有序的,但有些操作是可以同時(shí)執(zhí)行的。例如: I1、C1、P1的執(zhí)行必須嚴(yán)格按照I1,C1,P1的順序,而P1與I2,C1與I2,I3與P1是可以同時(shí)執(zhí)行的。64.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.2 程序的并發(fā)執(zhí)行例如: I1、C1、P1的執(zhí)行必須嚴(yán)格按照I1,C1,P1的順序,而P1與I2,C1與I2,I3與P1是可以同時(shí)執(zhí)行的。74.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)開始,即使這種重迭是很小
4、的,也稱這幾個(gè)程序段是并發(fā)執(zhí)行的。84.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.2 程序的并發(fā)執(zhí)行程序并發(fā)執(zhí)行的描述 cobegin S1;S2;S3;.;SN coend; Si(i=1,2,3,.,n)表示n個(gè)語句(程序段),這n個(gè)語句用cobegin和coend括起來表示這n個(gè)語句是可以并發(fā)執(zhí)行的。co是concurrent的頭兩個(gè)字符。 這是Dijkstra提出的。94.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.2 程序的并發(fā)執(zhí)行假設(shè)有一個(gè)程序由S0Sn+1個(gè)語句,其中 S1Sn語句是并發(fā)執(zhí)行的,程序如下: S0; cobegin S1;S2;S3;.;SN coend; Sn+1;104.1 并發(fā)活動(dòng)進(jìn)程
5、的引人4.1.3 并發(fā)執(zhí)行實(shí)行謄抄一、一個(gè)循環(huán)程序順序執(zhí)行的謄抄算法1:輸入:f 輸出:g while (f 不為空) input ; output ; 由這個(gè)程序完成謄抄工作是不會(huì)出錯(cuò)的。114.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è)備輸出。124.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.3 并發(fā)執(zhí)行實(shí)行謄抄二、兩個(gè)程序并發(fā)執(zhí)行完成謄抄算法:2 cobegin while (不為結(jié)束符)/* 輸入程序段 */
6、input; /* 從標(biāo)準(zhǔn)輸入設(shè)備讀入一個(gè)數(shù)據(jù) */ send; /* 將讀入的數(shù)據(jù)送到bufferf */ while(buffer不為空) /* 輸出程序段 */ receive; /* 從bufferf中取數(shù)據(jù) */ output; /* 送打印機(jī)輸出 */ coend 134.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.3 并發(fā)執(zhí)行實(shí)行謄抄二、兩個(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ò)。2
7、、輸入程序執(zhí)行的速度比輸出程序快時(shí),有些數(shù)據(jù)會(huì)丟失; 如輸入程序送入一個(gè)字符“B”,緊接著(當(dāng)輸出程序還未取走字符“B”)又送入字符“N”,這時(shí)輸出程序取走的是“N”,“B”就丟失了。144.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.3 并發(fā)執(zhí)行實(shí)行謄抄 三、三個(gè)并發(fā)執(zhí)行程序的謄抄get程序負(fù)責(zé)人輸入序列f中讀取字符并送到緩沖區(qū)s中;copy程序把緩沖區(qū)s中的數(shù)據(jù)復(fù)制到緩沖區(qū)t中去;put程序從緩沖區(qū)t中取出數(shù)據(jù)打印。154.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.3 并發(fā)執(zhí)行實(shí)行謄抄 三、三個(gè)并發(fā)執(zhí)行程序的謄抄 假設(shè)有兩個(gè)緩沖區(qū),每個(gè)緩沖區(qū)只存放一個(gè)字符,get程序負(fù)責(zé)從輸入序列f中讀一個(gè)字符,然后,送到緩沖區(qū)s
8、中,copy程序負(fù)責(zé)將s中的字符復(fù)制到t中,put負(fù)責(zé)從t中提取字符打印。這個(gè)算法是正確的。164.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.4 與時(shí)間有關(guān)的錯(cuò)誤假定f系列中有記錄 f=(R1,R2,.,Rn) g=()在謄抄完成后: f=() g=(R1,R2,.,Rn)算法中的:copyt=s put put(t,g) get get(s,f)174.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.4 與時(shí)間有關(guān)的錯(cuò)誤若程序錯(cuò)寫成:while(謄抄未完成) cobegin copy; put; get; coend 初始狀態(tài): f=(R1,R2,.,Rn) s=() t=() g=()首先執(zhí)行了get(s,f) f=(
9、R1,R2,.,Rn) s=R1,t=(),g=()184.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ò)誤。194.1 并發(fā)活動(dòng)進(jìn)程的引人4.1.5
10、程序并發(fā)執(zhí)行的特點(diǎn)一、失去了程序的封閉性 如果程序執(zhí)行的結(jié)果是一個(gè)與時(shí)間無關(guān)的函數(shù),即具有封閉性。 若一個(gè)程序的執(zhí)行可改變另一個(gè)程序的變量,象二個(gè)并發(fā)程序完成謄抄的例子,程序執(zhí)行的結(jié)果不僅依賴于程序的初始條件,還依賴于程序執(zhí)行時(shí)的相對(duì)速度,在這種情況下就失去了程序的封閉性。 教材P62介紹了兩個(gè)并發(fā)程序共享變量的例子204.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語言的編譯程
11、序,這就是典型的一個(gè)程序?qū)?yīng)多個(gè)用戶源程序的情況。214.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í)際上是一種相互制約,有直接的,也有間接。 回頭來,我們?cè)倏纯床僮飨到y(tǒng)的第三個(gè)特性: 不確定性*224.2 進(jìn)程概念(process) 4.2.1 進(jìn)程的定義 在多道程序設(shè)計(jì)的環(huán)境下,為了描述程序在計(jì)算機(jī)系統(tǒng)內(nèi)的執(zhí)行情況,必須引人新的概念進(jìn)程。 進(jìn)程的概念來自于麻省理工的MULTICS、I
12、BM的 TSS/360,在IBM的OS/360/370系統(tǒng)中也曾叫過任務(wù)(task)。234.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ù)一道通過處理機(jī)的執(zhí)行所發(fā)生的活動(dòng)。(Alan.C. Shaw)進(jìn)程是執(zhí)行中的程序。(Ken Thompson and Dennis Ritchie )教材上給出的進(jìn)程的定義: 進(jìn)程,即是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次
13、活動(dòng)。244.2 進(jìn)程概念(process) 4.2.1 進(jìn)程的定義 進(jìn)程與程序的區(qū)別與聯(lián)系:1、程序是指令的集合,是靜態(tài)的概念。 進(jìn)程是程序在處理機(jī)上的一次執(zhí)行的過程,是動(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è)程序。254.2 進(jìn)程概念(process) 4.2.1 進(jìn)程的定義 進(jìn)程與程序的區(qū)別與聯(lián)系:例子:光盤(CD、VCD)光盤(程序) 放光盤的活動(dòng)(進(jìn)程)2
14、64.2 進(jìn)程概念(process)4.2.2 進(jìn)程的類型在系統(tǒng)中同時(shí)有多個(gè)進(jìn)程存在,但歸納起來有兩大類:1、系統(tǒng)進(jìn)程 系統(tǒng)進(jìn)程起著資源管理和控制的作用。 或者:執(zhí)行操作系統(tǒng)核心代碼的進(jìn)程。2、用戶進(jìn)程 執(zhí)行用戶程序的進(jìn)程。274.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)程通過系統(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ì)算
15、進(jìn)程,I/O進(jìn)程等注意:在UNIX系統(tǒng)中沒有這樣對(duì)進(jìn)程進(jìn)行分類。284.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)(又稱阻塞、掛起、睡眠)294.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)
16、行,該進(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í)間,它也無法執(zhí)行,則稱該進(jìn)程處于等待狀態(tài)。304.2 進(jìn)程概念(process)4.2.3 進(jìn)程的狀態(tài)二、進(jìn)程狀態(tài)變遷圖進(jìn)程的狀態(tài)不是固定不變的,而是在不斷變換。314.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)入就緒狀
17、態(tài)就緒 運(yùn)行 當(dāng)處理機(jī)空閉時(shí),由調(diào)度(分派)程序從就緒進(jìn)程隊(duì)列中選擇一個(gè)進(jìn)程占用CPU。324.2 進(jìn)程概念(process)4.2.3 進(jìn)程的狀態(tài)三、作業(yè)、作業(yè)狀態(tài)及轉(zhuǎn)移 在批處理系統(tǒng)中一個(gè)用戶程序的執(zhí)行的全過程稱為一個(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è)完成。334.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ù)放
18、在輸入設(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)。344.2 進(jìn)程概念(process)4.2.3 進(jìn)程的狀態(tài)三、作業(yè)、作業(yè)狀態(tài)及轉(zhuǎn)移354.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ī)、外
19、設(shè))364.2 進(jìn)程概念(process)4.2.4 進(jìn)程描述進(jìn)程控制塊 PCB (Process Control Block) 存放進(jìn)程的管理和控制信息的數(shù)據(jù)結(jié)構(gòu)稱為進(jìn)程控制塊。它是進(jìn)程管理和控制的最重要的數(shù)據(jù)結(jié)構(gòu),在創(chuàng)建時(shí),建立PCB,并伴隨進(jìn)程運(yùn)行的全過程,直到進(jìn)程撤消而撤消。PCB就象我們的戶口。374.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 說明進(jìn)程當(dāng)前所處的狀態(tài)。 為了管理的
20、方便,系統(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ì)列等等。384.2 進(jìn)程概念(process)4.2.4 進(jìn)程描述進(jìn)程控制塊 PCB3、當(dāng)前隊(duì)列指針 next 登記與本進(jìn)程處于同一隊(duì)列的下一個(gè)進(jìn)程的PCB的地址。394.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é)合的方
21、式確定進(jìn)程的優(yōu)先級(jí)。404.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ù)起來,為將來再次得到處理機(jī)恢復(fù)CPU的各種狀態(tài),繼續(xù)運(yùn)行。例如,我們下課,這時(shí)我要記住這次講到什么地方,下次課接著講。8、通信信息 communication information 是指某個(gè)進(jìn)程在運(yùn)行的過程中要與其它進(jìn)程進(jìn)行通信,該區(qū)記錄有關(guān)進(jìn)程通信方面的信息。414.2 進(jìn)程概念(process)4.2.4 進(jìn)程描述進(jìn)程控制塊 PCB9、家族聯(lián)系 proce
22、ss family 有的系統(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)中就沒有此項(xiàng)。424.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í)行有效的管理。434.3 進(jìn)程控制
23、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)也通過系統(tǒng)調(diào)用給用戶提供進(jìn)程控制的功能。教材上叫原語(一種特殊的系統(tǒng)調(diào)用)。444.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)度454.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)程自已終止(自殺) w
24、ait() (父)等待子進(jìn)程終止 wakeup() 進(jìn)程喚醒 在4.9節(jié)介紹。464.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)戶口。474.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()484.3 進(jìn)程控制4.3.2 進(jìn)程創(chuàng)
25、建494.3 進(jìn)程控制4.3.3 進(jìn)程撤消 進(jìn)程完成其任務(wù),希望終止時(shí),調(diào)用撤消進(jìn)程的系統(tǒng)調(diào)用(進(jìn)程撤消原語)撤消進(jìn)程。相當(dāng)于一個(gè)人死亡后,家人要去派出所消戶口。 在一般操作系統(tǒng)中進(jìn)程撤消的系統(tǒng)調(diào)用是:kill UNIX系統(tǒng)中是exit()。 504.3 進(jìn)程控制4.3.3 進(jìn)程撤消514.3 進(jìn)程控制4.3.3 進(jìn)程撤消524.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)。53
26、4.3 進(jìn)程控制4.3.4 進(jìn)程掛起 進(jìn)程從運(yùn)行狀態(tài)轉(zhuǎn)換成阻塞狀態(tài)是由進(jìn)程掛起原語實(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ì)列變化如下。544.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)程等待的原因554.3 進(jìn)程控制4.3.4 進(jìn)程掛起564.3
27、進(jìn)程控制4.3.4 進(jìn)程掛起574.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)程通信等過程中。例如,打印機(jī)完成中斷處理程序, 在完成了打印完成的操作后,就去檢查等待打印機(jī)的隊(duì)列,若不為空,則調(diào)用進(jìn)程喚醒操作,喚醒一個(gè)(或多個(gè))等待打印機(jī)的進(jìn)程。 584.3 進(jìn)程控制4.3.5 進(jìn)程喚醒進(jìn)程喚醒原語的形式: wakeup(chan) 其中:chan 喚醒進(jìn)程阻塞的原因。594.3 進(jìn)程控制4.3.5 進(jìn)程喚醒算法:wakeup輸入:chan:等待的事件(阻塞原因)輸出:無 找到chan的等待隊(duì)列的指針; for(該隊(duì)列不為空) 從隊(duì)列中移出一個(gè)進(jìn)程; 置進(jìn)程狀態(tài)為“就緒”,并加入到就緒隊(duì)列; 604.3 進(jìn)程控制4.3.5 進(jìn)程喚醒 按此算法,是把等待在chan事件上的所有進(jìn)程喚醒,類似于UNIX系統(tǒng)的處理方式。也有的系統(tǒng)只喚醒一個(gè)等待chan事件的進(jìn)程,若這樣處理,等待隊(duì)列就要按某
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)審計(jì)服務(wù)合同范本
- 合同權(quán)利轉(zhuǎn)讓合同范例
- 加工制作項(xiàng)目合同范本
- 合作投資買房合同范本
- 醫(yī)院融資建設(shè)合同范本
- 單位裝修維護(hù)合同范本
- 開鎖公司行業(yè)分析研究報(bào)告
- 別墅裝修木工合同范例
- 冷飲設(shè)備供貨合同范本
- 公司外包經(jīng)營(yíng)合同范本
- 自導(dǎo)式教學(xué)心得體會(huì)范文【3篇】
- 防范游戲充值詐騙保護(hù)個(gè)人游戲賬號(hào)安全
- 數(shù)學(xué)與體育融合課程設(shè)計(jì)
- 七年級(jí)英語閱讀理解專項(xiàng)訓(xùn)練(含答案)共20篇
- 初步設(shè)計(jì)法律規(guī)范
- 社區(qū)獲得性肺炎疾病查房
- 神奇的光:如何形成彩虹
- 三、膽石癥課件
- 兔子坡(閱讀課上課課件)
- 固定資產(chǎn)清查盤點(diǎn)明細(xì)表
- 220kV升壓站調(diào)試施工方案
評(píng)論
0/150
提交評(píng)論