[理工] 作业系统 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