2025-09-08 03:14

Tags: 소프트웨어 공학

페이징

  • 외부 단편화 문제를 해결하기 위한 메모리 관리 기법
    • 메모리 공간이 되는데도 연속된 공간이 없어서 못쓰는 문제
    • 프로세스 를 굳이 연속되게 할당해야 할까?
  • 크고 연속적인 덩어리들을 작고 고정된 크기의 조각으로 나눠서 관리

구성 요소

  • 페이지(Page):

    • 프로세스의 **논리 주소 공간(Logical Address Space)**을 일정한 크기로 자른 조각.
    • 논리 주소는 프로세스 입장에서 바라보는 주소이며, 0번지부터 시작하는 자신만의 가상 공간입니다.
  • 프레임(Frame):

    • **물리 메모리(Physical Memory, RAM)**를 페이지와 똑같은 크기로 자른 조각. 실제 데이터가 저장되는 물리적인 공간입니다.
    • 페이지의 크기와 프레임의 크기가 동일하므로 어떤 페이지든 비어있는 프레임 공간에 들어갈 수 있다.
  • 페이지 테이블(Page Table):

    • 어떤 페이지가 어떤 프레임에 저장되어 있는지 연결해주는 지도(mapping table).
    • 각 프로세스는 자신만의 페이지 테이블을 가지고 있으며, 운영체제는 이를 통해 주소를 변환합니다.

주소 변환 과정

  • 흩어진 조각들을 찾아가기 위해 MMU(Memory Management Unit, 메모리 관리 장치) 가 핵심적 역햘
  1. 논리 주소 생성:
    • CPU는 프로그램 코드를 실행하며 특정 데이터에 접근하기 위한 논리 주소(예: “내 주소 공간의 1000번지에 있는 데이터를 가져와!“)를 생성
  2. 주소 분해: MMU는 CPU가 생성한 논리 주소를 두 부분으로 나눕니다.
    • 페이지 번호 (p, page number): 해당 주소가 몇 번째 페이지에 속하는지를 나타냅니다.
    • 오프셋 (d, offset): 페이지 내에서 얼마나 떨어져 있는지를 나타내는 상대적인 위치입니다.
  3. 페이지 테이블 조회:
    • MMU는 현재 실행 중인 프로세스의 페이지 테이블에 접근합니다.
    • 그리고 페이지 번호(p)인덱스]로 사용하여 해당 페이지가 저장된 프레임 번호(f) 를 찾아냅니다.
  4. 물리 주소 생성:
    • MMU는 페이지 테이블에서 찾은 **프레임 번호(f)**와 원래의 **오프셋(d)**을 조합하여 최종적인 물리 주소를 만듭니다.
  5. 메모리 접근:
    • 생성된 물리 주소를 통해 실제 RAM에 접근하여 원하는 데이터를 읽거나 씁니다.
구분내용
장점1. 외부 단편화 해결: 물리 메모리의 여유 공간을 조각내어 효율적으로 사용할 수 있습니다.
2. 유연한 메모리 관리: 프로세스를 불연속적인 공간에 배치할 수 있어 메모리 관리가 유연해집니다.
3. 메모리 보호 및 공유 용이: 페이지 테이블에 보호 비트(읽기/쓰기/실행 권한)를 추가하여 페이지별 접근 제어가 가능합니다. 또한, 여러 프로세스의 페이지 테이블이 동일한 프레임을 가리키게 하여 코드나 데이터를 쉽게 공유할 수 있습니다.
4. 가상 메모리의 기반: 페이징은 필요한 페이지만 메모리에 올리고 나머지는 디스크(스왑 공간)에 두는 가상 메모리 시스템을 구현하는 핵심 기술입니다.
단점1. 내부 단편화 존재: 프로세스의 크기가 페이지 크기의 배수로 딱 떨어지지 않으면, 마지막 페이지에서는 항상 남는 공간(내부 단편화)이 발생합니다.
2. 페이지 테이블 오버헤드: 각 프로세스마다 페이지 테이블을 저장할 공간이 추가로 필요합니다.
3. 주소 변환 오버헤드: 논리 주소를 물리 주소로 변환하는 과정이 필요하며, 이는 TLB가 없을 경우 성능 저하의 원인이 됩니다.