版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、26.26.假定有如下獨木橋問題:過橋時,同一方向的行人可連續(xù)過橋,當某一方向有人假定有如下獨木橋問題:過橋時,同一方向的行人可連續(xù)過橋,當某一方向有人過橋時,另一方向的行人必須等待;當某一方向無人過橋時,另一方向的行人可以過過橋時,另一方向的行人必須等待;當某一方向無人過橋時,另一方向的行人可以過橋。試用信號量機制解決。橋。試用信號量機制解決。答:答:(1)將獨木橋的兩個方向分別標記為將獨木橋的兩個方向分別標記為A和B。用整型變量。用
2、整型變量countAcountA和countBcountB分別表示分別表示A、B方向方向上已在獨木橋上的行人數,初值都設置為上已在獨木橋上的行人數,初值都設置為0。需要設置三個初值都為。需要設置三個初值都為1的互斥信號量:的互斥信號量:MAMA用來用來實現對實現對countAcountA的互斥訪問,的互斥訪問,MBMB用來實現對用來實現對countBcountB的互斥訪問,的互斥訪問,mutexmutex用來實現兩個方向的行用來實現兩個
3、方向的行人對獨木橋的互斥使用。人對獨木橋的互斥使用。(2)(2)以下使用信號量機制對以下使用信號量機制對A方向上的行人過橋和方向上的行人過橋和B方向上的行人過橋的算法進行描述:方向上的行人過橋的算法進行描述:intcountAcountBcountA=0countB=0SemapheMAMBmutex定義了三個互斥信號量MA.value=1MB.value=1mutex.value=1cobeginprocessA_direction_
4、cross_bridge_personA方向上過獨木橋的行人進程方向上過獨木橋的行人進程P(MA)實現對臨界資源countA的互斥訪問當A方向上沒有行人過獨木橋時,這時有可能存在B方向上的行人在過獨木橋。if(countA==0)P(mutex)如果當前獨木橋正在被使用,說明如果當前獨木橋正在被使用,說明B方向上的行人正在過橋,則方向上的行人正在過橋,則A方向上的行人方向上的行人必須等待。必須等待。countA=countA1當B方向上
5、沒有行人過橋時,則方向上沒有行人過橋時,則A方向上的行人可以過獨木橋。因此方向上的行人可以過獨木橋。因此A方向上已在獨木橋上的行人數增加方向上已在獨木橋上的行人數增加1個V(MA)退出臨界區(qū)過橋;A方向上的行人通過獨木橋P(MA)實現對臨界資源countA的互斥訪問countA=countA1當A方向上的行人已經通過了獨木橋時,則A方向上在獨木橋上的行人數需要減少1個if(countA==0)如果A方向上在獨木橋上的行人數減少到0,則V
6、(mutex)需要釋放獨木橋臨界資源,喚醒第一個由于在等待獨木橋而處于等待狀態(tài)的B方向上過獨木橋的行人進程(如果此進程存在)V(MA)退出臨界區(qū)processB_direction_cross_bridge_personB方向上過獨木橋的行人進程方向上過獨木橋的行人進程P(MB)實現對臨界資源countB的互斥訪問當B方向上沒有行人過獨木橋時,這時有可能存在A方向上的行人在過獨木橋。if(countB==0)P(mutex)如果當前獨木
7、橋正在被使用,說明如果當前獨木橋正在被使用,說明A方向上的行人正在過橋,則方向上的行人正在過橋,則B方向上的行人方向上的行人必須等待。必須等待。countB=countB1當A方向上沒有行人過橋時,則方向上沒有行人過橋時,則B方向上的行人可以過獨木橋。因此方向上的行人可以過獨木橋。因此B方向上已在獨木橋上的行人數增加方向上已在獨木橋上的行人數增加1個V(MB)退出臨界區(qū)采用信號量機制描述司機與售票員之間的同步算法如下:SemapheS1
8、S2首先定義兩個信號量S1和S2S1.value=0S2.value=0cobeginprocessdriver()processconduct()while(1)while(1)P(S1)關車門啟動汽車V(S1)正常行車售票到站停車P(S2)V(S2)開車門上下乘客coend我們來分析這個過程,首先將信號量S1和S2的初值都設為0.然后進行以下分析:1.P(S1):S1.value=S1.value1=10,那么司機進程就自己阻塞起來
9、,等待售票員進程,售票員關車門。2.V(S1):S1.value=S1.value1=0=0,喚醒司機進程,那么司機就開始啟動汽車、正常行車;在此期間,售票員也可以同時進行售票。3.P(S2):S2.value=S2.value1=10,那么售票員在售完票后,售票員進程就會自己阻塞起來,等待司機進程。這樣就能避免當司機還沒到站停車時,售票員就已經將車門打開了。而這是不允許的。4.V(S2):S2.value=S2.value1=0=0,
10、司機到站停車之后,就喚醒售票員進程,那么售票員就開啟車門讓乘客上下車。那么這個進程就完成了。3030一個閱覽室共有一個閱覽室共有100100個座位,用一張表來管理,每個表目記錄座位號和讀者姓名。個座位,用一張表來管理,每個表目記錄座位號和讀者姓名。讀者進入時要先在表上登記,離開時要注銷登記。試寫出讀者讀者進入時要先在表上登記,離開時要注銷登記。試寫出讀者“進入進入”和“注銷注銷”之間的同步算法。間的同步算法。答:讀者的動作有兩個,一是填
11、表進入閱覽室讀書,這時要考慮閱覽室里是否有座位;二是讀者答:讀者的動作有兩個,一是填表進入閱覽室讀書,這時要考慮閱覽室里是否有座位;二是讀者閱讀完畢,需要注銷登記再離開閱覽室,這時的操作要考慮閱覽室里是否有讀者存在。讀者在閱閱讀完畢,需要注銷登記再離開閱覽室,這時的操作要考慮閱覽室里是否有讀者存在。讀者在閱覽室讀書時,由于沒有引起資源的變動,不算動作變化。覽室讀書時,由于沒有引起資源的變動,不算動作變化。因此,設置算法所涉及的三個信號量
12、:因此,設置算法所涉及的三個信號量:empty資源信號量資源信號量——表示閱覽室里的空座位的數目,表示閱覽室里的空座位的數目,初值為初值為100;full資源信號量資源信號量——表示閱覽室里有人的座位的數目(或表示閱覽室里的讀者的數目)表示閱覽室里有人的座位的數目(或表示閱覽室里的讀者的數目),初值為初值為0;mutex互斥信號量互斥信號量——表示對登記表這個臨界資源的互斥訪問,初值設為表示對登記表這個臨界資源的互斥訪問,初值設為1。使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)第二章部分答案
- 操作系統(tǒng)第二章作業(yè)答案
- 操作系統(tǒng)第二章課后答案
- 操作系統(tǒng)第二章習題答案
- 第二章 操作系統(tǒng)
- 操作系統(tǒng)習題第二章
- 第二章操作系統(tǒng)學案
- 第二章 windows操作系統(tǒng)操作題
- 第二章操作系統(tǒng)的邏輯結構
- 第二章-操作系統(tǒng)windows-xp
- 操作系統(tǒng)第二章進程管理測驗題答案
- 計應--第二章-windows-7操作系統(tǒng)-試題
- 第二章部分試題及答案
- 環(huán)境監(jiān)測第二章部分答案
- 操作系統(tǒng)部分答案
- 計算機練習冊第二章 windows xp操作系統(tǒng)
- 第二章 中醫(yī)操作
- 環(huán)境監(jiān)測第二章部分習題答案
- 專升本(計算機專業(yè)課件)操作系統(tǒng)課件第二章管程
- 第二章 中醫(yī)操作_15662
評論
0/150
提交評論