[理工] 作業系統 Race condition

作者: AndrewTsai46 (重慶酸辣粉酸4辣1)   2019-09-14 20:07:54
https://i.imgur.com/UxAZ0uA.jpg
這題來回加都沒法不等於10
還是迴圈展開後 可以reorder指令順序導致最後一行X先做
謝謝感激不盡
作者: DLHZ ( )   2019-09-14 20:50:00
after "both"
作者: b10007034 (Warren)   2019-09-14 22:18:00
x+=1可以拆解為三個動作,1 read reg. 2 add 3 writereg.如果這個x+=1沒有處理同步的話,那這兩個thread都進行時就會有race condition考慮以下instructionsth1 read x(0)th2 read x(0)th1 add result=1th2 add result=2th1 write x(1)th2 write x(1)本來應該為2,可是因為都讀到0,所以最後結果為1
作者: ok8752665 (dd8752665)   2019-09-14 22:24:00
兩個reault都是1吧result
作者: b10007034 (Warren)   2019-09-14 22:38:00
依照剛剛的邏輯就會到5從instruction的角度有點像是sequential 需要reorder或是forwarding解決data hazard但這邊是parallel,要用同步解決
作者: DLHZ ( )   2019-09-14 23:23:00
說明一下 題目只提到load/write有atomic 如果都照順序當然沒問題 結果就是10 如果有一次某個程式load x時另一個還沒寫回去就會造成該加一的x得到跟另一個程式一樣的結果 如果五次都遇到同樣的情況最多就少五 所以x的可能性就是5~10
作者: AndrewTsai46 (重慶酸辣粉酸4辣1)   2019-09-16 09:57:00
了解了 感謝大家

Links booklink

Contact Us: admin [ a t ] ucptt.com