什么是信號量?通過對這個量的訪問和修改,讓大家有序推進
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. 保護臨界區方法三
硬體原子指令法
單處理器和多處理器均可
就是類似于鎖的那種,但是這個是一次執行完畢,上鎖程序不會被打斷

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/125308.html
標籤:Linux
上一篇:mysql資料匯出
