Memory
메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치로 크게 내부 기억 장치인 주기억장치와 외부 기억장치인 보조 기억장치로 분류된다.
메모리 계층 구조
섹션 제목: “메모리 계층 구조”컴퓨터는 속도와 용량의 트레이드오프를 해결하기 위해 메모리를 계층적으로 구성한다.
- 레지스터(Register): CPU 내부에 존재하는 가장 빠른 기억 장치
- 캐시 메모리(Cache Memory): CPU와 주기억장치 사이의 속도 차이를 완화 (L1, L2, L3)
- 주기억장치(Main Memory/RAM): 실행 중인 프로세스와 데이터가 저장됨
- 보조기억장치(Secondary Storage): HDD, SSD 등 데이터의 영구 저장 담당
메모리 주소
섹션 제목: “메모리 주소”프로세스가 실행되기 위해서는 메모리에 적재되어야 하는데, 이때 바라보는 주소의 관점이 다르다.
-
논리 주소(Logical Address)
- 가상 주소(Virtual Address)라고도 함
- CPU와 실행 중인 프로세스가 보는 주소 공간
- 0번지부터 시작하며 각 프로세스마다 독립적으로 할당됨
-
물리 주소(Physical Address)
- 메모리 하드웨어가 실제로 사용하는 주소
- 데이터가 물리적으로 저장된 실제 위치
CPU가 논리 주소를 참조하면, 중간에서 누군가가 물리 주소로 변환해주어야 하는데 이 역할을 하드웨어 장치인 MMU가 담당한다.
Memory Management Unit(MMU)
섹션 제목: “Memory Management Unit(MMU)”CPU 코어 내부(또는 인접)에 위치하는 장치로, 논리 주소를 물리 주소로 변환하고 메모리 보호 기능을 수행하는 핵심 하드웨어다.
flowchart LR subgraph CPU_CASING["CPU casing"] direction LR CPU[CPU] -->|virtual address| MMU[MMU] TLB[TLB] <--> MMU end
MMU -->|physical address| BUS[bus]
subgraph PM["physical memory"] PA1[physical address #1] PA2[physical address #2] PA3[physical address #3] end
BUS -->|physical address| PM- CPU: Central Processing Unit
- MMU: Memory Management Unit
- TLB: Translation Lookaside Buffer
MMU의 주요 역할
섹션 제목: “MMU의 주요 역할”| 주요역할 | 특징 |
|---|---|
| 주소 변환 | CPU가 보내온 가상 주소를 실제의 물리적 주소로 변환 |
| 동적 적재 | 실행에 반드시 필요한 프로그램과 데이터를 적재하는 OS 주요 기능 지원 |
| 캐시 통제 | 캐시 가능한 영역과 불가능한 영역 분리하여 관리 |
| 권한 통제 | 사용자 프로그램에서 커널 영역 침범 차단 |
| 읽기/쓰기 보호 | 읽기/쓰기 가능 여부 영역 관리 |
| 메모리 보호 | 각 프로세스들이 별도의 분리된 영역에서 운용되도록 통제 / 상한 레지스터 보다 큰 값이 오는 경우도 체크 |
캐시 메모리
섹션 제목: “캐시 메모리”주기억장치의 속도가 CPU의 연산 속도를 따라가지 못하는 병목 현상을 줄이기 위한 고속 버퍼 메모리다.
캐시 적중률과 지역성
섹션 제목: “캐시 적중률과 지역성”캐시 메모리가 효율적으로 동작하기 위해선, 캐시 히트율이 높아야하는데, 이 때 지역성의 원리가 사용된다.
- 시간 지역성(Temporal Locality): 최근에 참조된 주소의 내용은 조만간 다시 참조될 가능성이 높음
- 예시: 반복문(for/while) 내에서 사용되는 변수나 인덱스
- 공간 지역성(Spatial Locality): 참조된 주소와 인접한 주소의 내용이 참조될 가능성이 높음
- 예시: 배열 순회 (배열은 연속된 메모리 공간을 차지하므로
arr[0]접근 후arr[1]에 접근할 확률이 높음)
- 예시: 배열 순회 (배열은 연속된 메모리 공간을 차지하므로