소스 분석을 하다가 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이 일어날 수 있는데, 이런 경우를 원천봉쇄 하고자 할 때 사용하는 듯.
'리눅스 & 안드로이드' 카테고리의 다른 글
NDK에서 C++ STL(C++11) 사용하는 방법 (0) | 2014.05.12 |
---|---|
vim에서 ^M 제거 (0) | 2014.03.05 |
DOS(cmd.exe)에서 adb를 이용해 주기적으로 특정 명령어 수행 (0) | 2014.01.06 |
Android.mk에서 조건부 컴파일 설정 방법 (2) | 2014.01.02 |
long __builtin_expect (long exp, long c) (0) | 2013.06.22 |