memory barrier

Linux Kernel 에서의 Memory Barrier 구현

일반적인 명령어(instruction) 뿐만 아니라, Barrier 를 위한 명령어 또한 아키텍쳐마다 다릅니다.그리고, 컴파일러 Barrier 로 사용되는 Directive 도 컴파일러마다 다를 수 있습니다.이 때문에, Linux Kernel 에서는 몇가지 카테고리의 메모리 Barrier 를 정의해두고, 이러한 카테고리 별로 각...

Memory Barrier

asm volatile(“”:::”memory”) compiler-gcc.h 파일을 보면 barrier()는 다음과 같이 구현되어 있습니다. #define barrier() asm volatile(“”: : :”memory”) 특별히 어떤 명령어를 수행하는 것은 아닙니다. 보통 리눅스 커널에서는 barrier() 매크로를 이용하는데, 이것이 위와 같이 asm volatile(“”:::”memory”)로 정의되어 있습니다....

volatile 키워드의 역할

volatile 키워드의 역할을 정의해보면 다음과 같습니다. C/C++가 정의하는 volatile 키워드는 이 값이 언제든지 변할 수 있기에 컴파일러는 최적화하지 말 것을 지시한다. 최적화하지 말 것을 지시한다 ? 이 말의 의미가 중요한 것 같습니다.코드를 컴파일할 때 옵션으로...