[理工] 作業系統 Race condition

看板Grad-ProbAsk作者 (重慶酸辣粉酸4辣1)時間4年前 (2019/09/14 20:07), 編輯推噓2(2022)
留言24則, 4人參與, 4年前最新討論串1/1
https://i.imgur.com/UxAZ0uA.jpg
這題來回加都沒法不等於10 還是迴圈展開後 可以reorder指令順序導致最後一行X先做 謝謝感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.174.4 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1568462876.A.4A3.html

09/14 20:50, 4年前 , 1F
after "both"
09/14 20:50, 1F

09/14 22:18, 4年前 , 2F
x+=1可以拆解為三個動作,1 read reg. 2 add 3 write
09/14 22:18, 2F

09/14 22:18, 4年前 , 3F
reg.
09/14 22:18, 3F

09/14 22:18, 4年前 , 4F
如果這個x+=1沒有處理同步的話,那這兩個thread都進行
09/14 22:18, 4F

09/14 22:18, 4年前 , 5F
時就會有race condition
09/14 22:18, 5F

09/14 22:18, 4年前 , 6F
考慮以下instructions
09/14 22:18, 6F

09/14 22:18, 4年前 , 7F
th1 read x(0)
09/14 22:18, 7F

09/14 22:18, 4年前 , 8F
th2 read x(0)
09/14 22:18, 8F

09/14 22:18, 4年前 , 9F
th1 add result=1
09/14 22:18, 9F

09/14 22:18, 4年前 , 10F
th2 add result=2
09/14 22:18, 10F

09/14 22:18, 4年前 , 11F
th1 write x(1)
09/14 22:18, 11F

09/14 22:18, 4年前 , 12F
th2 write x(1)
09/14 22:18, 12F

09/14 22:18, 4年前 , 13F
本來應該為2,可是因為都讀到0,所以最後結果為1
09/14 22:18, 13F

09/14 22:24, 4年前 , 14F
兩個reault都是1吧
09/14 22:24, 14F

09/14 22:24, 4年前 , 15F
result
09/14 22:24, 15F

09/14 22:38, 4年前 , 16F
依照剛剛的邏輯就會到5
09/14 22:38, 16F

09/14 22:38, 4年前 , 17F
從instruction的角度有點像是sequential 需要reorder
09/14 22:38, 17F

09/14 22:38, 4年前 , 18F
或是forwarding解決data hazard
09/14 22:38, 18F

09/14 22:38, 4年前 , 19F
但這邊是parallel,要用同步解決
09/14 22:38, 19F

09/14 23:23, 4年前 , 20F
說明一下 題目只提到load/write有atomic 如果都照順序當然沒
09/14 23:23, 20F

09/14 23:23, 4年前 , 21F
問題 結果就是10 如果有一次某個程式load x時另一個還沒寫回
09/14 23:23, 21F

09/14 23:23, 4年前 , 22F
去就會造成該加一的x得到跟另一個程式一樣的結果 如果五次都
09/14 23:23, 22F

09/14 23:23, 4年前 , 23F
遇到同樣的情況最多就少五 所以x的可能性就是5~10
09/14 23:23, 23F

09/16 09:57, 4年前 , 24F
了解了 感謝大家
09/16 09:57, 24F
文章代碼(AID): #1TVDWSIZ (Grad-ProbAsk)