멀티코어와 동기화
획득(acquire)과 해제(release)의 의미를 가진 메모리 동작에 대해 올바른 것은?
- Aacquire와 release는 둘 다 모든 읽기·쓰기를 완전히 막는 가장 무거운 배리어이다
- Bacquire는 메모리를 확보하고 release는 메모리를 free하는 동작이다
- Cacquire 이후의 읽기·쓰기는 acquire보다 앞으로 이동하지 않고, release 이전의 읽기·쓰기는 release보다 뒤로 이동하지 않는다
정답과 해설 보기
정답: C. acquire 이후의 읽기·쓰기는 acquire보다 앞으로 이동하지 않고, release 이전의 읽기·쓰기는 release보다 뒤로 이동하지 않는다
락을 잡을 때의 동작은 acquire, 놓을 때의 동작은 release의 의미를 가집니다. acquire 이후의 동작은 락을 잡기 전으로 새어 나가지 않고, release 이전의 동작은 락을 놓은 뒤로 새어 나가지 않으므로, 락으로 보호한 범위의 읽기·쓰기가 그 범위 안에 머무릅니다. 양방향을 막는 완전한 배리어보다 제한이 적으므로, 하드웨어는 나머지 순서 변경을 활용하여 성능을 유지할 수 있습니다.
- A. 한쪽 방향만 막으므로 완전한 배리어보다 가볍습니다.
- B. 메모리 확보·해제(malloc/free)와는 다른 의미입니다.
- C. 맞습니다. 한쪽만 막는 가벼운 순서 보장입니다.