操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第31講 管程的概念_第1頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第31講 管程的概念_第2頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第31講 管程的概念_第3頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第31講 管程的概念_第4頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第31講 管程的概念_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

管程的概念主要內(nèi)容一、為什么要引入管程二、管程的定義三、管程的屬性四、管程語法形式五、管程結(jié)構(gòu)一、為什么要引入管程(1)把分散在各進(jìn)程中的臨界區(qū)集中起來進(jìn)行管理;(2)防止進(jìn)程有意、無意的違法同步操作;(3)便于用高級(jí)語言書寫程序和程序正確性驗(yàn)證。二、管程的定義管程是由局部于自己的代表共享資源的公共變量和訪問公共變量的具有同步及互斥功能的過程組成的共享資源管理軟件模塊。管程組成部分局部于管程的共享變量對(duì)局部于管程的變量進(jìn)行初始化的語句對(duì)共享變量進(jìn)行操作的一組過程三、管程的屬性(1)共享性管程可被系統(tǒng)范圍內(nèi)的進(jìn)程互斥訪問,屬于共享資源(2)安全性管程的局部變量只能由管程的過程訪問,不允許進(jìn)程或其它管程直接訪問,管程也不能訪問非局部于它的變量(3)互斥性多個(gè)進(jìn)程對(duì)管程的訪問是互斥的。任一時(shí)刻,管程中只能有一個(gè)活躍進(jìn)程(4)封裝性管程內(nèi)的變量是私有的,只能在管程內(nèi)使用,管程內(nèi)的過程也只能使用管程內(nèi)的變量。進(jìn)程通過調(diào)用管程的過程使用臨界資源四、管程語法形式type管程名=monitor{

局部變量說明;

條件變量說明;

初始化語句;define管程內(nèi)定義的、管程外可調(diào)用的過程或函數(shù)名列表;use管程外定義的,管程內(nèi)將調(diào)用的過程或函數(shù)名列表;過程名/函數(shù)名(形式參數(shù)表){ <過程/函數(shù)體>;}過程名/函數(shù)名(形式參數(shù)表){ <過程/函數(shù)體>;}}…管程的實(shí)質(zhì)封裝數(shù)據(jù)和操作的對(duì)象五、管程結(jié)構(gòu)管程結(jié)構(gòu)局部變量和條件變量組成管程內(nèi)的數(shù)據(jù)結(jié)構(gòu)初始化代碼對(duì)管程內(nèi)的變量進(jìn)行初始化過程/函數(shù)1~過程/函數(shù)k組成管程內(nèi)的一組過程,對(duì)管程內(nèi)的變量進(jìn)行操作局部變量條件變量過程/函數(shù)1…過程/函數(shù)k初始化代碼等待進(jìn)入管程的進(jìn)程隊(duì)列條件變量c1管理的資源等待隊(duì)列條件變量cn管理的資源等待隊(duì)列緊急等待隊(duì)列管程入口signalwait(cn)wait(c1)管程管程等待區(qū)域…(1)管程入口處的等待隊(duì)列管程是互斥進(jìn)入的,當(dāng)一個(gè)進(jìn)程試圖進(jìn)入一個(gè)已被占用的管程時(shí),它需在管程入口處隊(duì)列中等待。(2)管程內(nèi)的資源等待隊(duì)列管程是用于管理資源的,進(jìn)入管程的進(jìn)程等待資源時(shí)加入資源等待隊(duì)列,該隊(duì)列由條件變量維護(hù)。資源等待隊(duì)列可以有多個(gè),每種資源一個(gè)隊(duì)列。管程各部件說明(3)條件變量條件變量(如名稱為c)是管程內(nèi)對(duì)共享資源進(jìn)行同步訪問的一種數(shù)據(jù)類型,只有在管程中才能被訪問,它對(duì)管程內(nèi)的所有過程是全局的,只能通過兩個(gè)原語操作來控制它。c.wait()調(diào)用進(jìn)程阻塞并移入與條件變量c相關(guān)的資源隊(duì)列中,并釋放管程,直到另一個(gè)進(jìn)程在條件變量c上執(zhí)行signal()喚醒等待進(jìn)程并將其移出條件變量c隊(duì)列。c.signal()c.wait()如果存在其他進(jìn)程由于對(duì)條件變量c執(zhí)行wait()而被阻塞,則釋放之;如果沒有進(jìn)程在等待,那么,信號(hào)被丟棄。c.signal()條件變量與P、V操作中信號(hào)量的區(qū)別條件變量是一種非計(jì)數(shù)信號(hào)量,維護(hù)隊(duì)列時(shí)不對(duì)其中的等待進(jìn)程計(jì)數(shù)。因此在使用條件變量x時(shí),通常需要定義一個(gè)與之配套使用的整型變量x-count用于記錄條件變量x所維護(hù)等待隊(duì)列中的進(jìn)程數(shù)。P、V操作中的計(jì)數(shù)信號(hào)量不僅維護(hù)相關(guān)隊(duì)列,而且記錄隊(duì)列中進(jìn)程數(shù)。(4)管程內(nèi)的緊急等待隊(duì)列當(dāng)管程內(nèi)的進(jìn)程P喚醒等待隊(duì)列中的另一個(gè)進(jìn)程Q時(shí),管程中便存在兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論