2022 6月
本身對於作業系統了解的還不夠完整,只有一些基礎的知識,在看這支影片時很痛苦,很多都看不懂,後來是看了 jserv 老師的多核處理器相關議題才稍微有些了解。建議搭配著投影片一起看。
參考影片Linux-Kernel Memory Ordering: Help Arrives At Last! 、 投影片
參考投影片 Uh-oh; it’s I/O ordering!
註 :, 在記憶體裡,初始值為 0,foo
, bar
是 local variable
因為看到指令的順序有可能會對調,*x 跟 *y 是不同的地址,編譯器可能會認為說指令沒有相依性就有可能會將指令重排順序(reorder)。去模擬、試驗,產生一段程式在一段時間內一直跑,跑到不同的結果為止。這工具最主要的目的就是讓我們更清楚程式的順序。
與 地址不同
smp_mb()
: memory barries,barries 英文意思指的是籬笆、需跨過之意
以此圖為例,加入 smp_mb()
代表 write 一定要在 read 之前完成,則 的值必定是1。
參考資料 : acquire release memory ordering、model checking
Model checking : 一種形式化驗證