版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
管程的實(shí)現(xiàn)主要內(nèi)容一、Hoare管程數(shù)據(jù)結(jié)構(gòu)二、Hoare的wait操作三、Hoare的signal操作四、管程的應(yīng)用一、Hoare管程數(shù)據(jù)結(jié)構(gòu)霍爾方法采用信號(hào)量實(shí)現(xiàn)條件變量,將信號(hào)量的PV操作和同步操作封裝在管程的過(guò)程中。Hoare管程數(shù)據(jù)結(jié)構(gòu)(1)mutex(2)next和next-count(3)x-sem和x-count(1)mutex信號(hào)量mutex管理管程入口處的等待隊(duì)列,供管程中過(guò)程互斥調(diào)用,初值為1。進(jìn)程調(diào)用管程中的任何過(guò)程時(shí),應(yīng)執(zhí)行P(mutex);進(jìn)程退出管程時(shí)應(yīng)執(zhí)行V(mutex)開(kāi)放管程,以便其它調(diào)用者進(jìn)入。進(jìn)程在等待資源期間,應(yīng)允許其它進(jìn)程進(jìn)入管程,故在wait操作中也必須執(zhí)行V(mutex),否則會(huì)妨礙其它進(jìn)程進(jìn)入管程,導(dǎo)致無(wú)法釋放資源。123(2)next和next-count信號(hào)量next管理管程內(nèi)的緊急等待隊(duì)列,初值為0。凡發(fā)出signal操作的進(jìn)程應(yīng)該用P(next)掛起自己,加入緊急等待隊(duì)列,直到被釋放進(jìn)程退出管程或產(chǎn)生其它等待條件。進(jìn)程在退出管程的過(guò)程前,須檢查是否有別的進(jìn)程在信號(hào)量next(即緊急等待隊(duì)列)上等待,若有,則用V(next)喚醒它。next-count初值為0,用來(lái)記錄在next(即緊急等待隊(duì)列)上等待的進(jìn)程數(shù)目。12(3)x-sem和x-count信號(hào)量x-sem用來(lái)管理資源等待隊(duì)列,初值為0。進(jìn)程申請(qǐng)資源得不到滿足時(shí),執(zhí)行P(x-sem)掛起,加入x-sem所代表的資源隊(duì)列。釋放資源時(shí),需要知道是否有別的進(jìn)程在等待資源,因此用計(jì)數(shù)器x-count(初值為0)記錄等待資源(即資源等待隊(duì)列中)的進(jìn)程數(shù)。執(zhí)行signal操作時(shí),應(yīng)使等待資源(即資源等待隊(duì)列中)的某個(gè)進(jìn)程立即恢復(fù)運(yùn)行,而不使其它進(jìn)程搶先進(jìn)入管程,這可以用V(x-sem)來(lái)實(shí)現(xiàn)。12每個(gè)管程定義如下數(shù)據(jù)結(jié)構(gòu):typedefstructInterfaceModule{semaphoremutex;semaphorenext;intnext_count;}InterfaceModule;//進(jìn)程調(diào)用管程過(guò)程前使用的互斥信號(hào)量//發(fā)出signal的進(jìn)程掛起自己的信號(hào)量//在next上等待的進(jìn)程數(shù)//InterfaceModule是結(jié)構(gòu)體的名字mutex=1;next=0;next_count=0;//初始化語(yǔ)句voidenter(InterfaceModule&IM){P(IM.mutex);}//優(yōu)先喚醒管程內(nèi)緊急等待隊(duì)列中的等待進(jìn)程//當(dāng)管程內(nèi)無(wú)等待進(jìn)程時(shí)再喚醒管程外入口處的等待進(jìn)程voidleave(InterfaceModule&IM){if(IM.next_count>0)V(IM.next);elseV(IM.mutex);}二、Hoare的wait操作voidwait(semaphore&x_sem,int&x_count,InterfaceModule&IM){ x_count++; ifIM.next_count>0V(IM.next); elseV(IM.mutex);P(x_sem);x_count--;}//等待資源的進(jìn)程睡眠之前,優(yōu)先喚醒管程內(nèi)緊急等待隊(duì)列中的就緒進(jìn)程//若管程內(nèi)緊急等待隊(duì)列空,則喚醒管程入口處等待進(jìn)入管程的隊(duì)列中的進(jìn)程//喚醒其它進(jìn)程之后,等待資源的進(jìn)程加入x_sem所管理的資源等待隊(duì)列睡眠,下面的x_count--會(huì)暫停執(zhí)行,待該進(jìn)程被喚醒后再執(zhí)行//等待資源的進(jìn)程數(shù)增1,等待資源的進(jìn)程將加入x_sem所管理的資源等待隊(duì)列wait過(guò)程的一個(gè)執(zhí)行場(chǎng)景進(jìn)程P1在管程內(nèi)處于運(yùn)行狀態(tài)進(jìn)程P2在緊急等待隊(duì)列就緒進(jìn)程P3在管程入口處等待進(jìn)入管程現(xiàn)在P1調(diào)用wait過(guò)程初始狀態(tài)操作根據(jù)wait過(guò)程的操作定義,P1將停止運(yùn)行,進(jìn)入資源等待隊(duì)列。在此之前,P1必須首先喚醒P2,然后P1等待,P2運(yùn)行,P3繼續(xù)等待。wait過(guò)程細(xì)節(jié)P3入口等待隊(duì)列x1-sem資源等待隊(duì)列xn-sem資源等待隊(duì)列next-count緊急等待隊(duì)列管程入口等待隊(duì)列長(zhǎng)度next-count=1等待隊(duì)列長(zhǎng)度xn-count等待隊(duì)列長(zhǎng)度x1-count=管程管程等待區(qū)域…(即將進(jìn)入x1-sem資源等待隊(duì)列)x1_count++;ifIM.next_count>0P(x1_sem);V(IM.next);1P2P1P3入口等待隊(duì)列x1-sem資源等待隊(duì)列xn-sem資源等待隊(duì)列next-count緊急等待隊(duì)列管程入口等待隊(duì)列長(zhǎng)度next-count=1等待隊(duì)列長(zhǎng)度xn-count等待隊(duì)列長(zhǎng)度x1-count=管程管程等待區(qū)域…1P2P1(運(yùn)行)三、Hoare的signal操作voidsignal(semaphore&x_sem,int&x_count,InterfaceModule&IM){ ifx_count>0{ IM.next_count++; V(x_sem); P(IM.next); IM.next_count--;}}/*緊急等待隊(duì)列中的進(jìn)程數(shù)減少1個(gè)*///執(zhí)行signal操作的進(jìn)程將加入緊急等待隊(duì)列,因此該隊(duì)列進(jìn)程數(shù)增1//執(zhí)行signal操作的進(jìn)程自己阻塞前,先釋放一個(gè)等待資源的進(jìn)程//執(zhí)行signal操作的進(jìn)程進(jìn)入管程內(nèi)緊急等待隊(duì)列,下面的IM.next_count--暫停執(zhí)行,只有進(jìn)程被喚醒后才會(huì)執(zhí)行//若有等待資源的進(jìn)程,即x_sem資源等待隊(duì)列若有進(jìn)程P3入口等待隊(duì)列x1-sem資源等待隊(duì)列xn-sem資源等待隊(duì)列next-count緊急等待隊(duì)列管程入口等待隊(duì)列長(zhǎng)度next-count=等待隊(duì)列長(zhǎng)度xn-count等待隊(duì)列長(zhǎng)度x1-count=管程管程等待區(qū)域…1P2P1(P2即將喚醒管程內(nèi)的進(jìn)程P1)ifx1_count>0{IM.next_count++;P(IM.next);V(x1_sem);1P3入口等待隊(duì)列x1-sem資源等待隊(duì)列xn-sem資源等待隊(duì)列next-count緊急等待隊(duì)列管程入口等待隊(duì)列長(zhǎng)度next-count=等待隊(duì)列長(zhǎng)度xn-count等待隊(duì)列長(zhǎng)度x1-count=管程管程等待區(qū)域…1P2P1(P1運(yùn)行)x_count--;10P3入口等待隊(duì)列x1-sem資源等待隊(duì)列xn-sem資源等待隊(duì)列next-count緊急等待隊(duì)列管程入口等待隊(duì)列長(zhǎng)度next-count=等待隊(duì)列長(zhǎng)度xn-count等待隊(duì)列長(zhǎng)度x1-count=0管程管程等待區(qū)域…P2P1(P1運(yùn)行)1四、管程的應(yīng)用管程解決生產(chǎn)者-消費(fèi)者問(wèn)題typeproducer_consumer=monitor //管程定義{itemB[k]; //緩沖區(qū)個(gè)數(shù)intin,out; //存取指針intcount; //緩沖中產(chǎn)品數(shù)semaphorenotfull,notempty;//條件變量intnotfull_count,notempty_count;InterfaceModuleIM;defineappend,take;useenter,leave,wait,signal;//變量初始化In=out=0; count=0; notfull=0;notempty=0;notfull_count=notempty_count=0;IM.mutex=1;IM.next=0;IM.next_count=0;voidappend(itemx){ enter(IM); if(count==k)wait(notfull,notfull_count,IM); //緩沖已滿,在notfull隊(duì)列等待空白緩沖區(qū) B[in]=x; in=(in+1)%k; count++; //增加一個(gè)產(chǎn)品 signal(notempty,notempty_count,IM);//喚醒notempty隊(duì)列中的等待消費(fèi)者,自己入緊急等待隊(duì)列 leave(IM);}voidtake(item&x){ enter(IM);if(count==0)wait(notempty,notempty_count,IM);//在notempty隊(duì)列中等待滿緩沖區(qū) x=B[out]; out=(out+1)%k; count--; //減少一個(gè)產(chǎn)品 signal(notfull,notfull_count,IM);//喚醒notfull隊(duì)列中的等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息化背景下小學(xué)語(yǔ)文教學(xué)方案
- 產(chǎn)品研發(fā)項(xiàng)目風(fēng)險(xiǎn)管理流程
- 設(shè)備拆除作業(yè)安全技術(shù)方案
- 一年級(jí)數(shù)學(xué)空間感知專項(xiàng)訓(xùn)練題目
- 制造業(yè)生產(chǎn)線自動(dòng)化方案
- 地基排水施工方案
- 足球場(chǎng)場(chǎng)地施工方案
- 自流平地面鋪設(shè)方案
- 高處作業(yè)安全方案
- 房屋修繕施工監(jiān)測(cè)評(píng)估方案
- 廣東省深圳市羅湖區(qū)2024-2025學(xué)年高一上學(xué)期1月期末物理試題(含答案)
- 《危險(xiǎn)化學(xué)品安全法》全文學(xué)習(xí)課件
- 星羅棋布的港口課件
- 2025年下半年貴州遵義市市直事業(yè)單位選調(diào)56人考試筆試備考題庫(kù)及答案解析
- 2026年企業(yè)生產(chǎn)計(jì)劃制定優(yōu)化與訂單交付率提升方案
- 借用土地合同范本
- 支撐梁鋼筋自動(dòng)計(jì)算表模板
- 2025天津大學(xué)管理崗位集中招聘15人筆試考試備考題庫(kù)及答案解析
- 請(qǐng)結(jié)合材料理論聯(lián)系實(shí)際分析如何正確評(píng)價(jià)人生價(jià)值?人生價(jià)值的實(shí)現(xiàn)需要哪些條件?參考答案
- 2026年黨支部主題黨日活動(dòng)方案
- 幼兒園中班交通安全教育課件
評(píng)論
0/150
提交評(píng)論