10. 질문 — 메모리 배리어와 약한 메모리 모델 심화
난이도 최상 해설 보기 →
문제
질문 — 메모리 배리어와 약한 메모리 모델 심화
상황
한 개발자가 lock-free 플래그 기반 코드를 작성했다. x86 개발 PC에선 멀쩡한데, ARM 기반 서버/모바일에서 간헐적으로 값이 꼬이거나 오래된 값을 읽는 버그가 난다.
질문
- "메모리 재배열(reordering)"은 어디서 일어나는가? 컴파일러와 CPU 두 층위로 나눠 설명하라.
- **약한 메모리 모델(ARM)**과 **강한 메모리 모델(x86-TSO)**의 차이는 무엇이며, 왜 "x86에선 되는데 ARM에서 깨지는" 동시성 버그가 생기는가?
memory_order의 relaxed / acquire / release / seq_cst를 설명하고, "release 저장과 acquire 로드가 짝을 이룬다"는 게 무슨 뜻인지(happens-before, synchronizes-with) 설명하라.- C#의
volatile,Interlocked,Volatile.Read/Write는 이 모델과 어떻게 대응되는가?
답안 작성
내 답안 · 자동 저장
직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.