操作系统(二十)进程互斥的硬件实现方法
生活随笔
收集整理的這篇文章主要介紹了
操作系统(二十)进程互斥的硬件实现方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2.3.3進程互斥的硬件實現方法
目錄
2.3.3進程互斥的硬件實現方法
2.3.3.1 中斷屏蔽
2.3.3.2?TestAndSet指令(TSL指令)
2.3.3.3 SWAP指令
2.3.3.1 中斷屏蔽
? 在本系列的第五節曾經提到過中斷的概念,并說中斷是操作系統奪回CPU的唯一方式,在這里中斷屏蔽的想法與原語原子性保證的想法是一致的,即將臨界區放在開中斷與關中斷之間,這樣在臨界區執行的過程中就無法發生中斷,操作系統也就不會再奪回CPU訪問臨界資源了。這種方法雖然很簡單但是如果用戶進程隨意使用中斷這種內核態指令的話就會帶來很大的危險。
2.3.3.2?TestAndSet指令(TSL指令)
?? 我們來執行一下上面的代碼,若剛開始 lock 是 false,則 TSL 返回的 old 值為 false,while 循環條件不滿足,直接跳過循環,進入臨界區。若剛開始 lock 是 true,則執行 TLS 后 old 返回的值為 true,while 循環條件滿足,會一直循環,直到當前訪問臨界區的進程在退出區進行“解鎖”。但是這個方法還是沒完成讓權等待的原則。2.3.3.3 SWAP指令
? 邏輯上來看 Swap 和 TSL 并無太大區別,都是先記錄下此時臨界區是否已經被上鎖(記錄在 old 變量上),再將上鎖標記 lock 設置為 true,最后檢查 old,如果 old 為 false 則說明之前沒有別的進程對臨界區上鎖,則可跳出循環,進入臨界區。總結
以上是生活随笔為你收集整理的操作系统(二十)进程互斥的硬件实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发到底喜欢看怎样的需求文档
- 下一篇: 操作系统(二十一)信号量机制