1. Paging(=책 페이지 그거 맞음)

일정한 page 단위로 나누어 연속적이지 않은 물리 메모리에 저장하는 메모리 관리 기법

가상메모리를 동일한 크기의 페이지로 나누고, 물리 메모리는 프레임으로 나눔

문서와 서랍이라는 예시를 통해 알아보자

  1. 프로세스 == 여러 장의 종이로 이루어져 있는 문서
  2. 페이지 == 문서의 종이 한 장
    • 프로세스의 페이지는 고정된 크기를 가진다.
    • 문서의 종이 한 장에는 종이 한장 크기 만큼의 정보(글)이 담겨져 있다.
  3. 물리적 메모리 == 구획으로 나뉘어져 있는 서랍
    • 컴퓨터의 물리적 메모리는 프레임이라는 고정된 크기의 블록으로 나누어져 있다.
  4. 프레임 == 종이 한 장 들어갈 수 있는 서랍의 구획(비유가 조금 이상하긴 하지만 이렇게 이해하자)
    • 한 장의 종이만 넣을 수 있는 사이즈다.(깻잎 한 장 사이즈 인가보다)
    • 물리적 메모리의 프레임에는 하나의 페이지를 저장할 수 있다.

장점

  • 물리 메모리의 연속적이지 않은 여러 프레임에 페이지를 분산시켜 저장할 수 있음
  • 외부 단편화 문제 해결 : 연속적인 공간을 요구하지 않으므로

    단점

  • 내부 단편화 문제 생김
    • 예시: 페이지의 크기가 4KB이고 프로세스의 크기가 10KB라면, 두 개의 페이지 (총 8KB)는 완전히 차지되겠지만 세 번째 페이지는 2KB만 사용하고 나머지 2KB는 사용되지 않게 됩니다. 이 2KB는 내부 단편화로 간주됩니다.

2. Segmentation

페이징은 그냥 일정한 크기 단위로 나눴다면 세그먼트는 논리적으로 의미 있는 세그먼트로 나누는 방식

장점

  • 내부 단편화 안생김

    단점

  • 외부 단편화 생김

외부/내부 단편화

  • 외부 단편화
    • 메모리의 사용 가능한 공간들이 작은 조각들로 나뉘어져 있어, 전체적으로 보면 충분한 메모리가 있음에도 불구하고 연속적인 공간이 부족하여 큰 메모리 요청을 만족시키지 못해 발생하는 현상
    • 예: 장난감을 넣을 상자가 여러 개 있을 때, 각 상자마다 조금씩 빈 공간이 있지만 큰 장난감을 넣기에는 어느 한 상자도 충분한 공간이 없는 상황

    image

  • 내부 단편화
    • 할당된 메모리 영역 내부에 남아 있는 사용되지 않는 공간이 발생하는 현상
    • 예: 특정 크기로 분할된 상자에 장난감을 넣을 때, 장난감의 크기가 상자의 크기보다 작아 상자 내부에 빈 공간이 남는 상황

    image

Paged Segmentation

  1. 논리적 단위인 segment로 먼저 나눈다.
  2. 일정한 단위인 page로 나눈다.(segment크기를 page의 배수로 함)
  3. 내부/외부 단편화를 모두 해결할 수 있다.

가상 메모리

  • 개발자 입장에서의 논리 메모리
  • 물리적 메모리보다 사용자 프로그램이 커져도 실행이 가능
  • 페이징, 세그멘테이션은 가상 메모리를 구현하는데 사용되는 메커니즘 중 하나
  • 지금 쓸 것만 메모리에 올리고 나머지는 디스크(Swap 영역)에 둔다는 게 핵심!

요구 페이징

  • 프로그램 실행 초기에 모든 메모리 페이지를 물리적 메모리에 적재하는 대신, 필요할 때 해당 페이지만 메모리에 적재
  • 메모리 사용량 감소
  • 프로세스 전체를 메모리에 적재하는 입출력 오버헤드 감소
  • 페이지 테이블은 논리적 주소와 물리적 주소 간의 매핑 정보를 가지고 있고, 각 페이지에 대한 상태를 나타내는 여러 비트를 가지고 있는데 그중 메모리 로드 여부를 판별하는게 유효 bit/무효 bit 임
  • 유효 bit: 메모리에 있음
  • 무효 bit: 메모리에 없음

Page fault

  • 무효 bit의 page에 액세스하는 상황(그 페이지가 메모리에 없는 상황)
  • MMU(Memory Management Unit)
    • CPU 칩에 통합되어 있거나 CPU와 함께 패키징 되어 있음
  • MMU(Memory Management Unit - 가상 주소를 물리 메모리 주소로 변환해주는 하드웨어 장치)이 page fault trap을 발생시켜 처리 함
  • 뭘 처리 하냐?
    • 필요한 페이지를 물리 메모리로 로드함
    • 페이지 테이블을 업데이트하여 논리적 주소와 물리적 주소 간의 매핑을 설정함
    • 요청한 데이터나 콛에 다시 액세스 할 수 있음

Page 교체 알고리즘

  • page fault 후 swap 영역에 있던 페이지를 메모리로 가져오는데, 물리적 메모리가 부족할 수 있음
  • 기존에 메모리에 올라와 있던 페이지를 디스크로 옮겨서 메모리 공간을 확보해야 함 -> 페이지 교체
  • 알고리즘 종류