進程同步:網絡
在多道程序系統中,因爲資源共享或進程合做,使進程間造成間接相互制約或直接相互制約,這須要用進程互斥與同步機制來協調兩種制約關係數據結構
在多道程序系統中,諸多進程能夠共享各種資源,臨界資源一次只能供一個進程使用,因此進程對臨界資源必須是互斥使用,每一個進程在進入臨界區前,必須先申請,經容許後方能進入工具
同步機制應遵循的準則:.net
空閒讓進計算機網絡
忙則等待指針
有限等待blog
讓權等待進程
解決互斥的鎖機制:資源
進程進入臨界區前,經過鎖變量來判斷臨界資源是否被佔用get
鎖機制只能判斷臨界資源是否被佔用,因此它解決了互斥問題,但它不能肯定前面的進程是否完成,所以不能用在進程同步問題中
信號量機制是一種卓有成效的進程同步工具,被普遍應用與單處理機和多處理機中,以及計算機網絡中
信號量機制是指用PV操做來對信號量進行處理
什麼是信號量
信號量的數據結構爲一個值和一個指針,指針指向等待該信號量的下一個進程,信號量的值與相應資源的使用狀況有關
當信號量的值大於0時,表示當前可用資源的數量
當信號量的值小於0時,其絕對值表示等待使用該資源的進程個數
信號量的值只能由PV操做來改變
用S表示資源的數量,執行一次P操做,意味着請求分配一個單位的資源,所以S的值減一,當S<0時,表示沒有資源可供分配,請求者必須等待別的進程釋放該類資源,它才能運行下去
執行一個V操做,意味着釋放一個單位的資源,所以S的值加一,當S<0時,表示有某些進程正在等待該資源,所以要喚醒一個等待狀態的進程使之運行下去