Exclusive monitor在spinlock中的应用
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
.
說明:
在默認情況下,本文講述的都是ARMV8-aarch64架構,linux kernel 5.14
目錄
- 1、Exclusive monitor概念
- 2、獨占訪問在spinlock中的應用
1、Exclusive monitor概念
ARMv6 架構時引入了對內存位置進行獨占訪問的概念,提供了更靈活的原子內存更新。對應的獨占訪問的指令是:LDREX 和STREX. 而在armv8架構中,這兩個指令變成了LDXR和STXR
獨占監視器是一個簡單的狀態機,具有open和exclusive的兩種狀態。 為了支持處理器之間的同步,系統必須實現兩組監視器,local和global。 Load-Exclusive 操作將監視器更新為exclusive狀態。 Store-Exclusive 操作訪問監視器以確定它是否可以成功完成。 只有當所有訪問的獨占監視器都處于獨占狀態時,Store-Exclusive 才能成功。
LDXR Wt, [base{,#0}]
(1)、從base地址處讀取一個數字,存放到Wt寄存器中;
(2)、將Monitor變成exclusive狀態
STXR Ws, Wt, [base{,#0}]
(1)、將Wt中的數據寫入到base地址處,如果成功Ws返回0,否則返回1;
(1)、將Monitore從exclusive狀態切換成open, 如果切換成功,則說明寫入成功,Ws返回0; 如果切換失敗,則數據不會寫入到內存,Ws返回1
注意事項:
- 以上獨占機制只適用normal memory,如果是device memory則不會啟用exclusive訪問機制。
- 如果是配置成shareable的memory,則會啟用global monitor,如果配置成的是non-shareable memory,則只有local monitor生效
2、獨占訪問在spinlock中的應用
總結
以上是生活随笔為你收集整理的Exclusive monitor在spinlock中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [architecture]-arm e
- 下一篇: Linux Kernel中spinloc