# 원자 연산과 스핀락
## 왜 원자 연산이 필요한가?
멀티코어 환경에서 `x++` 같은 단순한 코드도 안전하지 않다.
컴파일러는 이를 세 단계로 분해한다:
```
1. LOAD x → 레지스터
2. ADD 레지스터 + 1
3. STORE 레지스터 → x
```
두 코어가…
# ISR 공유 데이터 — volatile, 임계구역, 원자 접근
## 문제: ISR과 메인 코드가 같은 변수를 쓴다
ISR과 메인 루프가 동일한 변수를 공유할 때,
컴파일러 최적화와 하드웨어 특성이 맞물려 **예상치 못한 버그**가 발생할 수 있습니다.
```
메인 루프:…