進程管理課件_第1頁
進程管理課件_第2頁
進程管理課件_第3頁
進程管理課件_第4頁
進程管理課件_第5頁
已閱讀5頁,還剩148頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章

管理

Abstract

?B?B4?fl9I*?-?I?iB?"?1"'?iB?0?9IBflB1"■1?i"?IB<B?-?t?tB?BtBfl?

■r?二■”《■?■/■,99**VI*?■,■?■”???????■,?,■?,?9??,?6?”■,?,

基礎(chǔ):進程描述及控制

實現(xiàn):互斥與同步

避免:死鎖與饑餓

解決:幾個經(jīng)典問題

關(guān)于:進程通信

策略:進程調(diào)度

March2012,WangCaixiaProcesses44?!?0?!卑V

學(xué)習(xí)目標(biāo)

通過本章的學(xué)習(xí),你應(yīng)該學(xué)會以下內(nèi)容:

。掌握分析進程的結(jié)構(gòu),特征,PCBO

?:?描述進程的基本狀態(tài)及轉(zhuǎn)換規(guī)則與原因。

?掌握解決互斥與同步的方法。

。掌握3個經(jīng)典問題的解決方法:生產(chǎn)者/消費者問題、

讀者/寫著問題、哲學(xué)家進餐問題。

March2012,WangCaixiaProcesses

2.1進程的基本概念

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?1*■?-

?2.1.1程序的順序執(zhí)行及特征

一、程序執(zhí)行有固定的時序。(圖2-1p34)

II"Cl;>Pl"12"C20P2

米二、特征:

■順序性、封閉性、可再現(xiàn)性

March2012,WangCaixiaProcesses44。“00?!卑V

2.1.2前趨圖定義

?B?Bfl9IBIB?BIB?*?4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?1*■?-?

。有向無循環(huán)圖

?表示方式:

米(1)pl一一>p2

米(2)---->={(pl,p2)|pl必須在p2開始前完成}

?(圖2-2P35)

?練習(xí):P81.2

。節(jié)點表示:一條語句,一個程序段,一進程。

March2012,WangCaixiaProcesses44。“00?!卑V

2.1.3程序的并發(fā)執(zhí)行(1)

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?l*B??

?:?一、多個程序的并發(fā)執(zhí)行(可能性分析)

aixiaProcesses即”(c“f

程序的并發(fā)執(zhí)行(2)

?B?B4??-?IB1"????IB?"?I■?■flBIB4?1BflBl*BIB4B4tt■?B<-?

。二、特征

米間斷性:程序不間斷執(zhí)行。

米失去封閉性:主要由共享資源引起。

系不可再現(xiàn)性:P37例,設(shè)N的初值為n。

米有2個循環(huán)程序A和B,它們共享一個變量N,程序A每執(zhí)行

一次時,都要做N:=N+1;B則每次要執(zhí)行Print(N),然后

再做N:=0.若程序A,B以不同的速度運行有以下三種不同

的結(jié)果。

March2012,WangCaixiaProcesses44?!?0。”癡

程序的并發(fā)執(zhí)行(3)

I??■4?I?-?IB4B?"?t!?B?B4?1**?1BflB?-?IB4B4?1■?B?**?1*??-?

執(zhí)行順序:A->B

米N值分別為n+l,n+l,O;

?執(zhí)行順序:B->A

米N值分別為n,0,1;

?執(zhí)行順序:B->A->B

*N:=N+1在print(N)和N:=0之間,則N值分別

為n,n+1,0.

March2012,WangCaixiaProcesses

2.1.4進程的特征和狀態(tài)(1)-

-------------------------???,-------------

?1.進程的特征和定義

米一、定義:

■程序的一次執(zhí)行過程

米1.結(jié)構(gòu)特征

■進程:由程序段、數(shù)據(jù)段及進程控制塊三部分構(gòu)成,

總稱“進程映像”。

米2.動態(tài)性

-由“創(chuàng)建”而產(chǎn)生,由“調(diào)度”而執(zhí)行;由得不到資

源而阻塞;由撤消而消亡。(而程序是靜態(tài)的)。

March2012,WangCaixiaProcesses44。“00?!卑V

2.1.4進程的特征和狀態(tài)(2)

?B?Bfl9IBIB?BIB4-BtB<Bi■■B?B491**?1Bfl?flBI14B?-?I??B?**?1*■?-?

3.并發(fā)性

■多個進程同時存在于內(nèi)存;

?只有建立了進程,才能并發(fā)執(zhí)行。

4.獨立性。

■獨立運行,獨立獲得資源。

5.異步性:(間斷性)

March2012,WangCaixiaProcesses44?!?0?!卑V

2.1.4進程的特征和狀態(tài)⑶

u------」'”?,,-?'?"?"?s-----',‘」'八

?2.進程的三種基本狀態(tài)(圖2-5p38)

就緒狀態(tài)

執(zhí)行狀態(tài)

阻塞狀態(tài)

圖2-5進程的三種基本狀態(tài)及其轉(zhuǎn)換

March2012,WangCaixiaProcesses

對換技術(shù),交換技術(shù)(swapping)

?B?Bfl?IB?BIBtB<BtBfl?IB?"?!**?IBfl?flBI14B?-?I?tB<-?l-B??

將內(nèi)存中暫時不能運行的進程,或暫時不用的數(shù)據(jù)和

程序,換出到外存,以騰出足夠的內(nèi)存空間,把已具備運

行條件的進程,或進程所需要的數(shù)據(jù)和程序,換入內(nèi)存。

March2012,WangCaixiaProcesses44?!?0?!卑V

。對基本的進程狀態(tài)轉(zhuǎn)換圖中的狀態(tài)編號1、2、3和4.令I(lǐng)

和J分別取值1、2、3和4(J不等于I)。請分別討論在轉(zhuǎn)

換狀態(tài)I和轉(zhuǎn)換狀態(tài)J之間是否存在因果關(guān)系,若存在請

指出這種關(guān)系是必然的,還是有條件的,條件是什么?

March2012,WangCaixiaProcesses44?!?0?!卑V

進程的掛起狀態(tài)

?B?Bfl9IBIB?BIB4-BtB<Bi■■B?B491**?1Bfl?flBI14B?-?I??B?**?l*B??

。進程被交換到外存,狀態(tài)變?yōu)閽炱馉顟B(tài)

March2012,WangCaixiaProcesses44?!?0?!卑V

德菊進程掛起的原因

0口口口口口口口口口口口口口口口,:心口□口”口口口口口口口口口口

。進程全部阻塞,處理機空閑。

。系統(tǒng)負(fù)荷過重,內(nèi)存空間緊張。

?:?操作系統(tǒng)的需要,操作系統(tǒng)可能需要起后臺進程

或一些服務(wù)進程,或者某可能導(dǎo)致系統(tǒng)故障的進

程。

?:?終端用戶的請求。

?:?父進程的需求。

aixiaProcesses

??赡苁堑却呈录l(fā)生,若是,則阻塞條件獨立于

掛起條件,即使阻塞事件發(fā)生,該進程也不能執(zhí)行。

。使之掛起的進程為:自身、其父進程、OS。

?只有掛起它的進程才能使之由掛起狀態(tài)轉(zhuǎn)換為其他

狀態(tài)。

March2012,WangCaixiaProcesses44?!?0。”癡

掛起與阻塞

B4?I■■B?■t??BeB4B4BI?I??■1????IB4*4

?問題

是否只能掛起阻塞進程?

如何激活一個掛起進程?

March2012,WangCaixiaProcessesAt。"。??m&“f

掛起與阻塞

區(qū)分兩個概念:

?進程是否等待事件,阻塞與否

?進程是否被換出內(nèi)存,掛起與否

4種狀態(tài)組合:

就緒:進程在內(nèi)存,準(zhǔn)備執(zhí)行(活動就緒)

阻塞:進程在內(nèi)存,等待事件(活動阻塞)

就緒/掛起:進程在外存,只要調(diào)入內(nèi)存即可執(zhí)行

(靜止就緒)

阻塞/掛起:進程在外存,等待事件(靜止阻塞)

March2012,WangCaixiaProcesses44?!?0?!卑V

注:

處理機可調(diào)度執(zhí)行的進程有兩種:

。新創(chuàng)建的進程

*或換入一個以前掛起的進程

通常為避免增加系統(tǒng)負(fù)載,系統(tǒng)會換入一個以前

掛起的進程執(zhí)行。

March2012,WangCaixiaProcesses44。“00?!卑V

ftgl具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換-

-------------------------------------------------------------------------------------------------------???,------------------------------------------------

?;顒幼枞籢靜止阻塞:OS通常將阻塞進程換出,以騰出

內(nèi)存空間

。靜止阻塞一^靜止就緒:當(dāng)靜止阻塞進程等待的事件發(fā)生

時,可以將其轉(zhuǎn)換為靜止就緒

。靜止就緒一^活動就緒:OS需要調(diào)入一個進程執(zhí)行

?;顒泳途w一^靜止就緒:一般,OS掛起阻塞進程。但有時

也會掛起就緒進程,釋放足夠的內(nèi)存空間

。新狀態(tài)一^活動就緒:新進程創(chuàng)建后,可以插入到就緒

隊列或靜止就緒隊列。若無足夠的內(nèi)存空間分配給新進程,

則需要新狀態(tài)靜止就緒。

March2012,WangCaixiaProcesses44。“00。”癡

具有掛起狀態(tài)的進程狀態(tài)轉(zhuǎn)換-

-------------------------------???,---------------

?靜止阻塞____,活動阻塞:當(dāng)靜止阻塞隊列中有一個進

程的阻塞事件可能會很快發(fā)生,則可將一個靜止阻塞進程

換入內(nèi)存,變?yōu)榛顒幼枞?/p>

?:?執(zhí)行--,靜止就緒:當(dāng)執(zhí)行進程的時間片用完時,會

轉(zhuǎn)換為活動就緒?;颍粋€高優(yōu)先級的靜止阻塞進程正好

變?yōu)榉亲枞麪顟B(tài),os可以將執(zhí)行進程轉(zhuǎn)換為靜止就緒狀態(tài)o

?:?所有狀態(tài)--終止:通常,執(zhí)行------>終止。但某些

OS中,父進程可以終止其子進程,使任何狀態(tài)的進程都可

轉(zhuǎn)換為退出狀態(tài)。

March2012,WangCaixiaProcesses44。“00。”癡

2.1.5進程控制塊(1)

?1.進程控制塊的作用

pid

米是進程存在的唯一標(biāo)志,

且常駐內(nèi)存;進程狀太

系PCB(ProcessControl現(xiàn)場

Block)優(yōu)先級

?2.進程控制塊中的信息

阻塞原因

米標(biāo)識、處理機狀態(tài),進

程調(diào)度信息,進程控制程序地址

信息同步機制

資源請單

鏈接指針

March2012,WangCaixiaProcesses44。“00?!卑V

2.1.5進程控制塊⑵

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?1*■?-?

?3.PCB的組織

PCB14

PCB23

PCB30

PCB4X

PCB5

PCB67

PCB79

PCB80

PCB91

March2012,WangCaixiiiProcesses

韁勵2.2進程控制--2.2.1進程的創(chuàng)建(1)

------------------------???,------------

一、進程圖:

米描述了進程的家族關(guān)系:(P43圖2-11)

條子進程可繼承父的資源,撤消時應(yīng)歸還給父進

程,父的撤消會撤消全部子進程。

。二、引起創(chuàng)建進程的事件:

米1.用戶登錄:

-為終端用戶建立一進程

米2.作業(yè)調(diào)度:(不是進程調(diào)度)

■為被調(diào)度的作業(yè)建立進程

米3.提供服務(wù):

?如要打印時建立打印進程

March2012,WangCaixiaProcesses

2.2.1進程的創(chuàng)建(2)

---------------------------???,--------------

米4.應(yīng)用請求:

■由應(yīng)用程序建立多個進程

。三、進程的創(chuàng)建:(creat原語)

米1.申請空白PCB(一個系統(tǒng)的PCB是有限的)

米2.為新進程分配資源(不同于一般的分配,PCB-LIST

在一個特殊區(qū)域,操作系統(tǒng)要知道新進程所需內(nèi)存大

大?。?/p>

米3.初始化PCB(初始化標(biāo)識信息,初始化處理機狀態(tài)

信息,初始化處理機控制信息)

米4.將新進程插入就緒隊列。

2,WangCaixiaPrOCQSSQS

2.2.2進程的終止(1)

。一、引起進程終止的事件

米1,正常結(jié)束:如Halt、logsoff等

米2.異常結(jié)束:如Protecterror、overtime等

*3.外界干預(yù):

-a.系統(tǒng)員kill進程;

?b.父進程終止;

-c.父進程請求。

March2012,WangCaixiaProcesses

2.2.2進程的終止(2)

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?flBI14B?-?I??B?**?1*■?-?

。二、進程的終止過程

米(1)檢查被終止進程的標(biāo)識符;

米(2)執(zhí)行態(tài)一一>終止,且置調(diào)度標(biāo)志為真。

米(3)有無子孫需終止。

米(4)歸還資源給其父進程或系統(tǒng)。

米(5)從PCB隊列中移出其PCB.

March2012,WangCaixiaProcesses

?S12.2.3進程的阻塞與喚醒(1)L

-------------------------------???,---------------

。一、引起進程阻塞和喚醒的事件

米1.請求系統(tǒng)服務(wù)而得不到滿足時:如向系統(tǒng)請求打

印。

米2.啟動某種操作而需同步時:如某操作和請求該操

作的進程需同步運行(即非異步操作)。

米3.新數(shù)據(jù)尚未到達:如進程A寫,進程B讀,貝"A未

寫完,B不能讀。

米4.無新工作可做。

March2012,WangCaixiaProcesses44?!?0。”癡

2.2.3進程的阻塞與喚醒(2)

?BI■4?I??-????IBtB?"?I?t■1*■?B?B4?1BflB1-■?-?IB4B4?t■?B?m?1*?fl?

。二、進程阻塞過程:

米是進程自身的一種主動行為

奈a.調(diào)block原語

米b.停止執(zhí)行,修改PCB入阻塞隊列(一個或多

個),并轉(zhuǎn)調(diào)度。

*三、喚醒過程

米其它相關(guān)進程完成。

米a.wakeup原語

*b.修改PCB,人就緒隊列

米可見,若有block原語,在其它進程中就應(yīng)有

wakeup原語。

March2012,WangCaixiaProcesses44?!?0。”癡

ftO2.2.4進程的掛起與激活-

---------------------------???,--------------

一、進程的掛起過程

米由進程自己或其父進程調(diào)suspend原語完成,將該進

程PCB移到指定區(qū)域,注意若被掛起的進程正在執(zhí)行,

有可能要重新調(diào)度。

二、進程的激活過程。

米active原語(如在外存,調(diào)入內(nèi)存,改變狀態(tài),根

據(jù)情況看是否調(diào)度,如搶先或非搶先)。

。阻塞、喚醒一般由OS實現(xiàn),而掛起與激活可由用戶干預(yù)。

March2012,WangCaixiaProcesses44?!?0?!卑V

2.3進程的同步與互斥

March2012,WangCaixiaProcesses44?!?0。”癡

?:?采用多道程序設(shè)計技術(shù)的操作系統(tǒng),允許多個進程

同時駐留內(nèi)存并發(fā)執(zhí)行。

??如何協(xié)調(diào)多個進程對系統(tǒng)資源,如內(nèi)存空間、外

部設(shè)備等的競爭和共享?

??如何解決多個進程因為競爭資源而出現(xiàn)執(zhí)行結(jié)果

異常,甚至導(dǎo)致系統(tǒng)不穩(wěn)定、失效等問題?

??例如,多個進程同時申請文件打印,如何有效分

配打印機?

March2012,WangCaixiaProcessesMM。%

2.3.1進程同步的基本概念

?:?進程同步的主要任務(wù)是對多個相關(guān)進程在執(zhí)行次序上

進行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進程之間能有效地共享

資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。

?:?同處于一個系統(tǒng)中的進程,通常都共享著某種系統(tǒng)資

源。(相互制約)

。進程之間還存在直接制約關(guān)系(如A向B提供數(shù)據(jù)等)

March2012,WangCaixiaProcesses44?!?0。”癡

臨界區(qū)使用原則(互斥條件)

----------------???,---------

米每次只允許一個進程處于臨界區(qū)(忙則等待);

米進程只能在臨界區(qū)內(nèi)逗留有限時間,不得使其j島a程在

臨界區(qū)外無限期等待(有限等待)

米如果臨界區(qū)空閑,則只要有進程申請就立即讓其進入

(空閑讓進);

米進入臨界區(qū)的進程,不能在臨界區(qū)內(nèi)長時間阻塞等待某

時間,必須在一定期限內(nèi)退出臨界區(qū)(讓權(quán)等待)

March2012,WangCaixiaProcesses44?!?0。”癡

競爭資源可能引起死鎖

、OOOOOO,:—:‘、、'"心、口口口、、口,

。例如,兩個進程P1,P2,競爭資源R1,R2.

?假設(shè),現(xiàn)在P1已經(jīng)占用了R1,JLP2占用了R2,如果此

時P1申請R2,且P2申請RL會是怎么樣呢?

。結(jié)果是P1,P2雙方都占用對方申請的資源而阻塞,誰

也不讓步地永久等待,這就是死鎖,如圖

March2012,WangCaixiaProcesses44?!?0。”癡

Processes44?!?0。”癡

韁遍競爭資源可能引起饑餓

口口口口口口口口。匚”:口口口口口口口匚”:":":?,:?

g£j>X

?假設(shè)有3個進程Pl,P2,P3,每個進程都需要周期性的使用

資源R.

?如果當(dāng)前Pl正在使用臨界資源R,P2和P3因為等待R而阻

塞。

。當(dāng)P1退出臨界區(qū)時,P2立即進入臨界區(qū)執(zhí)行,若P2還未

退出臨界區(qū)時,P1又申請使用臨界資源R。

。假設(shè)P2退出臨界區(qū)后,系統(tǒng)又申請使用臨界資源R.

?:?假設(shè)P2退出臨界區(qū)后,系統(tǒng)將R分給了P1,然后,當(dāng)R空

閑時,又將其分給P2,如此反復(fù)。P3處于饑餓狀態(tài)

March2012,WangCaixiaProcesses44?!?0?!卑V

饑餓狀態(tài)演示

f選ill同........................

March2012,WangCaixiaProcessesMoxo.?;?/p>

互斥與同步的解決策略

?:?信號量方法

?:?管程方法

。消息傳遞方法

March2012,WangCaixiaProcesses

互斥與同步解決方法之一:

信號量(semaphores)方法

?B?Bfl9IBIBIB4-BtB<Bi■???B491Bfl?flBI14B?-?I??B?**?1*■?-

?:?軟件方法和硬件方法都存在“忙等”問題,浪費

了處理機時間。

?:?信號量方法能實現(xiàn)進程互斥與同步,而不必“忙

等。

March2012,WangCaixiaProcesses44。“00?!卑V

實例

交通信號燈:紅燈停,綠燈行

March2012,WangCaixiaProcesses44?!?0。”癡

維肅信號量實現(xiàn)互斥的基本原理

-------------------------------------------------------------------------------------------------------???,------------------------------------------------

?兩個或多個進程可以通過傳遞信號進行合作,可以

迫使進程在某個位置暫時停止執(zhí)行(阻塞等待),

直到它收到一個可以”向前推進”的信號(被喚醒)

。相應(yīng)地,將實現(xiàn)信號燈作用的變量成為信號量,常

定義為記錄型變量S,其中一個域為整型,另一個域

為隊列,其元素為等待該信號量的阻塞進程(FIFO).

aixiaProcesses即

1、整型信號量S(表示資源數(shù))

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?1*■?-?

?Wait(s)和signals)

?早期這兩個原語被稱作p(s)和v(s)

?Wait(S):whileS<=0donothing

S:=S-1;

?Signal(S):S:=S+l

?只要信號量Sv=0,就會不斷地測試,不遵循“讓權(quán)

等待”的準(zhǔn)則。

March2012,WangCaixiaProcesses44。“00?!卑V

2、記錄型信號量L(表示等待進程數(shù)目)

I??B49Ift?B1BIB?"?l"i?■1-Bfl?IB4?1Bfl?l*BIB4B4BI■■B?**??**

Typesemaphore=record

Value:integer;

L:listofprocessProcedurewait(s)

Vars:semaphore;

End;

Begin

S.value:=S.value-1;

Proceduresignal(s)

IfS.value<0thenblocfe(S.L);

Vars:semaphore;

end

Begin

S.value:=S.value+1;

alue表示系統(tǒng)中

IfS.value<=0thenwakeup(S.L);

某類資源的數(shù)目

end

March2012,WangCaixiaProcesses用“曲?!眡f

記錄型信號量

說明:

1.對S的每次wait操作,意味著進程請求一個單位的

該類資源,使系統(tǒng)中可供分配的該類資源數(shù)減少一個,

即S.vahie:=S.value-1;

2.當(dāng)S.vahievO時,表示該類資源以分配完畢,調(diào)用

block原語進行自我阻塞,并插入到信號量鏈表S.L中。

March2012,WangCaixiaProcesses44?!?0?!卑V

WjlWait,signal的應(yīng)用

-------------------------------------------------------------------------------------------------------???,------------------------------------------------

。進程進入臨界區(qū)之前,首先執(zhí)行wait(s)原語,若

s.value<0,則進程調(diào)用阻塞原語,將自己阻塞,并插

入到s.L隊列排隊。

。注意,阻塞進程不會占用處理機時間,不是"忙等“。

直到某個從臨界區(qū)退出的進程執(zhí)行signal(s)原語,喚

醒它。

?一旦其它某個進程執(zhí)行了signal(s)原語中的s.value+1

操作后,發(fā)現(xiàn)s.value<=0,即阻塞隊列中還有被阻塞進

程,則調(diào)用喚醒原語,把s.L中第一個進程修改為就緒

…態(tài),送就緒隊列,準(zhǔn)備執(zhí)行執(zhí)行臨界區(qū)代碼。

March2012,WangCaixiaProcesses

fill歸納:信號量的類型

........................................

/?-??-??-?-i?-?-??-??-■?-■■??-??-??-?-?■-?-■???-??-一-?<-?-?.?????,■-?????-?-?八--八-■?-?-??-???-*

。信號量分為:互斥信號量和資源信號量。

。互斥信號量用于申請或釋放資源的實用權(quán),初始化為L

。資源信號量用于申請或歸還資源,可以初始化為大于1

的正整數(shù),表示系統(tǒng)中某類資源的可用個數(shù)。

?Wait操作用于申請資源(或使用權(quán)),進程執(zhí)行wait原

語時,可能會阻塞自己;

*Signal操作用于釋放資源(或歸還資源使用權(quán)),進程

執(zhí)行signal原語時,有責(zé)任喚醒一個阻塞進程。

March2012,WangCaixiaProcesses44?!?0?!卑V

信號量的物理意義

Bt"?Ift?B?-?I??■■B?91-?1BI-

?S.value>=0表示還可執(zhí)行wait(s)而不會阻塞的進程數(shù)

(可用資源數(shù))。每執(zhí)行一次wait(s)操作,就意味著

釋放一個單位的資源。

。當(dāng)s.value<0時,表示已無資源可用,因此請求該資源

的進程被阻塞。此時,s.value的絕對值等于該信號量

阻塞隊列中的等待進程數(shù)。執(zhí)行一次signal操作,就

意味著釋放一個單位的資源。若s.value<0,表示s.L隊

列中還有被阻塞的進程,需要喚醒該隊列中的第一個

進程,將它轉(zhuǎn)移到就緒隊列中。

March2012,WangCaixiaProcesses4<?!?0。他。”£

維斯)S.value的取值范圍

----------------???,---------

米當(dāng)僅有兩個并發(fā)進程共享臨界資源時,互斥信號量僅能

取值OL-L其中,

—s.value=l,表示無進程進入臨界區(qū)

—s.value=O,表示已有一個進程進入臨界區(qū)

—s.value=-l,則表示已有一進程正在等待進入臨界區(qū)

?當(dāng)用S來實現(xiàn)n個進程的互斥時,s.value的取值范圍為

1—(n-1)

March2012,WangCaixiaProcesses

3.AND型信號量

。整型信號量、記錄型信號量主要是針對各進程之間只共享一

個臨界資源而言的。

。有些應(yīng)用場合,一個進程需要先獲得兩個或更多的共享資源

后方能執(zhí)行任務(wù)。

。例如:進程A,B,都要求訪問共享數(shù)據(jù)D,E。

設(shè)置兩個互斥信號量Dmutex和Emutex,初始值為L

ProcessA;ProcessB;

Wait(Dmutex);Wait(Emutex);

Wait(Emutex);Wait(Dmutex);

March2012,WangCaixiaProcesses

3.AND信號量

?BIB49IftIB?"■?-?I■?■1-?flBIR4?1BflB?*BIB4B4BI?flB<-??**

。基本思想:將進程在整個運行過程中需要的所有資源,

一次性全部分配給進程,待進程使用完后再一起釋放。

只要尚有一個資源未能分配給進程,其他所有可能為之

分配的也不分配給它。

Swait(Sl,S2,...Sn)

,Ssignal(Sl,S2,...,Sn)

IfSi>=land...Sn>=lthenFori:=ltondo

Fori:=ltondoSi:=Si+l;

Si:=Si-l;喚醒就緒隊列中的所有進程。

EndfbrEndfor

Else

阻塞進程到第一個阻塞隊列中

endif

March2012,WangCaixiaProcesses

ggl4.信號量集(略)一

--------------------------------------------------------------????------------------------?,

?為提高效率而對AND信號的擴充。(P53)

?三種特例:

?(1)Swait(S,d,d):允許每次申請d個資源。

米當(dāng)資源數(shù)少于d時,不予分配。

?(2)Swait(s,1,1):S>1,記錄型信號量。

*S=1時,互斥型信號量。

?:?(3)Swait(s,1,0),可控開關(guān),當(dāng)S>=1時,允許多個進

程進入某特定區(qū),S=0時,阻止進入。

March2012,WangCaixiaProcesses

2.3.3信號量的應(yīng)用

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?IBI14B?-?I??B?**?1*■?-?

?:.I.利用信號量實現(xiàn)互斥

varmutex:semaphore:=l

parbegin

processl:begin

repeat

wait(mutex);

criticalsection

signal(mutex);

remaindersection

untilfalse;

一心飛end

March2012,WangCaixiaProcess^

0fFIN/Vv(

L利用信號量實現(xiàn)互斥⑵

process!:begin

repeat

wait(mutex);

criticalsection

signal(mutex);

remaindersection

untilfalse;

Wait(mutex)和

signal(mutex)

必須成對出現(xiàn)

March2012fWangCaixiaP

ftgl利用信號量來描述前趨關(guān)系⑵

口口口口口??诳?。。?>口匚”:”:?口口口口口口口二

g£j>X

Vara,b,c,d?f,g:semaphore:=0,0,0,0,0,0,0;

Begin

parbegin

beginSI;signal(a);signal(b);end;

beginwait(a);S2;signal(c);signal(d);end;

beginwait(b);S3;signal(e);end;

beginwait(c);S4;signal(f);end;

beginwait(d);Sl;signal(g);end;

beginwait(e);wait(f);wait(g);S6;end;

parend

end

March2012,WangCaixiaProcesses

2.4經(jīng)典進程互斥與同步問題

?B?Bfl9IBIB?BIB4-BtB<Bi■■??B4V1**?1Bfl?flBI14B?-?I??B?**?1*■?-?

。生產(chǎn)者/消費者問題

。讀者/寫者問題

。哲學(xué)家進餐問題

March2012,WangCaixiaProcesses44?!?0。”癡

2.4.1生產(chǎn)者/消費者問題

March2012,WangCaixiaProcessesAi?!?。。—

……一二問題分析................

o--------------------???,----------

。生產(chǎn)者與消費者是一個廣義的概念,以代表一類具

有相同屬性的進程。

?生產(chǎn)者和消費者進程共享一個大小固定的緩沖區(qū),

其中,一個或多個生產(chǎn)者生產(chǎn)數(shù)據(jù),并將生產(chǎn)的數(shù)

據(jù)存入緩沖區(qū),并發(fā)的有一個或者多個消費者從緩

沖區(qū)中取數(shù)據(jù)。

March2012,WangCaixiaProcesses44?!?0?!卑V

。假設(shè)緩沖區(qū)的大小為n(存儲單元的個數(shù)),它可以

被生產(chǎn)者和消費者循環(huán)使用。

?分別設(shè)置兩個指針in和out,指向生產(chǎn)者將存放數(shù)據(jù)

的存儲單元,如圖

March2012,WangCaixiaProcesses44?!?0?!卑V

其中,in表示存放數(shù)據(jù)位置,out表示取數(shù)據(jù)位置

.::被占用單元,:空存儲單元

圖2.35生產(chǎn)者/消費者循環(huán)使用緩沖區(qū)

March2012,WangCaixiaProcesses44。“00?!卑V

^gl?不控制生產(chǎn)者/消費者

----------------------------------???,----------------

。指針in和out初始化指向緩沖區(qū)的第一個存儲單元

?生產(chǎn)者通過in指針存儲單元存放數(shù)據(jù),一次存放一

條數(shù)據(jù),且in指針向后移一個位置。

。消費者從緩沖區(qū)中逐條取走數(shù)據(jù),一次取一條數(shù)據(jù),

相應(yīng)的存儲單元變?yōu)椤翱铡?每取走一條數(shù)據(jù),out

指針向后移一個存儲單元位置。

?:?試想,如果不控制生產(chǎn)者與消費者,會是什么結(jié)果?

March2012,WangCaixiaProcesses

生產(chǎn)者/消費者必須互斥

1B?Bfl9IBIB?BIB?*?tB<B?■iB?B491**?IBfl?flBI14B?-?I??B?**?l*B??

。生產(chǎn)者和消費者可能同時進入緩沖區(qū),甚至可能同

時讀/寫一個存儲單元,將導(dǎo)致執(zhí)行結(jié)果不確定。

。這顯然是不允許的。必須使生產(chǎn)者和消費者互斥進

入緩沖區(qū)。即,某時刻只允許一個實體(生產(chǎn)者或

消費者)訪問緩沖區(qū),生產(chǎn)者互斥消費者和其他任

何生產(chǎn)者。

March2012,WangCaixiaProcesses44?!?0。”癡

生產(chǎn)者/消費者必須同步

?B?Bfl9IBIB?BIB4-BtB<Bi■■B?B491**?1Bfl?flBI14B?-?I??B?**?1*■?-?

?:?生產(chǎn)者不能向滿緩沖區(qū)寫數(shù)據(jù),消費者也不能在空

緩沖區(qū)中取數(shù)據(jù),即生產(chǎn)者與消費者必須同步。

March2012,WangCaixiaProcesses44。“00?!卑V

生產(chǎn)者/消費者問題一

?BIB49IftIB?"■?-?I■?■1-?flBIR4?1BflB?*BIB4B4BI?flB<-??**

。若有一個生產(chǎn)者和一個消費者,他們共享一個緩沖區(qū)

(該緩沖區(qū)只能放一件物品),生產(chǎn)者不斷地生產(chǎn)物

品,每生產(chǎn)一件物品便存入一個緩沖區(qū),消費者要不

斷地從緩沖區(qū)中取出一件物品消費。緩沖區(qū)只能容納

一件物品,生產(chǎn)者要等消費者取走物品后才能放入下

一件物品,而消費者取走一件物品后要等生產(chǎn)者放入

下一個物品才能再取。

March2012,WangCai

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論