作業系統原理 管程

2021-10-05 22:16:45 字數 733 閱讀 6583

將共享變數及操作共享變數的所有方法封裝在乙個模組中。

一組區域性變數(共享變數)

操作區域性變數的一組方法

區域性變數的初始語句

任何程序只能通過管程提供的入口才能訪問共享資料

任何時刻只允許乙個程序訪問管程的某個方法

對共享變數的互斥操作:

管程的特點決定了對共享資源的互斥操作,管程同一時刻只允許乙個程序對共享資源進行操作

操作的同步控制:

管程通過條件變數實現同步控制,管程同一時刻只允許乙個程序獲得操作權,沒有獲得操作權的程序將阻塞在條件變數x的等待佇列中,當條件變數發生變化時再由別的程序喚醒在x變數上等待的程序。

&emsp: 管程中有乙個條件變數,條件變數與乙個等待佇列,用於儲存等待在該條件的程序,對條件變數的操作有wait和signal。當某個程序發現自己無法執行時呼叫wait方法,將自己放入等待佇列並阻塞,將另乙個等待在管程之外的程序調入管程。別的執行緒發現條件發生改變時呼叫signal方法喚醒等的程序。

當管程**現多個程序時怎麼辦(p喚醒q執行緒)?

p等待q繼續,直到q 退出

q等待p繼續,直到p退出

喚醒管程中最後乙個可以執行的程序

保證了共享資源訪問的互斥性,同時便於等待或喚醒程序

將系統按照資源管理的觀點拆分成多個模組,每個模組維護該資源,並控制對資源的訪問。將對資源的操作集中在一起。

對資源的集中管理方便系統的維護。同時增強了模組的易讀性。

很多程式語言沒有實現管程

作業系統 管程

在前面 程序 中提到,有訊號量與互斥量之後,似乎程序間通訊就很容易了。但事實上並不然,pv操作不慎是很容易導致兩個程序都被阻塞的,這種情況就叫做死鎖 dead lock 為了更容易編寫出正確的程式,1973和1974年hansen與hoare提出了另一種高階同步原語,稱為管程 monitor 但他們...

作業系統 管程

1.管程 英語 monitors,也稱為監視器 是一種程式結構,結構內的 多個子程式 物件或模組 形成的多個工作執行緒互斥訪問共享資源。這些共享資源一般是硬體裝置或一群變數。管程實現了在乙個時間點,最多只有乙個執行緒在執行管程的某個子程式。與那些通過修改資料結構實現互斥訪問的併發程式設計相比,管程實...

作業系統之管程

管程的出現是一種程序同步工具。管程的特性保持了程序互斥,無須程式設計師自己實現互斥,從而降低了死鎖發生的可能性。同時管程提供了條件變數,可以讓程式設計師靈活地實現程序同步。管程有點類似於在物件導向時候學習到的類。管程有四個部分組成 管程的名字 區域性於管程內部的共享結構資料說明 對該資料結構進行操作...