페이징

비균등 고정 분할 기법 내부 단편화의 문제 발생

내부 단편화 분할된 메모리 조각의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 들어가기엔 부족해서 사용할 수 없는 상태

가변크기 분할 기법 외부 단편화의 문제 발생

외부 단편화 남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상

이를 보완하기 위한 방법 페이징

  • 주기억장치를 비교적 작은 고정 사이즈 파티션 (프레임) 으로 나누고 각 프로세스 또한 같은 크기의 고정 조각 (페이지) 으로 나눔
  • 각 프로세스마다 하나의 페이지 테이블(page table) 유지
    • 페이지 테이블은 프로세스의 각 페이지들에 해당하는 프레임의 위치 관리
    • 프로그램 안에서 각 논리 주소는 페이지 번호와 페이지 내의 오프셋으로 구성
    • 논리주소는 프로그램의 시작 위치로부터의 상대적인 값(페이지 번호 + 오프셋) 으로 처리기는 그 논리주소를 물리주소(프레임 숫자 + 오프셋)로 변환
  • 외부단편화로 인한 메모리 낭비 X + 내부단편화로 인한 낭비도 마지막 페이지에서만 발생
  • 프로세스별로 필요한 페이지만큼 빈 프레임에 적재하고 중간에 Swap out된다 하더라도 남은 프레임에 순서대로 채워넣기
    • 논리주소로 되어있기 때문에 가능
  • 한 프로그램이 하나 이상의 파티션을 차지할 수 있으며, 이 파티션들이 반드시 연속일 필요는 없다는 점이 중요
  • 페이징 기법이 편리하게 사용되기 위한 방법
    • 페이지/프레임 크기를 2의 거듭제곱으로 만듦 프로그램의 시작 위치로부터의 상대 주소와 페이지 번호와 오프셋으로 표현되는 논리 주소가 같음을 알 수 있음

      • 10개 비트가 오프셋으로 사용되고 나머지 6비트가 페이지 번호
      • 주소가 16비트, 페이지 크기가 1K(1024 바이트)라고 할 때 개의 1K 페이지로 구성될 수 있음.
    • 2의 거듭제곱으로 만들 때 장점

      • 논리 주소가 상대 주소와 동일해 프로그래머, 어셈블러, 링커에게 투명함
      • 수행 중에 동적 주소 변환을 담당할 하드웨어 기능 구현이 쉬움