운영체제

메모리 관리 기법(예: 페이징, 세그멘테이션)

♠디지털 모험일지♠ 2024. 10. 26. 16:41
728x90
반응형
SMALL

메모리 관리 기법 (예: 페이징, 세그멘테이션)

메모리 관리 기법은 운영체제가 프로그램에 메모리를 할당하고, 효율적으로 사용하는 방법입니다. 이는 시스템 성능을 높이고 프로그램이 원활하게 실행되도록 돕기 위해 매우 중요합니다. 주요 기법으로는 페이징세그멘테이션이 있습니다.


1. 페이징 (Paging)

  • 정의: 프로그램의 메모리 공간을 일정한 크기의 블록, 즉 페이지(Page)로 나누고, 물리 메모리(RAM)도 같은 크기의 블록, 즉 프레임(Frame)으로 나누어 매칭하는 방법입니다.

  • 쉽게 말하면: 책을 일정한 크기의 페이지로 나눠서 관리하는 것과 비슷해요. 각 페이지를 책장에 꽂아두듯이, 프로그램의 각 페이지를 메모리의 빈 공간에 끼워 넣는 겁니다.

  • 작동 방식:

    • 논리적 주소(Logical Address): 프로그램이 메모리를 참조할 때 사용하는 주소입니다. 프로그램 입장에서는 메모리가 한 덩어리로 보이지만, 실제로는 여러 조각으로 나뉘어 있을 수 있습니다.
    • 물리적 주소(Physical Address): 실제 메모리(RAM)에서 해당 데이터를 위치시키는 주소입니다.
    • 페이지는 논리 주소에서 페이지 테이블(Page Table)을 통해 물리 주소로 변환됩니다.
      • 페이지 테이블은 페이지 번호와 물리 메모리의 프레임 번호를 매칭하는 역할을 합니다.
      • 쉽게 말하면: 페이지 테이블은 도서관에서 책 페이지를 찾기 위한 색인과 같은 역할을 해요.
  • 장점:

    • 메모리 단편화(Fragmentation) 감소

      : 메모리 공간이 균일한 크기로 나뉘기 때문에, 작은 공간을 자주 사용하거나 해제할 때 발생하는

      외부 단편화

      를 줄일 수 있습니다.

      • 쉽게 말하면: 책장을 일정한 크기의 칸으로 나눠서 책을 꽂으면, 공간이 남는 부분이 적어져서 깔끔하게 정리할 수 있는 것과 비슷해요.
    • 효율적인 메모리 사용: 페이지를 필요한 만큼만 물리 메모리에 올릴 수 있어서 메모리를 낭비하지 않습니다.

  • 단점:

    • 페이지 테이블 관리 비용

      : 페이지 테이블이 커질 수 있고, 이를 관리하는 데 추가 메모리가 필요합니다.

      • 쉽게 말하면: 책 색인이 너무 길어지면 그걸 보관할 공간이 따로 필요해지는 것과 같아요.
    • 페이지 교체 비용: 메모리가 꽉 차면 어떤 페이지를 교체할지 결정하는 데 시간이 걸릴 수 있습니다.


2. 세그멘테이션 (Segmentation)

  • 정의: 프로그램을 의미 있는 단위인 세그먼트(Segment)로 나누는 방법입니다. 예를 들어, 코드, 데이터, 스택 등을 각각의 세그먼트로 나누어 관리합니다.

  • 쉽게 말하면: 책을 주제별로 나눠서 정리하는 것과 비슷해요. 예를 들어, 역사책, 과학책, 문학책 등으로 나누고 각 책을 정리하는 것처럼요.

  • 작동 방식:

    • 논리적 주소

      는 세그먼트 번호와 세그먼트 내의 오프셋(offset)으로 나뉩니다.

      • 세그먼트 번호: 프로그램에서 어떤 부분(세그먼트)을 사용하는지 나타냅니다.
      • 오프셋: 해당 세그먼트 내에서의 위치를 나타냅니다.
    • 세그먼트 테이블

      을 통해 논리 주소를 물리 주소로 변환합니다.

      • 쉽게 말하면: 세그먼트 테이블은 주제별 책장의 위치를 기록해 둔 지도와 같아요.
  • 장점:

    • 사용자 관점에 친화적

      : 프로그램을 의미 있는 단위로 나누기 때문에, 개발자가 프로그램의 구조를 이해하고 관리하기 쉽습니다.

      • 쉽게 말하면: 주제별로 책을 정리하면, 필요한 책을 찾기가 쉬운 것처럼요.
    • 외부 단편화 문제 해결: 각 세그먼트가 서로 독립적인 크기를 가지므로, 필요한 만큼만 메모리를 사용할 수 있습니다.

  • 단점:

    • 내부 단편화 발생 가능

      : 각 세그먼트의 끝부분에서 남는 공간이 발생할 수 있습니다.

      • 쉽게 말하면: 책 한 권의 끝에 몇 장의 빈 페이지가 남는 것처럼요.
    • 세그먼트 테이블 관리: 세그먼트 테이블도 별도로 관리해야 하며, 메모리를 추가로 사용하게 됩니다.


페이징과 세그멘테이션의 비교

구분 페이징 (Paging) 세그멘테이션 (Segmentation)
기준 일정한 크기로 나눈 페이지 의미 있는 단위로 나눈 세그먼트
주소 구성 페이지 번호 + 오프셋 세그먼트 번호 + 오프셋
메모리 단편화 외부 단편화 없음, 내부 단편화 가능 외부 단편화 발생 가능, 내부 단편화 적음
관리 방식 페이지 테이블을 통해 물리 주소 매핑 세그먼트 테이블을 통해 물리 주소 매핑
사용자 관점 시스템 친화적 사용자 및 개발자 친화적
적합한 경우 단순한 메모리 관리가 필요한 경우 프로그램의 구조가 복잡하고, 다양한 크기의 메모리 할당이 필요한 경우

쉽게 요약

  • 페이징: 메모리를 일정한 크기의 조각으로 나누어 관리하는 방식입니다. 모든 페이지가 같은 크기여서, 메모리 낭비가 적고 관리가 간편해요.
  • 세그멘테이션: 프로그램의 구조에 맞춰서 다양한 크기의 조각으로 메모리를 나누는 방식입니다. 개발자가 원하는 대로 메모리를 나눌 수 있어서 관리하기 쉽지만, 조각의 크기가 달라서 공간이 낭비될 수 있어요.
반응형
SMALL