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