操作系統(tǒng)第2章第二節(jié)_第1頁
操作系統(tǒng)第2章第二節(jié)_第2頁
操作系統(tǒng)第2章第二節(jié)_第3頁
操作系統(tǒng)第2章第二節(jié)_第4頁
操作系統(tǒng)第2章第二節(jié)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2.3 2.3 進程同步進程同步n進程同步進程同步是指對多個相關進程在執(zhí)行次序上進是指對多個相關進程在執(zhí)行次序上進行協(xié)調,目的是使系統(tǒng)中諸進程之間能有效地行協(xié)調,目的是使系統(tǒng)中諸進程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。或系統(tǒng)中諸進程之間在邏輯上的相可再現(xiàn)性?;蛳到y(tǒng)中諸進程之間在邏輯上的相互制約的關系(直接的互制約的關系(直接的- -同步;間接的同步;間接的互互斥)。斥)。n用來實現(xiàn)同步的機制稱為用來實現(xiàn)同步的機制稱為同步機制同步機制。如:信號。如:信號量機制;管程機制。量機制;管程機制。一一. .進程同步的基本概念進程同步的基本

2、概念1.1.兩種形式的制約關系兩種形式的制約關系2.2.臨界資源、臨界區(qū)臨界資源、臨界區(qū)3.3.同步機制應遵循的規(guī)則同步機制應遵循的規(guī)則二二. .信號量機制信號量機制1.1.整型信號量整型信號量2.2.記錄型信號量記錄型信號量3.and3.and型信號量集、一般信號量集型信號量集、一般信號量集三三. .信號量的應用信號量的應用1.1.信號量實現(xiàn)進程互斥信號量實現(xiàn)進程互斥2.2.信號量描述進程間的前趨關系信號量描述進程間的前趨關系2.3 2.3 進程同步進程同步一、進程同步的基本概念一、進程同步的基本概念1 1、兩種進程關系、兩種進程關系系統(tǒng)中諸進程之間在邏輯上存在著兩種制約系:系統(tǒng)中諸進程之間

3、在邏輯上存在著兩種制約系:n進程同步:直接制約關系,進程之間為了協(xié)進程同步:直接制約關系,進程之間為了協(xié)作完成某項任務而有意識地相互作完成某項任務而有意識地相互“交換信交換信息息”。如前分別將。如前分別將i、c和和p都看成是進程都看成是進程。 n進程互斥:間接制約關系,進程互斥:間接制約關系,進程之間通過競進程之間通過競爭系統(tǒng)某些資源產生的關系爭系統(tǒng)某些資源產生的關系。原因是某些資。原因是某些資源不能同時被源不能同時被 多個進程使用多個進程使用間接制約關系示例間接制約關系示例用戶用戶acpu 打印機打印機(系統(tǒng)負責打印系統(tǒng)負責打印)打印請求打印請求cpu空閑空閑用戶用戶b打印請求打印請求a打印

4、完打印完a完成完成b打印完打印完cpu空閑空閑b完成完成a打印打印b打印打印a進入進入等待等待打印完成打印完成阻塞隊列阻塞隊列b進入進入申申請打印機請打印機阻塞隊列阻塞隊列a被被喚醒喚醒從阻塞進入從阻塞進入就緒隊列就緒隊列,后投入運后投入運行行;b分配打印機分配打印機b被被喚醒喚醒從阻塞從阻塞進入就緒隊列進入就緒隊列,后投入運行后投入運行一、進程同步的基本概念一、進程同步的基本概念同同 步步互互 斥斥進程進程- -進程進程進程進程- -資源資源- -進程進程時間次序上受到某種限制時間次序上受到某種限制競爭不到某一物理資源競爭不到某一物理資源時不允許進程工作時不允許進程工作相互清楚對方的存在及作

5、用,相互清楚對方的存在及作用,交換信息交換信息不一定清楚其進程情況不一定清楚其進程情況往往指有幾個進程共同完成往往指有幾個進程共同完成一個任務一個任務往往指多個任務多個進往往指多個任務多個進程間通訊制約程間通訊制約例:生產與消費之間,發(fā)送例:生產與消費之間,發(fā)送與接受之間,作者與讀者之與接受之間,作者與讀者之間,供者與用者之間間,供者與用者之間例:交通十字路口,單例:交通十字路口,單軌火車的撥道岔軌火車的撥道岔2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)一、進程同步的基本概念一、進程同步的基本概念臨界資源臨界資源 (critical resource) 系統(tǒng)中某些資源系統(tǒng)中某些資源一次只允許一個

6、進程使用一次只允許一個進程使用,稱這樣,稱這樣的資源為臨界資源或互斥資源或共享變量。的資源為臨界資源或互斥資源或共享變量。臨界區(qū)(互斥區(qū),臨界區(qū)(互斥區(qū),critical section ) 在進程中涉及到臨界資源的程序段叫在進程中涉及到臨界資源的程序段叫臨界區(qū),臨界區(qū), 多個進程的臨界區(qū)稱為多個進程的臨界區(qū)稱為相關臨界區(qū)。相關臨界區(qū)。一、進程同步的基本概念一、進程同步的基本概念2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)程序程序 段段1共享變量共享變量程序程序 段段2程序程序 段段3例:生產者例:生產者-消費者消費者(producer-consumer)問題。問題。var n: integer

7、;type item=;var buffer: array0,1,n-1 of item;in,out: 0,1,n-1;counter: 0,1,n;一、進程同步的基本概念一、進程同步的基本概念2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)producer:repeat produce an item in nextp;while counter=n do no-op;bufferin:=nextp;in:=(in+1) mod n;counter:=counter+1;until false; consumer: repeatwhile counter=0 do no-op;nextc:=buff

8、erout;out:=(out+1) mod n;counter:=counter-1;consumer the item in nextc;until false; 一、進程同步的基本概念一、進程同步的基本概念2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)生產者對生產者對counter做加做加1操作,消費者對操作,消費者對counter做減做減1操作,這兩個操作在用機器語言實現(xiàn)時,操作,這兩個操作在用機器語言實現(xiàn)時, ??捎孟旅娴男问矫枋觯撼?捎孟旅娴男问矫枋觯?register1:=counter; register2:=counter;register1:=register1+1; regi

9、ster2:=register2-1;counter:=register1; counter:=register2; 一、進程同步的基本概念一、進程同步的基本概念2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)register1:=counter; (register1=5)register1:=register1+1; (register1=6)register2:=counter; (register2=5)register2:=register2-1; (register2=4)counter:=register1; (counter=6)counter:=register2; (counte

10、r=4) 一、進程同步的基本概念一、進程同步的基本概念2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)一、進程同步的基本概念一、進程同步的基本概念register2:=counter;register2:=register2-1;register1:=counter; counter:=register2;register1:=register1+1;counter:=register1; 2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)2 2、臨界資源、臨界區(qū)、臨界資源、臨界區(qū)一、進程同步的基本概念一、進程同步的基本概念實現(xiàn)各進程互斥進入臨界區(qū)實現(xiàn)各進程互斥進入臨界區(qū) 進程須在臨界區(qū)前面增加一段用于進行

11、上述檢進程須在臨界區(qū)前面增加一段用于進行上述檢查的代碼,稱為查的代碼,稱為進入?yún)^(qū)進入?yún)^(qū)(entry section)。在臨界區(qū)后。在臨界區(qū)后面加上一段稱為面加上一段稱為退出區(qū)退出區(qū)(exit section)的代碼。的代碼。while (1) 進入?yún)^(qū)代碼進入?yún)^(qū)代碼; 臨界區(qū)代碼臨界區(qū)代碼; 退出區(qū)代碼退出區(qū)代碼; 其余代碼其余代碼 ;進入?yún)^(qū)進入?yún)^(qū)臨界區(qū)臨界區(qū)退出區(qū)退出區(qū)剩余區(qū)剩余區(qū)進程中訪問臨界進程中訪問臨界資源的代碼段資源的代碼段在進入臨界區(qū)之前,檢查可否進在進入臨界區(qū)之前,檢查可否進入臨界區(qū)的一段代碼。如果可入臨界區(qū)的一段代碼。如果可以進入臨界區(qū),通常設置相應以進入臨界區(qū),通常設置相應“正

12、在訪問臨界區(qū)正在訪問臨界區(qū)”標志標志用于將用于將“正在訪問正在訪問臨界區(qū)臨界區(qū)”標志清除標志清除代碼中的其代碼中的其余部分余部分進程同步研進程同步研究如何究如何編寫編寫進入?yún)^(qū)和退進入?yún)^(qū)和退出區(qū)代碼出區(qū)代碼3、同步機制應遵循的規(guī)則、同步機制應遵循的規(guī)則 各進程需要互斥訪問臨界資源,即不能各進程需要互斥訪問臨界資源,即不能同時進入各自的臨界區(qū)。應遵守的原則:同時進入各自的臨界區(qū)。應遵守的原則:有空讓進有空讓進: :無進程在臨界區(qū)時,要求進入臨界區(qū)的無進程在臨界區(qū)時,要求進入臨界區(qū)的進程可進入。進程可進入。互斥(忙則等待)互斥(忙則等待): :不允許兩個以上的進程同時進不允許兩個以上的進程同時進入臨

13、界區(qū)。入臨界區(qū)。有限等待:有限等待:要求進入臨界區(qū)的進程不能無限等待要求進入臨界區(qū)的進程不能無限等待, ,以免陷入以免陷入“死等死等( (饑餓饑餓)”)”。讓權等待:讓權等待:當進程不能進入自己的臨界區(qū)時,應立當進程不能進入自己的臨界區(qū)時,應立即釋放處理機,以免進程陷入即釋放處理機,以免進程陷入“忙等忙等”。一、進程同步的基本概念一、進程同步的基本概念二、信號量機制n信號量機制是荷蘭科學家信號量機制是荷蘭科學家e.w.dijkstra在在1965年提出的一種同步機制,由最初的整型信號年提出的一種同步機制,由最初的整型信號量發(fā)展為記錄型信號量,進而發(fā)展為信號量量發(fā)展為記錄型信號量,進而發(fā)展為信號

14、量集。集。n基本原則基本原則l在多個在多個相互制約的進程相互制約的進程之間之間使用簡單的信使用簡單的信號來同步號來同步,一個進程被強制停止在一個特,一個進程被強制停止在一個特定的地方直到收到一個專門的信號。定的地方直到收到一個專門的信號。1 1、整型信號量、整型信號量n整型信號量整型信號量非負整數(shù),除了初始化外,只非負整數(shù),除了初始化外,只能通過兩個原子操作能通過兩個原子操作wait和和signal來訪問。來訪問。nwait和和signal操作描述操作描述:wait(s):while s 0 do noop;/測試有無可用資源測試有無可用資源 s:=s-1; /可用資源數(shù)減一個單位可用資源數(shù)減

15、一個單位signal(s):s:=s+1;n主要問題主要問題:只要:只要s 0, wait操作就不斷地測試操作就不斷地測試(忙等忙等),因而,未做到,因而,未做到“讓權等待讓權等待”。 2 2、記錄型信號量、記錄型信號量n基本思想基本思想1、設置一個整型變量、設置一個整型變量value代表資源數(shù)目代表資源數(shù)目2、設置一個鏈接所有等待進程的鏈表、設置一個鏈接所有等待進程的鏈表3、初始化一次后,僅能被、初始化一次后,僅能被wait(s)和和signal(s)兩個原兩個原語操作語操作(同步原語,也稱為同步原語,也稱為p、v操作操作)訪問訪問n記錄型信號量的數(shù)據(jù)結構記錄型信號量的數(shù)據(jù)結構 struc

16、semaphore value:integer; /可用資源個數(shù),初值可用資源個數(shù),初值=0 l: list of process ;/等待該資源的進程隊列,等待該資源的進程隊列,初值為空初值為空 2 2、記錄型信號量、記錄型信號量信號量的一般結構及信號量的一般結構及pcb隊列隊列信號量的聲明:信號量的聲明:semaphore s;2 2、記錄型信號量、記錄型信號量n p p、v v操作定義操作定義p(s) /= wait(s) s.value=s.value-1; if (s.value 0) block(s.l);若申請資源不成功,則若申請資源不成功,則該進程阻塞,將該進程該進程阻塞,將該

17、進程的的pcb插入等待隊列插入等待隊列s.l的末尾;若申請成功,的末尾;若申請成功,則進程繼續(xù)。則進程繼續(xù)。2 2、記錄型信號量、記錄型信號量v(s) /signal(s) s.value=s.value+1; if (s.value 0:表示有:表示有s.value個資源可用。個資源可用。s.value的初的初值應值應0=0:表示無資源可用且無進程在等待該資源:表示無資源可用且無進程在等待該資源=1 & s2 = 1 & & sn = 1)/滿足資源要求時滿足資源要求時 for (i = 1; i = n; +i) - -si;else /某些資源不夠時某些資源不夠時

18、 block(s.l); ssignal(s1, s2, , sn)/v原語略;見書原語略;見書3 3、信號量集-一般信號量一般信號量n一般信號量集是指同時需要多種資源、每種一般信號量集是指同時需要多種資源、每種占用的數(shù)目不同、且可分配的資源還存在一占用的數(shù)目不同、且可分配的資源還存在一個臨界值時的信號量處理。個臨界值時的信號量處理。 n一般信號量集的基本思路就是在一般信號量集的基本思路就是在andand型信號型信號量集的基礎上進行擴充,在一次原語操作中量集的基礎上進行擴充,在一次原語操作中完成所有的資源申請。完成所有的資源申請。三、信號量的應用三、信號量的應用1.利用信號量實現(xiàn)進程互斥:互斥

19、信號量利用信號量實現(xiàn)進程互斥:互斥信號量(公公用信號量用信號量)2.利用信號量實現(xiàn)進程同步:同步信號量利用信號量實現(xiàn)進程同步:同步信號量(私私有信號量,資源信號量有信號量,資源信號量)三、信號量的應用三、信號量的應用1.利用信號量實現(xiàn)進程互斥利用信號量實現(xiàn)進程互斥有多個進程互斥訪問某類資源,則互斥進程有多個進程互斥訪問某類資源,則互斥進程pi的代碼如圖所示的代碼如圖所示(mutex初值為該類資源初始可初值為該類資源初始可用個數(shù)用個數(shù))v(mutex);critical sectionremainder sectionp(mutex);p(mutex)v(mutex)p1p2p3互斥區(qū)互斥區(qū)p(

20、mutex)p(mutex)v(mutex)v(mutex)三、信號量的應用三、信號量的應用三、信號量的應用三、信號量的應用例:三個進程共用兩個例:三個進程共用兩個i/o緩沖區(qū)。緩沖區(qū)。n解 :解 : 為 緩 沖 區(qū) 設 置 一 個 互 斥 信 號 量為 緩 沖 區(qū) 設 置 一 個 互 斥 信 號 量 s ,s.value=2,表示可用緩沖區(qū)有,表示可用緩沖區(qū)有2個。個。三、信號量的應用三、信號量的應用n進程互斥問題解題思路進程互斥問題解題思路一類臨界資源一類臨界資源設置設置一個互斥信號量一個互斥信號量mutex,初值為其可用個數(shù),初值為其可用個數(shù)(如打印機臺數(shù)如打印機臺數(shù)),一,一般為般為1

21、所有互斥進程在所有互斥進程在進入?yún)^(qū)進入?yún)^(qū)執(zhí)行執(zhí)行p(mutex),退退出區(qū)出區(qū)執(zhí)行執(zhí)行v(mutex);次序不能顛倒次序不能顛倒p和和v操作操作成對出現(xiàn)成對出現(xiàn)。遺漏。遺漏p操作則不能保操作則不能保證互斥訪問,遺漏證互斥訪問,遺漏v操作則可能造成死鎖操作則可能造成死鎖2.利用信號量實現(xiàn)前驅關系利用信號量實現(xiàn)前驅關系p1p1p2p2三、信號量的應用三、信號量的應用設置一個信號量設置一個信號量s,s=0p1;v(s);p(s);p2;如此即可實現(xiàn)先執(zhí)行如此即可實現(xiàn)先執(zhí)行p1,再執(zhí)行,再執(zhí)行p2為為每個前趨關系每個前趨關系設置設置一個同步信號量一個同步信號量,其初值為,其初值為0三、信號量的應用三、

22、信號量的應用例例: 程序前趨圖如圖所示,試用程序前趨圖如圖所示,試用p、v操作實現(xiàn)其同步。操作實現(xiàn)其同步。var a,b,c,d:semaphore:=0,0,0,0; begin cobegin s1; s2; s3; s4; coend;end;s1s2s3s4abcds1:begin ; v(a);end; s2:begin v(b); v(c);end; s3:begin p(a); p(b); v(d);end;s4:begin p(c); p(d); .end;2.利用信號量實現(xiàn)前驅關系利用信號量實現(xiàn)前驅關系三、信號量的應用三、信號量的應用思考:思考:已知一個求值公式(已知一個求值

23、公式(a a2 2+3+3* *b b)/ /(b+5b+5* *a a),),若若a a、b b已賦值,畫出該公式求值過程的前趨圖已賦值,畫出該公式求值過程的前趨圖 2.利用信號量實現(xiàn)前驅關系利用信號量實現(xiàn)前驅關系三、信號量的應用三、信號量的應用3.利用信號量實現(xiàn)同步利用信號量實現(xiàn)同步n生產者生產者-消費者問題的單緩沖區(qū)情況:有消費者問題的單緩沖區(qū)情況:有a、b兩個進程和一個緩沖區(qū),兩個進程和一個緩沖區(qū),a負責將信息負責將信息存存入入緩沖區(qū),緩沖區(qū),b負責負責取走取走緩沖區(qū)中的信息進行緩沖區(qū)中的信息進行加工。如何利用信號量實現(xiàn)進程同步?加工。如何利用信號量實現(xiàn)進程同步?消費者消費者生產者生產

24、者三、信號量的應用三、信號量的應用3.利用信號量實現(xiàn)同步利用信號量實現(xiàn)同步n解:解:設兩個同步信號量。設兩個同步信號量。s1:緩沖區(qū):緩沖區(qū)是否滿是否滿,初值為初值為0;s2:緩沖區(qū):緩沖區(qū)是否空是否空,初值為,初值為1三、信號量的應用三、信號量的應用n進程同步問題的解題思路進程同步問題的解題思路1.有幾類同步進程,就設幾個同步信號量有幾類同步進程,就設幾個同步信號量。2.設定信號量初值。設定信號量初值。3.同一信號量的同一信號量的p、v操作要成對出現(xiàn)操作要成對出現(xiàn),但分,但分別別在不同進程的代碼中。在不同進程的代碼中。2.4 2.4 經典進程的同步問題經典進程的同步問題生產者生產者消費者問題

25、消費者問題n生產者與消費者互斥訪問公用數(shù)據(jù)生產者與消費者互斥訪問公用數(shù)據(jù)緩沖區(qū)緩沖區(qū)n生產者生產生產者生產“數(shù)據(jù)數(shù)據(jù)”,消費者消費,消費者消費“數(shù)據(jù)數(shù)據(jù)”哲學進家餐問題哲學進家餐問題讀者讀者寫者問題寫者問題1 1、“生產者生產者消費者消費者”問題問題 多緩沖區(qū)的生產者多緩沖區(qū)的生產者消費者問題描述消費者問題描述 一組生產者向一組消費者提供消息,它們一組生產者向一組消費者提供消息,它們共享一個有界共享一個有界( k 個個)緩沖池緩沖池,生產者向其中,生產者向其中投放投放消息,消費者從中消息,消費者從中取得取得消息。任何時消息。任何時刻只能有一個進程可對共享緩沖池進行操刻只能有一個進程可對共享緩沖

26、池進行操作。作。共享緩沖區(qū)生產指針消費指針producer 1producer 2.producer mconsumer 1consumer 2.consumer n滿空指針移動方向1、“生產者生產者消費者消費者”問題問題pccppcpc1 1、“生產者生產者消費者消費者”問題問題u多緩沖區(qū)的同步互斥問題多緩沖區(qū)的同步互斥問題 n同步同步:當緩沖池已放滿了產品時:當緩沖池已放滿了產品時( (供過供過于求于求) ),生產者進程必須等待;當緩沖,生產者進程必須等待;當緩沖池已空時池已空時( (供不應求供不應求) ),消費者進程應,消費者進程應等待。等待。n互斥互斥:所有進程應互斥使用緩沖池這:所有

27、進程應互斥使用緩沖池這一臨界資源。一臨界資源。u多緩沖區(qū)的生產者多緩沖區(qū)的生產者消費者問題解法消費者問題解法1 1、“生產者生產者消費者消費者”問題問題 設置兩個同步信號量及一個互斥信號量設置兩個同步信號量及一個互斥信號量nempty:空緩沖單元的數(shù)目,其初值為空緩沖單元的數(shù)目,其初值為k。nfull:滿緩沖單元的數(shù)目(即產品數(shù)目),滿緩沖單元的數(shù)目(即產品數(shù)目),其初值為其初值為0。nmutex: 所有進程都是互斥訪問緩沖池的,所有進程都是互斥訪問緩沖池的,所以設一個互斥信號量所以設一個互斥信號量mutex,初值是,初值是1,表示緩沖池的訪問權表示緩沖池的訪問權,整個緩沖池是一個,整個緩沖池

28、是一個臨界資源。臨界資源。1 1、“生產者生產者消費者消費者”問題問題u多緩沖區(qū)的生產者多緩沖區(qū)的生產者消費者問題解法消費者問題解法思考:思考:p p操作的順序可換嗎?操作的順序可換嗎?“生產者生產者消費者消費者”問題的算法描述:問題的算法描述:var mutex, empty, full : semaphore : = 1, n, 0;buffer : array0,k-1 of item;in, out : integer : = 0, 0;begincobeginproducer : begin repeat produce an item nextp;p(empty);p(mutex)

29、;buffer(in):=nextp;in:=(in+1) mod n;v(mutex);v(full);until false; endconsumer:beginrepeat p(full);p(mutex);nextc:=buffer(out);out:= (out+1) mod n;v(mutex);v(empty);consume the item in nextc;until false; endcoendendu注意注意1.互斥信號量的互斥信號量的p、v操作在每一程序中必須操作在每一程序中必須成對出現(xiàn)成對出現(xiàn)1 1、“生產者生產者消費者消費者”問題問題2.資源信號量資源信號量(f

30、ull,empty)的的p、v操作也必須操作也必須成對出現(xiàn),但分別處于不同的程序中成對出現(xiàn),但分別處于不同的程序中3. p操作的次序不能顛倒:先檢查同步信號量,操作的次序不能顛倒:先檢查同步信號量,再檢查互斥信號量。否則可能死鎖再檢查互斥信號量。否則可能死鎖2 2、“哲學家進餐哲學家進餐”問題問題n5個哲學家個哲學家圍圍圓桌圓桌而坐,而坐,每人面前有一只空盤子,每每人面前有一只空盤子,每2人之間放一只筷子;哲學家的人之間放一只筷子;哲學家的動作包括動作包括思考思考和和進餐進餐,進餐時進餐時需要拿起他左右兩邊的兩只筷需要拿起他左右兩邊的兩只筷子,子,思考時思考時則將兩只筷子放回則將兩只筷子放回原

31、處。如何保證哲學家們的動原處。如何保證哲學家們的動作有序進行?作有序進行?問題描述問題描述求解進程同步與互斥問題注意事項求解進程同步與互斥問題注意事項1.1.進程應該先申請同步信號量,再申請互斥信進程應該先申請同步信號量,再申請互斥信號量;釋放順序不要求,但建議嵌套出現(xiàn)號量;釋放順序不要求,但建議嵌套出現(xiàn)2.2.任何信號量的任何信號量的p p和和v v操作都必須成對出現(xiàn)操作都必須成對出現(xiàn)對互斥信號量的操作成對出現(xiàn)在同一進程對互斥信號量的操作成對出現(xiàn)在同一進程中中對同步信號量的操作成對出現(xiàn)在不同進程對同步信號量的操作成對出現(xiàn)在不同進程中中3.3.在生產者消費者問題中,若只有一個緩沖區(qū)在生產者消費

32、者問題中,若只有一個緩沖區(qū),則不需要互斥信號量,則不需要互斥信號量進程同步與互斥問題解題思路進程同步與互斥問題解題思路n分清哪些是互斥問題分清哪些是互斥問題( (互斥訪問臨界資源互斥訪問臨界資源) ),哪些是同步問題哪些是同步問題( (具有前后執(zhí)行順序要求,一具有前后執(zhí)行順序要求,一個進程的操作結果影響另一個進程的操作個進程的操作結果影響另一個進程的操作) )。一類臨界資源設置一個互斥信號量,初值一類臨界資源設置一個互斥信號量,初值為其可用個數(shù),一般為為其可用個數(shù),一般為1 1,代表一次只允許,代表一次只允許一個進程訪問臨界資源。一個進程訪問臨界資源。有幾類同步進程,就設幾個同步信號量。有幾類

33、同步進程,就設幾個同步信號量。一個同步信號量表示一類同步進程是否可一個同步信號量表示一類同步進程是否可以開始或已經結束。以開始或已經結束。同步與互斥的解題步驟同步與互斥的解題步驟確定進程。包括進程的數(shù)量、進程的工作內確定進程。包括進程的數(shù)量、進程的工作內容,可以用流程圖描述。容,可以用流程圖描述。確定同步互斥關系。根據(jù)使用的是臨界資源確定同步互斥關系。根據(jù)使用的是臨界資源還是處理的前后關系,確定同步與互斥,然還是處理的前后關系,確定同步與互斥,然后確定信號量的個數(shù)、含義及對信號量的后確定信號量的個數(shù)、含義及對信號量的p p、v v操作。操作。用類用類c c語言描述同步或互斥算法。語言描述同步或互斥算法。讀者寫者問題讀者寫者問題有兩組并發(fā)進程: 讀者和寫者,共享一組數(shù)據(jù)區(qū) 要求: 允許多個讀者同時執(zhí)行讀操作 不允許讀者、寫者同時操作 不允許多個寫者同時操作如果讀者來:1)無讀者、寫者,新讀者可以讀2)有寫者等,但有其它讀者正在讀,則新讀者也可以讀3)有寫者寫,新讀者等如果寫者來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論