計算機操作系統(tǒng)之pv原語分析及計算_第1頁
已閱讀1頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)課程之操作系統(tǒng)課程之PVPV原語原語PV原語通過操作信號量來處理進程間的同步與互斥的問題。其核心就是一段不可分割不可中斷的程序。信號量的概念1965年由著名的荷蘭計算機科學家Dijkstra提出,其基本思路是用一種新的變量類型(semaphe)來記錄當前可用資源的數(shù)量。有兩種實現(xiàn)方式:1)semaphe的取值必須大于或等于0。0表示當前已沒有空閑資源,而正數(shù)表示當前空閑資源的數(shù)量;2)semaphe的取值可正可負,負數(shù)的絕對值表

2、示正在等待進入臨界區(qū)的進程個數(shù)。信號量是由操作系統(tǒng)來維護的,用戶進程只能通過初始化和兩個標準原語(P、V原語)來訪問。初始化可指定一個非負整數(shù),即空閑資源總數(shù)。P原語:P是荷蘭語Proberen(測試)的首字母。為阻塞原語,負責把當前進程由運行狀態(tài)轉(zhuǎn)換為阻塞狀態(tài),直到另外一個進程喚醒它。操作為:申請一個空閑資源(把信號量減1),若成功,則退出;若失敗,則該進程被阻塞;V原語:V是荷蘭語Verhogen(增加)的首字母。為喚醒原語,負責把

3、一個被阻塞的進程喚醒,它有一個參數(shù)表,存放著等待被喚醒的進程信息。操作為:釋放一個被占用的資源(把信號量加1),如果發(fā)現(xiàn)有被阻塞的進程,則選擇一個喚醒之。具體PV原語對信號量的操作可以分為三種情況:1)把信號量視為一個加鎖標志位,實現(xiàn)對一個共享變量的互斥訪問。實現(xiàn)過程:P(mutex)mutex的初始值為1訪問該共享數(shù)據(jù)V(mutex)非臨界區(qū)2)把信號量視為是某種類型的共享資源的剩余個數(shù),實現(xiàn)對一類共享資源的訪問。實現(xiàn)過程:P(res

4、ource)resource的初始值為該資源的個數(shù)N使用該資源;V(resource)非臨界區(qū)3)把信號量作為進程間的同步工具實現(xiàn)過程:臨界區(qū)C1;P(S)V(S)臨界區(qū)C2;哲學家問題PV原語程序2009年03月10日星期二21:29V(c[i1mod5])V(c[i])EndPV原語實現(xiàn)互斥與同步2008年09月19日星期五17:28PVPV原語的含義原語的含義P操作和V操作是不可中斷的程序段,稱為原語。PV原語及信號量的概念都是由

5、荷蘭科學家E.W.Dijkstra提出的。信號量sem是一整數(shù),sem大于等于零時代表可供并發(fā)進程使用的資源實體數(shù),但sem小于零時則表示正在等待使用臨界區(qū)的進程數(shù)。P原語操作的動作是:(1)sem減1;(2)若sem減1后仍大于或等于零,則進程繼續(xù)執(zhí)行;(3)若sem減1后小于零,則該進程被阻塞后進入與該信號相對應的隊列中,然后轉(zhuǎn)進程調(diào)度。V原語操作的動作是:(1)sem加1;(2)若相加結(jié)果大于零,則進程繼續(xù)執(zhí)行;(3)若相加結(jié)果小

6、于或等于零,則從該信號的等待隊列中喚醒一等待進程,然后再返回原進程繼續(xù)執(zhí)行或轉(zhuǎn)進程調(diào)度。PV操作對于每一個進程來說,都只能進行一次,而且必須成對使用。在PV原語執(zhí)行期間不允許有中斷的發(fā)生。用PVPV原語實現(xiàn)進程的互斥原語實現(xiàn)進程的互斥由于用于互斥的信號量sem與所有的并發(fā)進程有關(guān),所以稱之為公有信號量。公有信號量的值反映了公有資源的數(shù)量。只要把臨界區(qū)置于P(sem)和V(sem)之間,即可實現(xiàn)進程間的互斥。就象火車中的每節(jié)車廂只有一個衛(wèi)

7、生間,該車廂的所有旅客共享這個公有資源:衛(wèi)生間,所以旅客間必須互斥進入衛(wèi)生間,只要把衛(wèi)生間放在P(sem)和V(sem)之間,就可以到達互斥的效果。以下例子說明進程的互斥實現(xiàn)。例1生產(chǎn)圍棋的工人不小心把相等數(shù)量的黑子和白子混裝載一個箱子里,現(xiàn)要用自動分揀系統(tǒng)把黑子和白子分開,該系統(tǒng)由兩個并發(fā)執(zhí)行的進程組成,功能如下:(1)進程A專門揀黑子,進程B專門揀白子;(2)每個進程每次只揀一個子,當一個進程在揀子時不允許另一個進程去揀子;分析:分

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論