臨界資源:進程獨佔型的硬件和共享的數據結構和文件。臨界區:使用臨界資源的程序段。
要求:
空閒讓進,忙則等待,有限等待,讓權等待。
實現方法:
- 軟件 :通過全局變量來控制程序執行,但是程序在檢測標誌變量後,修改標誌變量前發生中斷,然會有多個進程進入臨界區。
- 硬件:
- 關閉總中斷
- 將軟件的方法使用機器指令封裝好,然後再調用,解決了因中斷導致的錯誤。但是會有忙等現象。
- 機器指令包括:test&set 以及exchange
- 信號量
- 信號量是一個信號燈一樣的結構體變量,其成員包括:一個整型變量和一個隊列。
- 使用wait和signal指令,wait指令申請資源,signal指令釋放資源。
- 將暫時不能執行的程序放入阻塞隊列。(這樣解決了忙等問題)
- 管程
- 消息傳遞