💻 [운영체제] 메모리 관리 (페이징 vs 세그멘테이션)
2025. 4. 25. 13:27

📌 메모리 관리에 필요한 핵심 개념 먼저 이해하기

📍 논리 주소 vs 물리 주소

📖 비유: 독서실 자리 예약 시스템

  • 논리 주소: 프로그램이 인식하는 주소
    → 예약한 자리 번호 (예: 3번)
  • 물리 주소: 실제 RAM 상의 위치
    → 실제 앉는 책상 (예: 실제 주소 12번)

🧠 프로그램은 논리 주소만 알고 있음
→ 실제 메모리 주소는 MMU가 변환해줌


📍 MMU (Memory Management Unit)

📦 비유: 자리 안내 도우미

  • CPU가 논리 주소를 주면,
    MMU는 페이지 테이블 또는 세그먼트 테이블을 통해
    물리 주소로 바꿔서 접근함

📍 단편화 (Fragmentation)

구분 설명 비유
내부 단편화 고정된 크기로 메모리를 나눌 때 일부 공간이 낭비됨 넓은 책상에 작은 책만 올려둠
외부 단편화 연속되지 않은 빈 공간이 흩어져 있어 전체 메모리는 충분해도 사용 불가 초콜릿 부스러기처럼 여기저기 공간만 남음

🧠 왜 이 개념들이 중요할까?

  • 페이징은 내부 단편화가 발생할 수 있고,
  • 세그멘테이션은 외부 단편화가 발생함
    → 각각의 단점 해결을 위한 기술이기 때문에 이 기본 개념은 필수!

1️⃣ 페이징 (Paging)

✅ 개념

  • 메모리를 고정된 크기의 블록(Page)으로 나눔
  • 프로그램도 동일한 크기의 페이지로 쪼개어,
    RAM의 프레임(Frame)에 배치

📦 구조

  • 논리 주소 = 페이지 번호 + 오프셋
  • 물리 주소 = 프레임 번호 + 오프셋
  • MMU가 페이지 테이블로 변환

2️⃣ 세그멘테이션 (Segmentation)

✅ 개념

  • 프로그램을 의미 있는 단위인 세그먼트(코드, 데이터, 스택 등)로 나눔
  • 크기가 가변적이고, 구조적인 단위를 보존

📐 구조

  • 논리 주소 = 세그먼트 번호 + 오프셋
  • 물리 주소 = 세그먼트 시작 주소 + 오프셋
  • MMU가 세그먼트 테이블을 통해 주소 변환

⚖️ 비교 요약

항목 페이징 세그멘테이션
단위 고정 크기 페이지 가변 크기 세그먼트
단편화 내부 단편화 발생 외부 단편화 발생
주소 변환 페이지 테이블 세그먼트 테이블
구조적 의미 없음 존재 (코드/데이터/스택 등)

💡 비유로 이해하기

📚 책에 비유하자면

  • 페이징: 책 전체를 100페이지 단위로 무조건 나눠서 보관
    → “쓸데없이 남는 공간(내부 단편화)”이 생기기도 함
  • 세그멘테이션: 책을 챕터 단위로 보관 (코드/데이터/스택 등)
    → “논리적 의미에 맞게” 나누지만, 중간중간 빈칸이 생길 수 있음 (외부 단편화)

✍️ 회고

  • 메모리 관리 기법은 단순히 공간 할당 문제가 아니라
    논리적 구조, 효율, 성능, 보안까지 모두 연결되는 주제
  • 시스템이 어떤 방식으로 메모리를 나누는지가
    전체 성능에 얼마나 큰 영향을 주는지 체감할 수 있었음