進程間制約關系
- 進程的制約關系:並發進程之間彼此相關,相互影響,一個進程的執行可能影響其他進程的執行結果。
- 制約關系的類型:根據共享資源性質的不同,可分為:
- 直接制約關系:也稱"合作關系",是指一個進程執行完后,另一個進程才能開始,否則不能開始。
- 間接制約關系:也稱"競爭關系",指一個進程訪問共享資源時,其他需訪問此資源的進程必須等待。
進程同步和互斥的概念
同步:指兩個或兩個以上的進程由於某種時序上的限制而形成的相互合作的制約關系。(直接制約關系)
互斥:指兩個或兩個以上的進程由於競爭資源而形成的制約關系。(間接制約關系)
下列活動分別屬於哪種制約關系?
- 若干同學去圖書館借書(互斥)
- 輸入進程和計算進程(同步)
- 流水線生產的各道工序(同步)
- 若干進程使用一台打印機(互斥)
- 商品生產和社會消費(同步)
臨界資源和臨界區
- 臨界資源:指一次只允許一個進程使用資源
- 系統中許多獨占性硬件資源(如卡片輸入機和打印機等)和軟件資源(如變量、表格、隊列、棧和文件等)均屬於臨界資源。
- 臨界區:指進程訪問臨界資源的那段程序代碼。
臨界區的管理准則
- 空閑讓進:當臨界資源空閑時,可允許進入訪問;
- 忙則等待:當臨界區已有進程訪問時,其他需進入臨界區進程必須等待
- 有限等待:對於進入臨界區的進程,應保證在有限時間內能進入臨界區,以免陷入 "死等"狀態;
- 讓權等待:當進程不能進入臨界區時,應立即釋放CPU,以免進程陷入"忙等"。
進程同步和互斥的關系
- 互斥反映了進程間的競爭關系,而同步則反映了進程間的合作關系。
- 進程互斥是進程同步的一種特殊情況
- 互斥所涉及的進程之間沒有固定的必然的聯系,它們只是競爭獲得共享資源的使用權;而同步所涉及的並發進程之間有一鍾必然的聯系,即使資源可用,若沒有獲得同步消息,進程也不能去使用。
互斥和同步的比較
| 同步(直接制約) | 互斥(間接制約) |
|---|---|
| 進程————進程 | 進程————資源————進程 |
| 時間次序上受到某種限制 | 競爭到某一物理資源時不允許其他進程再訪問 |
| 相互清楚對方的存在及作用,交換信息 | 不一定清楚其他進程情況 |
| 往往指有幾個進程共同完成一個任務 | 往往指多個任務多個進程間通訊制約 |
| 生產者————消費者 | 交通十字路口、單軌火車的拔道岔 |
