이번 Step에서 잡아야 할 것
- CPU: 연산 담당 (빠르지만 기억 못 함)
- RAM: 실행 중 필요한 코드/데이터 임시 저장 (빠르지만 휘발성)
- SSD/HDD: 파일 보관소 (느리지만 비휘발성)
- RAM 영역: Code / Data / Heap / Stack이 역할을 나눠 가짐
CPU
- 역할: 명령어를 해석하고 연산한 뒤, 결과를 다시 메모리에 기록
- 강점: 굉장히 빠른 계산
- 한계: 데이터를 오래 들고 있지 못함 → 옆에 RAM이 필요
- 쿨러: CPU 과열 방지, 고속 동작 유지
RAM (메모리)
- 역할: CPU가 바로 꺼내 쓸 수 있게 실행 중인 코드/데이터를 올려두는 작업대
- 비유: 계산기 옆 메모지(저장소) — CPU가 수시로 읽고 씀
- 특성: 휘발성 → 전원이 꺼지면 데이터 소실
- 용량: 32GB, 64GB 등
CPU + RAM만 잘 동작하면 게임이라고 해도 과언이 아님.
- 이 말은 게임의 “현재 상태(HP/좌표/몬스터 상태 등)”가 결국 RAM의 데이터로 관리된다는 의미
- 실행 파일은 보통 SSD에 있지만, 실행 순간 RAM으로 로드되어 CPU가 처리
[CPU(연산)] <───(끊임없는 협업)───> [RAM(데이터/코드 저장)] <──(실행 시 로드)── [SSD/HDD(반영구 저장)]
SSD / 하드디스크
- 역할: 반영구적 저장 (전원 꺼져도 유지)
- 용량: 1TB, 2TB 등 대용량
- 특징: RAM보다 접근이 느림 (CPU에서 더 멀리 있음)
- 실행 흐름 예: 롤 설치(SSD) → 실행(필요한 것들을 RAM으로 로드) → CPU가 RAM을 읽고/쓰며 동작
메모리(RAM) 4가지 영역
같은 RAM 안에서도, “무엇을 어디에 둘지”를 역할별로 나눠 관리
높은 주소 (HIGH ADDRESS)
┌─────────────────────────┐
│ Code (Text) : 실행 명령 │
├─────────────────────────┤
│ Data : 전역/정적 │
├─────────────────────────┤
│ Heap : 동적 할당 │
│ │
│ (여유 공간) │ ← 실행 중 Heap/Stack이 커지며 공유
│ │
│ Stack : 함수 호출 │
└─────────────────────────┘
낮은 주소 (LOW ADDRESS)
| 영역 | 용도(핵심) | 예시 |
|---|
| Code (Text) | 실행할 명령어(기계어)가 올라가는 곳 | 함수 코드 |
| Data | 프로그램이 시작부터 끝까지 유지되는 데이터 | 전역/정적 변수 |
| Heap | 실행 중 필요할 때 요청해서 쓰는 공간 | 동적 할당(new/malloc) |
| Stack | 함수 호출 시 자동으로 쌓였다가 돌아오면 정리 | 지역 변수, 매개변수 |
0과 1
- 컴퓨터는 전기 신호 유무로 모든 것을 판단 → 0과 1
- 롤 설치 파일(SSD) 안도 0과 1로 저장된 데이터
- 일부는 실행 코드, 일부는 캐릭터 아트, 사운드 같은 리소스
체크 질문 (스스로 답해보기)
- 게임을 “실행”할 때, SSD의 내용은 왜 RAM으로 올라갈까?
- CPU가 빠른데도, 왜 RAM이 없으면 프로그램이 제대로 동작하기 어려울까?
- Heap과 Stack은 “언제/누가” 주로 관리하는 영역일까?