進程同步

1、互斥訪問的過程和原則

一、前提

  • 進程是併發執行的,進程間存在着相互制約關係
  • 併發的進程對系統共享資源進行競爭
  • 進程通訊,過程當中相互發送的信號稱爲消息或事件

二、兩種相互制約形式

  • 間接相互制約關係(互斥) :進程排他性地訪問共享資源
  • 直接相互制約關係(同步) :進程間的合做,好比管道通訊

三、訪問過程

  • 進入區:嘗試進入臨界區,成功則加鎖(lock)
  • 臨界區:訪問共享資源
  • 退出區:解鎖(unlock) ,喚醒其它阻塞進程
  • 剩餘區:其它代碼

四、訪問原則

  • 空閒讓進:臨界區空閒,容許一個進程進入
  • 忙則等待:臨界區已有進程,其它進程等待(阻塞狀態)
  • 有限等待:處於等待的進程,等待時間有限
  • 讓權等待:等待時應讓出CPU執行權,防止「忙等待」

2、互斥的軟件實現方法

一、軟件實現方法

  • 單標誌法:違背「空閒讓進」

  • 雙標誌法先檢查

  • 雙標誌法後檢查

  • 皮特森算法(Peterson's Algorithm)

二、硬件實現方法

  • 中斷屏蔽

  • TSL指令
    算法

  • Swap指令
    併發

3、信號量機制

一、整型信號量

二、記錄型信號量

4、管程


5、條件變量(條件對象)

相關文章
相關標籤/搜索