進程同步:
定義:進程之間這種相互合作、協同工作的關系稱為進程的同步。
簡單來說就是:多個相關進程在執行次序上的協調。
制約關系:直接制約
進程互斥:
臨界資源:也稱獨占資源,是指在一段時間內只允許一個進程訪問的資源。例如打印機,磁帶機,也可以是進程共享的數據、變量等。
定義:當多個進程因為爭奪臨界資源而互斥執行稱為進程的互斥。
制約關系:間接制約。
臨界資源處理不當帶來的問題
1.執行結果錯誤
臨界區:與臨界資源操作相關的程序段。
2.死鎖
在並發系統中,程序執行結果的正確性不僅取決於自身的正確性,還與其在執行過程中能否正確的與其他進程實施同步或互斥有關。必須對臨界資源的訪問進行控制。
互斥解決方案:
*關中斷法(開關中斷指令)
也稱為硬件鎖,是實現互斥最簡單的方法
做法:每個進程在進入臨界區后先關中斷,屏蔽其他請求,在離開之前再開中斷。
優點:實現簡單
缺點:中斷被關閉后,CPU不再響應任何外部事件,此時進程將會獨占CPU,直至開啟中斷,如果中斷關閉時間過長,會造成嚴重后果,因此把開關中斷的權利交給用戶進程是很不明智地的。
*鏡變量法(測試和設置指令)
做法:設置一個共享(鎖)變量W,初值為0.當一個進程想進入其他臨界區時,它首先測試這把鎖。如果鎖的值為0,則進程將其置為1並進入臨界區。若鎖已經為1,則進程等待直到變為0.於是,0就表示臨界區內沒有進程,1表示已經有某個進程進入了臨界區。
同步機制應遵循下述四條准則
*空閑讓進
*忙則等待
*有限等待
*讓權等待