嵌入式系統(tǒng)教學:操作系統(tǒng)4-同步ppt課件_第1頁
嵌入式系統(tǒng)教學:操作系統(tǒng)4-同步ppt課件_第2頁
嵌入式系統(tǒng)教學:操作系統(tǒng)4-同步ppt課件_第3頁
嵌入式系統(tǒng)教學:操作系統(tǒng)4-同步ppt課件_第4頁
嵌入式系統(tǒng)教學:操作系統(tǒng)4-同步ppt課件_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、進程管理進程同步 定義:我們把在異步環(huán)境下的一組并發(fā)進定義:我們把在異步環(huán)境下的一組并發(fā)進程因直接制約,相互發(fā)送音訊,并進展相互協(xié)程因直接制約,相互發(fā)送音訊,并進展相互協(xié)作、相互等待,使得各進程按一定的速度執(zhí)行作、相互等待,使得各進程按一定的速度執(zhí)行的過程稱為進程間的同步。的過程稱為進程間的同步。 具有同步關(guān)系的一組并發(fā)進程稱為協(xié)作進具有同步關(guān)系的一組并發(fā)進程稱為協(xié)作進程;協(xié)作進程間相互發(fā)送的信號稱為音訊或事程;協(xié)作進程間相互發(fā)送的信號稱為音訊或事件。件。 同步的概念進程同步進程同步 例:計算進程和打印進程公用同一緩沖區(qū)例:計算進程和打印進程公用同一緩沖區(qū)BufBuf。 PC( PC(計算計算

2、) PP) PP打印打印 A:local Buf B:local Pri A:local Buf B:local PriRepeat RepeatRepeat Repeat Buf Buf Pri Buf Buf Buf Pri BufUntil Buf=Until Buf=空計算空計算Until Pri Until Pri 空空得到計算結(jié)果得到計算結(jié)果打印打印BufBuf中數(shù)據(jù)中數(shù)據(jù)Buf Buf 計算結(jié)果計算結(jié)果 去除去除BufBuf中數(shù)據(jù)中數(shù)據(jù)Goto A Goto A Goto B Goto B進程同步進程同步 問題:浪費CPU時間。 采用音訊的方法實現(xiàn)直接制約(同步): 設過程Wai

3、t(過程名)表示進程等待協(xié)作進程發(fā)來音訊。 過程signal(音訊名)表示向協(xié)作進程發(fā)送音訊。 設音訊名Bufempty表示Buf空,設音訊名Buffull表示Buf滿裝滿數(shù)據(jù)。 初始化:Bufempty=true,Buffull=false 進程同步進程同步Pc PpA:wait(Bufempty) B:wait(Buffull) 計算 打印Buf中的數(shù)據(jù) Buf 計算結(jié)果 去除Buf中的數(shù)據(jù) Bufempty false Buffull false Signal(Buffull) signal(Bufempty) Goto A Goto B進程同步進程同步 私用有信號量私用有信號量 把各進

4、程間發(fā)送的音訊作為信號量對待,把各進程間發(fā)送的音訊作為信號量對待,這種信號量只與制約進程和被制約進程有關(guān),這種信號量只與制約進程和被制約進程有關(guān),但不與整組并發(fā)進程有關(guān),這種信號量稱為但不與整組并發(fā)進程有關(guān),這種信號量稱為私用信號量私用信號量Private SemaphorePrivate Semaphore。 與私用信號量相對應,我們稱進程互斥時與私用信號量相對應,我們稱進程互斥時運用的信號量為公用信號量。運用的信號量為公用信號量。進程同步進程同步 用用P P、V V原語操作實現(xiàn)進程的直接制約原語操作實現(xiàn)進程的直接制約( (同步同步) ) 例子:設進程和經(jīng)過緩沖區(qū)隊列傳送數(shù)據(jù)如圖例子:設進程

5、和經(jīng)過緩沖區(qū)隊列傳送數(shù)據(jù)如圖3.133.13, PA, PA為發(fā)送進程,為發(fā)送進程,PBPB為接納進程;為接納進程;PAPA發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)時調(diào)用發(fā)送過程時調(diào)用發(fā)送過程deposit(data)deposit(data),PBPB接納數(shù)據(jù)時調(diào)用過接納數(shù)據(jù)時調(diào)用過程程remove(data)remove(data)。且數(shù)據(jù)的發(fā)送與接納過程滿足如下。且數(shù)據(jù)的發(fā)送與接納過程滿足如下條件:條件: 1 1在在PAPA至少送一塊數(shù)據(jù)入一個緩沖區(qū)之前,至少送一塊數(shù)據(jù)入一個緩沖區(qū)之前,PBPB不能不能夠從緩沖區(qū)中取出數(shù)據(jù)假定數(shù)據(jù)塊長等于緩沖區(qū)長夠從緩沖區(qū)中取出數(shù)據(jù)假定數(shù)據(jù)塊長等于緩沖區(qū)長度。度。進程同步進程同

6、步 2PA往緩沖隊列發(fā)送數(shù)據(jù)時,至少有一個緩沖區(qū)是空的; 3由PA發(fā)送的數(shù)據(jù)塊在緩沖隊列中按先進先出FIFO方式陳列。 PA Buff1 buff2 buff3 . Buffn PB進程同步進程同步 我們按如下三步描畫過程deposit(data)和 remove (data) 1設Buf-empty為進程PA的私用信號量,表示緩沖區(qū)能否有空;Buf-full為進程PB的私用信號量,表示緩沖區(qū)能否有數(shù)可?。?2Buf-empty的初始值為n (n為緩沖隊列的緩沖區(qū)個數(shù)),Buf-full的初始值為0;進程同步進程同步 3) 算法描畫如下: PA: deposit(data) Begin loc

7、al x; P(Buf-empty); 按FIFO方式選擇一個空緩沖區(qū)Buf(x); Buf(x) data; Buf(x)置滿標志; V(Buf-full); End.進程同步進程同步 PB PB: remove(data) remove(data) Begin local x; Begin local x; P(Buf-full); P(Buf-full); 按按FIFOFIFO方式選擇一個裝方式選擇一個裝滿數(shù)據(jù)的緩沖區(qū)滿數(shù)據(jù)的緩沖區(qū)Buf(x);Buf(x); data Buf(x); data Buf(x); Buf(x) Buf(x)置空標志;置空標志; V(Buf-empty);

8、V(Buf-empty); End. End.進程同步進程同步 這里,部分變量x用來指明緩沖區(qū)的區(qū)號;給Buf(x)置標志位是為了便于區(qū)別和搜索空緩沖區(qū)與非空緩沖區(qū)。 比較互斥與同步的兩個例子:互斥 同步設置信號量S公用 設置信號量S1,S2 私用信號量初值S=1 信號量初值S1=n., S2=0。 進程同步進程同步 算法描畫: P1 P1 Begin begin P(S) P(S1) 臨界資源 送數(shù) VS VS2 End End進程同步進程同步 P2 P2 P2 P2 Begin begin Begin begin P(S) P(S2) P(S) P(S2) 臨界資源臨界資源 取數(shù)取數(shù) V

9、VS S V VS1S1 End End End End進程同步進程同步 示圖: P1、P2 P1 P2 PS P(S1) P(S2) 臨界區(qū) 送數(shù) 取數(shù) VS VS2 VS1 進程同步進程同步 消 費 者 消 費 者 問 題 P r o d u c e r Consumer Problems 我們把系統(tǒng)中運用某一類資源的進程稱為該資源的消費者,把釋放同類資源的進程稱為該資源的消費者。 多個消費者 多個消費者P1 多個緩沖區(qū) C1P2 1 2 . n C2 Pn Cn進程同步進程同步設消費者進程和消費者進程是等效的,設消費者進程和消費者進程是等效的,其 中 , 各 消 費 者 進 程 運 用

10、的 過 程其 中 , 各 消 費 者 進 程 運 用 的 過 程deposit(data)deposit(data)和各消費者運用的過程和各消費者運用的過程remove( data)remove( data)可描畫如下:可描畫如下:首先,我們可以看到消費者首先,我們可以看到消費者消費者問消費者問題是一個同步問題,即消費者和消費者之題是一個同步問題,即消費者和消費者之間滿足如下條件:間滿足如下條件:進程同步進程同步1消費者想接納數(shù)據(jù)時,有界緩沖區(qū)中至少有一個單元是滿的。2消費者想發(fā)送數(shù)據(jù)時,有界緩沖區(qū)中至少有一個單元是空的。另外,由于有界緩沖區(qū)是臨界資源,因此,各消費者進程和各消費者進程之間必需互斥執(zhí)行,即在一個時辰,只需一個進程運用緩沖區(qū)。進程同步進程同步下面是多個消費者、多個消費者、多個緩沖區(qū)的問題:設置信號量: mutex:公用信號量,表示消費者進程與消費者進程的互斥信號量; avail:消費者進程的私用信號量,其值表示有界緩沖區(qū)中的空單元數(shù)目緩沖區(qū)空的個數(shù); 進程同步進程同步 full:消費者進程的私用信號量,其值表示有界緩沖區(qū)中的非空單元數(shù)目緩沖區(qū)滿的個數(shù)。 給信號量賦初值

溫馨提示

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

評論

0/150

提交評論