← 질문 목록
#250깊이 0
동기화 문제를 하드웨어적으로 어떻게 해결하는가?
원자적 명령어로 처리한다. CPU가 명령어를 실행하는 동안 다른 프로세스가 개입하지 못하게 막아 메모리 접근을 보장하는 방식이다.
| 구분 | 방식 |
|---|---|
| 하드웨어 수준 | Test-and-Set, Compare-and-Swap (CAS) |
| 명령어 수준 | 인터럽트 비활성화. 단일 코어에서만 유효하다 |
Test-and-Set은 메모리 값의 현재 상태를 읽고 새로운 값을 쓰는 작업을 한 번에 처리한다. 중간에 컨텍스트 스위칭이 발생하지 않아 데이터 정합성을 지킨다.
CAS는 지금 값이 기대한 값과 같을 때만 새 값으로 바꾼다. 다르면 누가 먼저 손댔다는 뜻이라 바꾸지 않고 실패를 알린다. 락-프리(Lock-free) 알고리즘의 핵심 기반이 된다.
인터럽트 비활성화는 간단하지만 멀티코어 환경에서는 모든 CPU의 인터럽트를 동시에 끄는 비용이 너무 커서 실무적으로 쓰이지 않는다.
추천 꼬리질문
관련 질문
- volatile 키워드는 가시성 문제를 어떻게 해결하는가?언어 · 런타임volatile의 가시성 해결 원리는 CPU 캐시와 메인 메모리 간의 동기화라는 하드웨어적 메커니즘과 밀접하게 연관되어 있다.
- 멀티스레드 환경에서 스레드 세이프한 코드를 작성하는 방법은 무엇인가?운영체제하드웨어적 동기화 해결책(TSS 등)은 멀티스레드 환경에서 스레드 세이프한 코드를 구현하는 하위 메커니즘으로 사용된다.
- 코어마다 캐시가 따로인데 값이 어긋나지 않는 이유는?운영체제둘 다 멀티코어 하드웨어 수준의 일관성·동기화 메커니즘을 다룬다
- 코루틴의 구조적 동시성은 무엇을 해결하는가?모바일
- 상태 변경을 막으면 동시성에서 무엇을 얻는가?언어 · 런타임