운영체제 따라잡기

메모리 관리 기초

meellon 2026. 6. 29. 05:00

학습 목표

프로세스가 논리 주소를 쓰고 OS·MMU가 물리 주소로 바꾸는 이유를 설명할 수 있다.

연속 할당(contiguous allocation)외부·내부 단편화를 구분해 설명할 수 있다.

페이징이 단편화·할당 문제를 어떻게 완화하는지 개요 수준에서 설명할 수 있다.

malloc·컨테이너 memory limit이 프로세스 주소 공간과 어떤 관계인지 설명할 수 있다.

문제 상황

  • 프로세스 3개가 각각 100MB인데 물리 RAM 256MB에서 올릴 수 없다고 나온다
    • 연속 한 덩어리가 필요한 시대의 할당 방식과 혼동
  • free를 많이 했는데도 새 큰 할당이 실패 — 작은 구멍만 남음
    • 외부 단편화
  • 페이지 크기 4KB인데 100바이트만 쓰는 배열이 4KB를 통째로 차지한다
    • 내부 단편화
  • 0x7fff... 같은 주소는 실제 RAM 위치가 아니다
    • 논리 주소 vs 물리 주소

동시성·데드락 파트를 마쳤다. 이제 물리 메모리를 프로세스에 어떻게 나눠 주는지 — 메모리 관리다.

1. 논리 주소와 물리 주소

프로세스는 자기 주소 공간논리 주소(logical address) 로 코드·데이터에 접근한다. CPU가 메모리 버스로 보내는 값은 물리 주소(physical address) 다.

개념 설명
논리 주소 컴파일·링크·프로세스 관점 주소
물리 주소 DRAM 칩·버스 상 실제 위치
MMU 논리 → 물리 변환 (CPU 옆 또는 SoC 내부)
베이스·한계 레지스터 연속 할당 시 단순 변환: physical = base + logical
  • 보호: 다른 프로세스 물리 영역으로 매핑되지 않게 OS가 테이블·레지스터 관리
  • 재배치: 프로세스를 RAM 다른 위치에 올려도 논리 주소는 그대로 (매핑만 변경)

2. 연속 할당 (Contiguous Allocation)

옛 방식·단순 모델: 프로세스마다 물리 메모리 연속 한 블록 할당.

방식 설명
고정 분할 OS가 메모리를 동일 크기 파티션으로 나눔 — 내부 단편화
가변 분할 프로세스 크기만큼 구멍(hole) 에 맞춰 할당 — 외부 단편화
할당 정책 first-fit, best-fit, worst-fit — 속도·단편화 트레이드오프
  • 스왑(swap): 실행 중인 프로세스 전체를 디스크로 보내 연속 공간 확보 — 느림
  • 현대 OS는 페이징이 기본, 연속 할당은 개념·임베디드 일부에서만

3. 외부 vs 내부 단편화

종류 원인
외부 총 여유는 충분한데 연속 블록이 없음 100MB 요청, 50+50MB 구멍만 존재
내부 할당 단위보다 작게 4KB 페이지에 200B 객체
  • 압축(compaction): 가변 분할에서 프로세스를 밀어 구멍 병합 — 비용 큼, 이동 중 주소 갱신 필요
  • 페이징: 고정 크기 프레임 단위 — 외부 단편화 없음(프레임 단위로만 낭비)

4. 페이징 개요

물리 메모리를 고정 크기 프레임(예: 4KB), 프로세스 주소 공간을 같은 크기 페이지로 나눈다. 비연속으로 프레임에 올려도 된다.

용어 설명
페이지 논리 주소 공간 조각
프레임 물리 메모리 조각
페이지 테이블 페이지 번호 → 프레임 번호 (+ 보호 비트)
내부 단편화 마지막 페이지만 평균 반 페이지 낭비
  • OS는 프레임 할당·회수, 페이지 테이블 갱신
  • MMU가 하드웨어로 테이블 walk (다음 편에서 TLB·다단계)
  • mmap, 컨테이너 memory limit은 결국 페이지·프레임 단위 자원

5. 메모리 보호와 공유 (개요)

메커니즘 역할
읽기/쓰기/실행 비트 페이지·세그먼트 단위 접근 제어
유저/커널 모드 특권 명령·커널 페이지 보호
공유 페이지 같은 물리 프레임을 여러 프로세스에 매핑 (코드, shm)
  • 스레드는 같은 페이지 테이블 — 힙 공유가 쉬운 이유
  • fork 후 COW는 페이지 단위 복사 최적화 (앞서 프로세스 편)

6. 정리

  • 논리 주소는 프로세스 관점, MMU가 물리 주소로 변환·보호
  • 연속 할당은 외부 단편화, 고정 단위는 내부 단편화
  • 페이징은 비연속 프레임 배치로 외부 단편화 제거, 테이블로 매핑
  • 다음: 페이지 테이블, TLB, 다단계 페이징

다음에 다룰 것

  • 페이징
  • 페이지 테이블, TLB, 다단계 페이징

해당 내용은 Operating System Concepts, 10/E (Avraham Silberschatz, Peter Baer Galvin, Greg Gagne) 의 내용을 기반으로 합니다.

'운영체제 따라잡기' 카테고리의 다른 글

가상 메모리  (0) 2026.07.01
페이징  (0) 2026.06.30
동시성 문제 사례  (0) 2026.06.28
데드락 해결  (0) 2026.06.27
데드락 기초  (0) 2026.06.26