為什麼會出現管程?
信号量機制的不足:程式編寫困難、易出錯
解決:
- Brinch Hansen(1973)
- Boare(1974)
方案:
- 在程式設計語言中引入管程成分
- 一種進階同步機制
管程的定義:
是一個特殊的子產品
有一個名字
有關于共享資源的資料結構及在其上操作的一組過程組成
程序與管理
程序隻能通過調用管程中的過程來間接的通路管程中的資料結構
管程作為一種同步機制,要解決兩個問題:
互斥:
管程是互斥進入的
——為了保證管程中的資料結構的資料完整性
管程的互斥性是由編譯器負責保證的
同步:
管程中設定條件變量及等待/喚醒操作以解決同步問題。
管程的實作有兩種途徑:
直接構造——>效率高
- 信号量及管程的不足
- 不适用多處理器情況