操作系統-信號量臨界區保護


什么是信號量?通過對這個量的訪問和修改,讓大家有序推進

1. 共同修改信號量引出的問題

2. 競爭條件

3. 解決競爭條件的直觀想法

4. 臨界區

臨界區:臨界區是指進程中的一段需要訪問共享資源並且另一個進程處於相應代碼區域時便不會被執行的代碼區域

互斥:當一個進程處於臨界區並訪問共享資源時,沒有其他進程會處於臨界區並且訪問任何相同的共享資源

臨界區代碼的保護原則

5. 臨界區嘗試一:輪換法

如果turn=0,那就進入執行,turn!=0,那就空轉

6. 臨界區的嘗試二:標記法

代碼實現:

p0進入先打標記,如果發現p1也打標記了,那么就空轉,等p1執行完flag[1] = false , p0再進入執行

標記法引發的問題:

7. 臨界區的嘗試三:非對稱標記

Peterson算法

Peterson算法的正確性

8. 保護臨界區方法一

面包店算法

面包店算法的正確性:

9. 保護臨界區方法二

硬件實現:開關中斷

僅限用於但處理器

cli(); 關中斷

sti(); 開中斷

但多cpu不好使:因為當前的cpu只能控制當前的進程

10. 保護臨界區方法三

硬件原子指令法

單處理器和多處理器均可

就是類似於鎖的那種,但是這個是一次執行完畢,上鎖過程不會被打斷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM