




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)蒙古工業(yè)職業(yè)學(xué)院《公共關(guān)系與商務(wù)禮儀》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西省商南縣2024-2025學(xué)年下學(xué)期初三生物試題期中測試卷含解析
- 開封市鼓樓區(qū)2025屆數(shù)學(xué)五下期末達標(biāo)測試試題含答案
- 寧夏大學(xué)《心理統(tǒng)計學(xué)(上)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海市虹口區(qū)復(fù)興高級中學(xué)2025屆高三3月摸底考試數(shù)學(xué)試題理試題含解析
- 遼寧對外經(jīng)貿(mào)學(xué)院《住宅建筑設(shè)計原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧夏師范學(xué)院《形勢與政策(七)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省泰州市泰興一中2024-2025學(xué)年高三調(diào)研考試(物理試題)試卷含解析
- 石家莊學(xué)院《植物造景B》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼東學(xué)院《鋼琴名作賞析》2023-2024學(xué)年第二學(xué)期期末試卷
- 部編人教版五年級語文下冊第2課《祖父的園子》公開課課件
- D500-D505 2016年合訂本防雷與接地圖集
- 音階歌音樂教案
- 高速公路收費站危險點事故隱患及控制措施
- JJF 1159-2006四極桿電感耦合等離子體質(zhì)譜儀校準(zhǔn)規(guī)范
- GB/T 24844-20181 000 kV交流系統(tǒng)用油浸式并聯(lián)電抗器技術(shù)規(guī)范
- 交通安全設(shè)置圖
- 蜀都飲食文化
- 靜配中心醫(yī)院感染知識培訓(xùn)課件
- 顱內(nèi)動脈瘤的護理
- 肝移植圍手術(shù)期的概念課件
評論
0/150
提交評論