메모리 모델
메모리 모델 (Memory model)
Rust의 메모리 모델은 프로그램이 메모리를 어떻게 바라보는지 정의하는 기초 규칙이에요. 다만 이 문서는 스펙이 정식으로 확정되기 전 단계라, 처음부터 경고 하나를 하고 넘어갈게요.
출처: Rust Reference
⚠️ 경고: Rust의 메모리 모델은 불완전하고 아직 완전히 결정되지 않았어요.
본문
바이트 (Bytes)
Rust에서 메모리의 가장 기본 단위는 **바이트(byte)**예요.
여기서 짚고 넘어갈 부분이 있어요. 바이트가 하드웨어 바이트로 축소되는 것이 일반적이지만, Rust는 "추상적인" 바이트 개념을 사용해요. 이 추상 바이트는 하드웨어에는 없는 구분을 할 수 있죠. 예를 들어 초기화되지 않은 상태이거나, 포인터의 일부를 저장하는 상태 같은 것들이에요. 이런 구분은 프로그램에 정의되지 않은 동작이 있는지에 영향을 줄 수 있으므로, 컴파일된 Rust 프로그램이 실제로 어떻게 동작하는지에 여전히 실질적인 영향을 미쳐요.
각 바이트는 다음 값 중 하나를 가져요.
- 초기화된 바이트:
u8값과 선택적 프로비넌스(provenance)를 포함하는 바이트 - 초기화되지 않은 바이트: 초기화되지 않은 상태의 바이트
📝 참고: 위 목록은 아직 완전한(exhaustive) 것이 보장되지는 않아요. 모델이 진화하면서 더 추가될 수 있죠.
더 알아보기 (Learn more)
- 안전하지 않은 것으로 간주되지 않는 동작 — 메모리 관련 동작의 안전성 경계
- 정의되지 않은 동작 — 메모리 모델과 연결되는 UB 규칙
- 내부 가변성 — 메모리 모델과 얽히는 가변성 규칙