(完整word版)經(jīng)典PV操作講解和練習題_第1頁
(完整word版)經(jīng)典PV操作講解和練習題_第2頁
(完整word版)經(jīng)典PV操作講解和練習題_第3頁
(完整word版)經(jīng)典PV操作講解和練習題_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、在計算機操作系統(tǒng)中,PV操作是進程管理中的難點。首先應(yīng)弄清PV操作的含義:PV操作由P操作原語和V操作原語組成(原語是不可中斷的 過程),對信號量進行操作,具體定義如下:P ( S):將信號量S的值減1 ,即S=S-1 ;如果S30,則該進程繼續(xù)執(zhí)行;否則該進程置為等待狀態(tài),排入等待隊列。V (S):將信號量S的值加1,即S=S+1 ;如果S>0 ,則該進程繼續(xù)執(zhí)行;否則釋放隊列中第一個等待信號量的進程。PV操作的意義:我們用信號量及 PV操作來實現(xiàn)進程的同步和互斥。PV操作屬于進程的低級通信。什么是信號量?信號量(semaphore )的數(shù)據(jù)結(jié)構(gòu)為一個值和一個指針,指針指向等待該信 號

2、量的下一個進程。 信號量的值與相應(yīng)資源的使用情況有關(guān)。當它的值大于0時,表示當前可用資源的數(shù)量;當它的值小于0時,其絕對值表示等待使用該資源的進程個數(shù)。注意,信號量的值僅能由PV操作來改變。一般來說,信號量S30時,S表示可用資源的數(shù)量。執(zhí)行一次P操作意味著請求分配一個單位資源,因此 S的值減1;當S<0時,表示已經(jīng)沒有可用資源,請求者必須等待別的進 程釋放該類資源,它才能運行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此 S的值加1;若S£0,表示有某些進程正在等待該資源,因此要喚醒一個等待狀態(tài)的進程,使 之運行下去。利用信號量和PV操作實現(xiàn)進程互斥的一般模型是:進程P1

3、進程P2進程PnP (S);P(S);P(S);臨界區(qū);臨界區(qū);臨界區(qū);V (S);V (S);V(S);其中信號量S用于互斥,初值為 1。使用PV操作實現(xiàn)進程 互斥時應(yīng)該注意的是:(1)每個程序中用戶實現(xiàn)互斥的 P、V操作必須 成對出現(xiàn),先做P操作,進臨界區(qū),后 做V操作,出臨界區(qū)。若有多個分支,要認真檢查其成對性。(2) P、V操作應(yīng)分別緊靠臨界區(qū)的頭尾部,臨界區(qū)的代碼應(yīng)盡可能短,不能有死循環(huán)。(3)互斥信號量的初值一般為 1。利用信號量和 PV操作實現(xiàn)進程同步PV操作是典型的同步機制之一。 用一個信號量與一個消息聯(lián)系起來, 當信號量的值為0時, 表示期望的消息尚未產(chǎn)生;當信號量的值非 0

4、時,表示期望的消息已經(jīng)存在。 用PV操作實 現(xiàn)進程同步時,調(diào)用 P操作測試消息是否到達,調(diào)用 V操作發(fā)送消息。使用PV操作實現(xiàn)進程同步時應(yīng)該注意的是:(1)分析進程間的制約關(guān)系, 確定信號量種類。在保持進程間有正確的同步關(guān)系情況下, 哪個進程先執(zhí)行,哪些進程后執(zhí)行,彼此間通過什么資源(信號量)進行協(xié)調(diào),從而明確要 設(shè)置哪些信號量。(2)信號量的初值與相應(yīng)資源的數(shù)量有關(guān),也與P、V操作在程序代碼中出現(xiàn)的位置有關(guān)。(3)同一信號量的P、V操作要成對出現(xiàn),但它們 分別在不同的進程代碼中。PV操作(二)【例1】生產(chǎn)者-消費者問題在多道程序環(huán)境下,進程同步是一個十分重要又令人感興趣的問題,而生產(chǎn)者-消費

5、者問題是其中一個有代表性的進程同步問題。下面我們給出了各種情況下的生產(chǎn)者-消費者問題,深入地分析和透徹地理解這個例子,對于全面解決操作系統(tǒng)內(nèi)的同步、互斥問題將有很大幫助。(1) 一個生產(chǎn)者,一個消費者,公用一個緩沖區(qū)。定義兩個同步信號量:empty表示緩沖區(qū)是否為空,初值為 1。full表不'緩沖區(qū)中是否為滿,初值為 0。生產(chǎn)者進程while(TRUE)生產(chǎn)一個產(chǎn)品;P(empty);產(chǎn)品送往Buffer;V(full);消費者進程while(True)P(full);從Buffer取出一個產(chǎn)品;V(empty);消費該產(chǎn)品;(2) 一個生產(chǎn)者,一個消費者,公用 n個環(huán)形緩沖區(qū)。定義兩

6、個同步信號量:empty 表示緩沖區(qū)是否為空,初值為 n 。full 表示緩沖區(qū)中是否為滿,初值為 0 。設(shè)緩沖區(qū)的編號為1n-1 ,定義兩個指針in和out,分別是生產(chǎn)者進程和消費者進程使 用的指針,指向下一個可用的緩沖區(qū)。生產(chǎn)者進程while(TRUE)生產(chǎn)一個產(chǎn)品 ;P(empty);產(chǎn)品送往buffer ( in );in=(in+1)mod n ;V(full);消費者進程while(TRUE)P(full);從 buffer ( out )中取出產(chǎn)品;out=(out+1)mod n ;V(empty);消費該產(chǎn)品 ;( 3 )一組生產(chǎn)者,一組消費者,公用 n 個環(huán)形緩沖區(qū)在這個問

7、題中, 不僅生產(chǎn)者與消費者之間要同步, 而且各個生產(chǎn)者之間、 各個消費者之間 還必須互斥地訪問緩沖區(qū)。定義四個信號量:empty 表示緩沖區(qū)是否為空,初值為 n 。full 表示緩沖區(qū)中是否為滿,初值為 0 。1。1。in 和 out ,分別是生產(chǎn)者進程和消費者進程使mutex1 生產(chǎn)者之間的互斥信號量,初值為號量,初值為mutex2 消費者之間的互斥信號量,初值為設(shè)緩沖區(qū)的編號為1n-1 ,定義兩個指針 用的指針,指向下一個可用的緩沖區(qū)。生產(chǎn)者進程while(TRUE)生產(chǎn)一個產(chǎn)品 ;P(empty);P(mutex1) ;產(chǎn)品送往 buffer ( in ); in=(in+1)mod n

8、 ; V(mutex1);V(full);消費者進程while(TRUE) P(full);P(mutex2) ; 從 buffer ( out )中取出產(chǎn)品; out=(out+1)mod n ; V ( mutex2 ); V(empty);消費該產(chǎn)品 ;需要注意的是無論在生產(chǎn)者進程中還是在消費者進程中,兩個P 操作的次序不能顛倒。應(yīng)先執(zhí)行同步信號量的 P 操作,然后再執(zhí)行互斥信號量的 P 操作,否則可能造成進程死鎖?!纠?2 】 桌上有一空盤,允許存放一只水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子, 女兒專等吃盤中的蘋果。 規(guī)定當盤空時一次只能放一只水果供吃者取用,

9、請用P、V原語實現(xiàn)爸爸、兒子、女兒三個并發(fā)進程的同步。分析 在本題中,爸爸、兒子、女兒共用一個盤子,盤中一次只能放一個水果。當盤子為空時, 爸爸可將一個水果放入果盤中。 若放入果盤中的是桔子, 則允許兒子吃, 女兒必須等待;若放入果盤中的是蘋果,則允許女兒吃,兒子必須等待。本題實際上是生產(chǎn)者 - 消費者問題的一種變形。這里, 生產(chǎn)者放入緩沖區(qū)的產(chǎn)品有兩類,消費者也有兩類,每類消費者只消費其中固定的一類產(chǎn)品。解 : 在本題中, 應(yīng)設(shè)置三個信號量S、 So、 Sa, 信號量 S 表示盤子是否為空, 其初值為 l ;信號量 So 表示盤中是否有桔子, 其初值為0; 信號量 Sa 表示盤中是否有蘋果,

10、 其初值為 0 。同步描述如下:int S =1;int Sa = 0;int So = 0; main() cobeginfather(); /* 父親進程 */son(); /* 兒子進程 */daughter(); /* 女兒進程 */ coend father() while(1)P(S);將水果放入盤中 ;if (放入的是桔子) V(So);else V(Sa); son() while(1) P(So);從盤中取出桔子;V(S);吃桔子 ; daughter() while(1) P(Sa); 從盤中取出蘋果;V(S);吃蘋果 ;思考題:四個進程A、B、C、D都要讀一個共享文件 F,系統(tǒng)允許多個進程同時讀文件 F。但限制是 進程A和進程C不能同時讀文件 F,進程B和進程D也不能同時讀文件 F。為了使這四個進 程并發(fā)執(zhí)行時能按系統(tǒng)要求使用文件,現(xiàn)用 PV操作進行管理,請回答下面的問題:(1)應(yīng)定義的信號量及初值: 。(2)在下列的程序中填上適當?shù)?P、V操作,以保證它們能正確并發(fā)工作:A()B()C()D()1;3;5;7;re

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論