메모리 관리 개요
- 메모리는 현대 컴퓨터 시스템 동작의 핵심으로, 각각 고유한 주소를 갖는 큰 바이트 배열 형태이다.
- 각 프로세스는 자신만의 주소 공간(address space) 을 갖는다.
주소 바인딩 (Address Binding)
- 심볼릭 주소(Symbolic Address) → 논리 주소(Logical Address) → 물리 주소(Physical Address) 변환 과정이 필요하다.
- 이 변환은 다음 시점에 일어날 수 있다:
- 컴파일 시(binding at compile time): 실행 파일에 물리 주소를 직접 기록.
- 적재 시(binding at load time): 실행 시점에 메모리에 적재될 때 주소 결정.
- 실행 시(binding at execution time): 프로그램 실행 도중 MMU가 동적으로 변환.
- CPU가 생성한 주소 = 논리 주소
- MMU(Memory Management Unit) 가 논리 주소를 물리 주소로 변환한다.
C 코드: int a = 10; (심볼릭 주소: "a")
↓
컴파일 결과: 주소 0x0040에 저장 (논리 주소)
↓
실행 시점: MMU 변환 → RAM 0x7F40 위치 (물리 주소)
기준 및 상한 레지스터 (Base and Limit Register)
- 개념: 각 프로세스에 주소 공간을 할당하는 방법 중 하나
- 기준 레지스터(Base Register) : 프로세스가 접근할 수 있는 가장 작은 물리 주소.
- 상한 레지스터(Limit Register) : 프로세스 주소 공간의 크기.
- CPU가 생성한 모든 논리 주소는 Base 값과 더해져 실제 물리 주소로 변환되며, Limit을 초과하면 접근이 거부된다.
연속 메모리 할당 (Contiguous Allocation)
- 메모리를 연속된 블록 단위로 프로세스에 할당.
- 대표적인 할당 전략:
- 최초 적합(First Fit) – 빈 공간을 앞에서부터 찾아 최초로 맞는 블록 사용.
- 최적 적합(Best Fit) – 필요한 크기 이상 중 가장 작은 블록 사용.
- 최악 적합(Worst Fit) – 가장 큰 블록을 잘라서 사용.
페이징 (Paging)
- 현대 운영체제는 연속 할당 대신 페이징 기법을 사용.
- 물리 메모리: 고정 크기 블록 = 프레임(Frame)
- 논리 메모리: Frame과 같은 크기의 블록 = 페이지(Page)
- 논리 주소 = (페이지 번호, 페이지 오프셋)
- 페이지 번호 → 페이지 테이블을 통해 물리적 프레임 번호로 변환.
- 페이지 오프셋 → 프레임 내 특정 위치 지정.
TLB (Translation Lookaside Buffer)
- 페이지 테이블 캐시 역할을 하는 하드웨어.
- 변환 과정:
- CPU가 생성한 논리 주소에서 페이지 번호 추출.
- 해당 번호가 TLB에 존재하면(hit) → 즉시 프레임 번호 반환.
- 없으면(miss) → 페이지 테이블에서 찾아야 함.
계층적 페이징 (Multilevel Paging)
- 주소 공간이 커질수록 페이지 테이블이 거대해지므로, 이를 여러 수준으로 나눔.
- 예: 32비트 주소 공간 → 2단계 페이징 사용 (Intel x86).
- 64비트 주소 공간 → 4~5단계 페이징 사용 (x86-64, ARMv9).
대체 전략
- 해시 페이지 테이블(Hash Page Table) : 큰 주소 공간에서 충돌을 줄이기 위해 해시 기반 접근.
- 역 페이지 테이블(Inverted Page Table) : 물리 프레임마다 하나의 엔트리를 두어, 주소 공간 낭비를 줄임.
스와핑 (Swapping)
- 메모리 부족 시 일부 프로세스의 페이지를 디스크(보조 저장장치) 로 내보내고, 필요 시 다시 적재.
- 다중 프로그래밍 정도를 높여 CPU 활용률을 향상.
아키텍처 예시
Intel 32비트(x86)
- 4GB 논리 주소 공간.
- 2단계 페이징 (페이지 디렉토리 + 페이지 테이블).
- 페이지 크기: 4KB (일반), 4MB (대형 페이지).
x86-64, ARMv9
- 64비트 주소 공간.
- 계층적 페이징(보통 4~5단계).
정리
- 옛날 방식: Base/Limit 레지스터, 연속 메모리 할당
- 현대 방식: 페이징 + TLB + 계층적 페이지 테이블
- 확장/최적화: 스와핑, 해시 페이지 테이블, 역 페이지 테이블