리눅스 & 안드로이드2014. 1. 22. 14:43

소스 분석을 하다가 smp_rmb()라는 놈이 나왔는데, 처음 보는 물건이라 뭔가 궁금해서 찾아 보았다.

주석에는 "Make sure reads order"라고 되어 있지만, 잘 이해가 되지 않았다.

https://kldp.org/node/84286 글의 내용(Q&A)을 통해 이해가 되었다.


간략히 정리 하자면,

smp_rmb()의 rmb는 read memory barrier의 약자로, smp_rmb() 호출의 앞/뒤 문장에서의
메모리 읽기 순서를 보장하기 위한 것이다.

컴파일러나 CPU의 입장에서, 앞/뒤 문장이 의존성이 없다고 판단될 경우 최적화 관점에서,
out-of-order execution이 일어날 수 있는데, 이런 경우를 원천봉쇄 하고자 할 때 사용하는 듯.


Posted by 세월의돌