1、what's this?
1-1:將分散在各個進程中的臨界區集中管理起來,並將共享資源用數據結構抽象地表示出來;
1-2:建立一個“祕書”程序來管理到來的訪問;
1-3:祕書每次只讓一個進程來訪;
這個祕書就是管程。更正式的定義:一個管程定義了一個數據結構和能爲併發進程所執行的在該數據結構上的一組操作,這組操作能同步進程和改變管程中的數據。
特點
共享性:管程被所有管理的進程所共享;安全性:管程的局部變量(數據結構)是私有的;互斥性:只有一個調用者可以進入管程(每次只允許一個)
2、why this?
背景:原本進程之間的同步操作由pv操作去控制,但pv操作大量分佈於各個進程之中,難以管理,也容易發生死鎖。
目的:引入管程的目的就是將各個進程之中的臨界區集中起來管理,防止進程違反同步操作。如此也便於使用者去調用管程來書寫程序。即封裝了同步操作的細節,使得上層編程人員無需多瞭解,專心於自己的任務即可,程序也顯得一目瞭然,正確性也比較容易驗證。
3、how to use this?