



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、在計算機操作系統(tǒng)中,PV操作是進程管理中的難點。首先應弄清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操作來實現進程的同步和互斥。PV操作屬于進程的低級通信。什么是信號量?信號量(semaphore )的數據結構為一個值和一個指針,指針指向等待該信 號
2、量的下一個進程。 信號量的值與相應資源的使用情況有關。當它的值大于0時,表示當前可用資源的數量;當它的值小于0時,其絕對值表示等待使用該資源的進程個數。注意,信號量的值僅能由PV操作來改變。一般來說,信號量S30時,S表示可用資源的數量。執(zhí)行一次P操作意味著請求分配一個單位資源,因此 S的值減1;當S<0時,表示已經沒有可用資源,請求者必須等待別的進 程釋放該類資源,它才能運行下去。而執(zhí)行一個V操作意味著釋放一個單位資源,因此 S的值加1;若S£0,表示有某些進程正在等待該資源,因此要喚醒一個等待狀態(tài)的進程,使 之運行下去。利用信號量和PV操作實現進程互斥的一般模型是:進程P1
3、進程P2進程PnP (S);P(S);P(S);臨界區(qū);臨界區(qū);臨界區(qū);V (S);V (S);V(S);其中信號量S用于互斥,初值為 1。使用PV操作實現進程 互斥時應該注意的是:(1)每個程序中用戶實現互斥的 P、V操作必須 成對出現,先做P操作,進臨界區(qū),后 做V操作,出臨界區(qū)。若有多個分支,要認真檢查其成對性。(2) P、V操作應分別緊靠臨界區(qū)的頭尾部,臨界區(qū)的代碼應盡可能短,不能有死循環(huán)。(3)互斥信號量的初值一般為 1。利用信號量和 PV操作實現進程同步PV操作是典型的同步機制之一。 用一個信號量與一個消息聯系起來, 當信號量的值為0時, 表示期望的消息尚未產生;當信號量的值非 0
4、時,表示期望的消息已經存在。 用PV操作實 現進程同步時,調用 P操作測試消息是否到達,調用 V操作發(fā)送消息。使用PV操作實現進程同步時應該注意的是:(1)分析進程間的制約關系, 確定信號量種類。在保持進程間有正確的同步關系情況下, 哪個進程先執(zhí)行,哪些進程后執(zhí)行,彼此間通過什么資源(信號量)進行協調,從而明確要 設置哪些信號量。(2)信號量的初值與相應資源的數量有關,也與P、V操作在程序代碼中出現的位置有關。(3)同一信號量的P、V操作要成對出現,但它們 分別在不同的進程代碼中。PV操作(二)【例1】生產者-消費者問題在多道程序環(huán)境下,進程同步是一個十分重要又令人感興趣的問題,而生產者-消費
5、者問題是其中一個有代表性的進程同步問題。下面我們給出了各種情況下的生產者-消費者問題,深入地分析和透徹地理解這個例子,對于全面解決操作系統(tǒng)內的同步、互斥問題將有很大幫助。(1) 一個生產者,一個消費者,公用一個緩沖區(qū)。定義兩個同步信號量:empty表示緩沖區(qū)是否為空,初值為 1。full表不'緩沖區(qū)中是否為滿,初值為 0。生產者進程while(TRUE)生產一個產品;P(empty);產品送往Buffer;V(full);消費者進程while(True)P(full);從Buffer取出一個產品;V(empty);消費該產品;(2) 一個生產者,一個消費者,公用 n個環(huán)形緩沖區(qū)。定義兩
6、個同步信號量:empty 表示緩沖區(qū)是否為空,初值為 n 。full 表示緩沖區(qū)中是否為滿,初值為 0 。設緩沖區(qū)的編號為1n-1 ,定義兩個指針in和out,分別是生產者進程和消費者進程使 用的指針,指向下一個可用的緩沖區(qū)。生產者進程while(TRUE)生產一個產品 ;P(empty);產品送往buffer ( in );in=(in+1)mod n ;V(full);消費者進程while(TRUE)P(full);從 buffer ( out )中取出產品;out=(out+1)mod n ;V(empty);消費該產品 ;( 3 )一組生產者,一組消費者,公用 n 個環(huán)形緩沖區(qū)在這個問
7、題中, 不僅生產者與消費者之間要同步, 而且各個生產者之間、 各個消費者之間 還必須互斥地訪問緩沖區(qū)。定義四個信號量:empty 表示緩沖區(qū)是否為空,初值為 n 。full 表示緩沖區(qū)中是否為滿,初值為 0 。1。1。in 和 out ,分別是生產者進程和消費者進程使mutex1 生產者之間的互斥信號量,初值為號量,初值為mutex2 消費者之間的互斥信號量,初值為設緩沖區(qū)的編號為1n-1 ,定義兩個指針 用的指針,指向下一個可用的緩沖區(qū)。生產者進程while(TRUE)生產一個產品 ;P(empty);P(mutex1) ;產品送往 buffer ( in ); in=(in+1)mod n
8、 ; V(mutex1);V(full);消費者進程while(TRUE) P(full);P(mutex2) ; 從 buffer ( out )中取出產品; out=(out+1)mod n ; V ( mutex2 ); V(empty);消費該產品 ;需要注意的是無論在生產者進程中還是在消費者進程中,兩個P 操作的次序不能顛倒。應先執(zhí)行同步信號量的 P 操作,然后再執(zhí)行互斥信號量的 P 操作,否則可能造成進程死鎖?!纠?2 】 桌上有一空盤,允許存放一只水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子, 女兒專等吃盤中的蘋果。 規(guī)定當盤空時一次只能放一只水果供吃者取用,
9、請用P、V原語實現爸爸、兒子、女兒三個并發(fā)進程的同步。分析 在本題中,爸爸、兒子、女兒共用一個盤子,盤中一次只能放一個水果。當盤子為空時, 爸爸可將一個水果放入果盤中。 若放入果盤中的是桔子, 則允許兒子吃, 女兒必須等待;若放入果盤中的是蘋果,則允許女兒吃,兒子必須等待。本題實際上是生產者 - 消費者問題的一種變形。這里, 生產者放入緩沖區(qū)的產品有兩類,消費者也有兩類,每類消費者只消費其中固定的一類產品。解 : 在本題中, 應設置三個信號量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)要求使用文件,現用 PV操作進行管理,請回答下面的問題:(1)應定義的信號量及初值: 。(2)在下列的程序中填上適當的 P、V操作,以保證它們能正確并發(fā)工作:A()B()C()D()1;3;5;7;re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人防工程制式銷售合同范本
- 分散采購服務合同范本
- 農村燃氣安裝合同范例
- 協助寵物國際托運合同范本
- 農田租賃合同范本
- 專利轉讓入股合同范本
- 養(yǎng)魚合作轉讓合同范本
- 公版采購合同范本
- 單位解聘教師合同范本
- 買賣中介公司合同范本
- 人教版小學數學一年級下冊教案
- 《住院患者身體約束的護理》團體標準解讀課件
- 新版人音版小學音樂一年級下冊全冊教案
- 2024年黑龍江建筑職業(yè)技術學院單招職業(yè)適應性測試題庫全面
- MOOC 跨文化交際通識通論-揚州大學 中國大學慕課答案
- 常用液壓元件型號對照表230
- 項目章程模板范文
- 泰山產業(yè)領軍人才工程系統(tǒng)
- 輪扣架支模體系材料量計算
- 主題班會教案《讀書好讀好書好讀書》班會方案
- 食物鏈和食物網課件(共18張PPT)
評論
0/150
提交評論