8-2.[os] 페이징 기법(2)

페이지 테이블 관리

  • 시스템에 여러 개의 프로세스가 존재하고 프로세스마다 페이지 테이블이 하나씩 있다
  • 예) 프로세스 A, B, C 랑 물리 메모리 1개
  • 프로세스는 메모리에 올라와야 실행 가능 -> 모든 프로세스의 일부 페이지가 물리 메모리의 프레임에 올라와 있음 -> 어떤 페이지가 어떤 프레임에 있는지 관리하기 위해 프로세스마다 페이지 테이블을 운영

image.png

  • 프로세스의 수↑ 페이지 테이블의 크기↑

  • 페이지 테이블의 크기가 은근 큼

  • 테이블 관리의 핵심: 페이지 테이블의 크기를 적정하게 유지

  • 페이지 테이블의 크기↑ 운영체제 영역↑ 사용자 영역↓

  • 물리 메모리의 크기가 작을 때: 프로세스와 페이지 테이블의 일부도 스왑 영역으로 옮겨진다

image.png

  • 페이지 테이블에 빠르게 접근하기 위해 레지스터가 존재
  • 프로세스가 메모리에 접근하려고 할 때 메모리 관리자는 페이지 테이블의 위치를 재빨리 파악해야함
  • 페이지 테이블 기준 레지스터(Page Table Base Register, PTBR): 각 페이지 테이블의 시작 주소를 보관

페이지 테이블 매핑 방식

  • 페이지 테이블 전체를 메모리에서 관리하느냐, 일부를 스왑 영역에서 관리하냐 -> 가상 주소를 물리 주소로 변환하는 방법이 달라짐

image.png

직접 매핑

  • direct mapping
  • 페이지 테이블 전체물리 메모리의 운영체제 영역에 존재하는 방식
  • 별다른 부가 작업 없이 바로 주소 변환이 가능

연관 매핑

  • associative mapping
  • 페이지 테이블 전체스왑 영역에서 관리하는 방식
  • 물리 메모리의 여유 공간이 작을 때 사용하는 방식
  • 모든 페이지 테이블을 저장장치의 스왑 영역에 저장하고 그중 일부물리 메모리에 가지고 있다

  • 페이지 테이블의 일부만 무작위로 가져온다 -> 페이지 번호프레임 번호둘 다 표시

  • 직접 매핑: 원하는프레임 번호를 한 번에 바로 얻을수 있다

  • 연관매핑: 물리 메모리 내의 페이지 테이블을 다 검색한다 -> 검색 실패: 스왑 영역에 있는 페이지 테이블을 검색

집합-연관매핑

  • set-associative mapping

  • 연관 매핑의 문제를 개선한 방식

  • 연관 매핑과 동일: 모든 페이지 테이블을 스왑 영역에서 관리하고 일부물리 메모리로 가져온다

  • 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리 에 가져온다

  • 페이지 테이블을 일정하게 자르고 이를 관리하는 페이지 테이블을 하나 더 생성

  • 집합 테이블 (set table): 일정하게 자른 페이지 테이블이 물리 메모리에 있는지, 스왑 영역에 있는지에 대한 위치 정보를 표시
  • I (invalid)로 표시된 것은 스왑 영역에 있다는 의미
  • 예) 집합2에 속한 페이지(페이지 테이블 엔트리 10〜 14)는 물리 메모리의 180번지에 있다
  • 집합 테이블을 통해 원하는 페이지 테이블 엔트리가 스왑 영역에 있는지, 물리 메모리에 있는지 간단히 파악

역매핑

  • invert mapping

  • 직접 매핑, 연관매핑, 집합-연관 매핑:

    • 페이지 번호를 기준으로 테이블을 구성
    • 프로세스마다 페이지 테이블을 만듦
  • 역매핑:

    • 물리 메모리의 프레임 번호를 기준으로 테이블을 구성
    • 프로세스의 수와 상관없이 테이블이 하나만 존재
    • -> 테이블의 크기가 작다
    • 가상 메모리에 접근할때 프로세스 아이디(PID)와 페이지 번호를 모두 찾아야한다
      • 예) 프레임 1이 프로세스 1의 페이지 0에 있다
    • 모든 페이지를 검색한 후에야 해당페이지가 스왑 영역에 있다는 걸 알게됨 -> 매우 느림

직접 매핑

  • 모든 페이지 테이블을 물리 메모리에 가지고 있는 가장 단순한 방식

  • 물리 메모리가 충분할 때 사용할 수 있음

  • 주소 변환 속도가 빠르다

image.png

  • 가상 주소 VA=를 물리 주소 PA = 로 변환 -> 페이지 테이블의 P번째 위치(PTE P)에서 원하는 프레임 값을 얻을 수 있다

연관 매핑

  • 전체 페이지 테이블을 스왑 영역에 두고 페이지 테이블의 일부물리 메모리에 가져오는 방식
  • 물리 메모리에는 일부 페이지만 무작위로 저장되어 있음
  • TLB 히트: 가상 주소 -> 변환 색인 버퍼 -> 물리 주소
  • TLB 미스: 가상 주소 -> 변환 색인 버퍼 -> 스왑 영역의 직접 매핑 테이블
  • 변환 색인 버퍼 (Translation Look-aside Buffer, TLB)
    • = 연관 레지스터 (associate register)
    • 페이지 번호 + 프레임 번호로 구성된 작은 테이블

image.png

  • 캐시 시스템과 유사함: 캐시 히트, 캐시 미스

  • 단점: 모든 변환 색인 버퍼를 검색한 후에야 TLB 미스가 있다는 사실을 알게 됨


집합-연관 매핑

  • 일반적으로 컴퓨터를 사용할 때 파일이 많으면 디렉터리를 사용하여 일정한 묶음으로 모아놓는다
  • = 디렉터리 매핑(directory mapping)
  • 관련 있는 테이블을 덩어리로 모아놓은 형태

  • = 멀티페이지 매핑 (multi-page mapping)

  • 페이지 주소를 세분화
  • 페이지 테이블을 같은 크기의 여러 묶음으로 나누고, 각 묶음의 시작 주소를 가진 디렉터리 테이블을 새로 만들어 관리
  • 전체 페이지 테이블은 연관 매핑 과 마찬가지로 스왑 영역에 있으며, 일부 테이블은 묶음 단위로 메모리로 옮긴다

  • 디렉터리 테이블:

    • 해당 묶음이 현재 메모리에 있는지, 스왑 영역에 있는지를 표시
    • 가상 주소 -> 디렉터리 테이블 -> 묶음 페이지 테이블 -> 물리 주소 -> TLB 히트
    • 가상 주소 -> 디렉터리 테이블 (I) -> TLB 미스 -> 스왑 영역의 직접 매핑 테이블 -> 물리 주소
    • I(invalid) -> TLB 미스
  • 가상 주소를 VA=가 아니라 VA=로 바꾸어 표시

  • P1: 디렉터리 테이블에서의 위치 정보
  • P2: 묶음 내에서의 위치 정보

예시)

  • 페이지 테이블을 10개씩 한 묶음으로 나눔
  • 가상 주소 32번지
  • 직접 매핑:
  • 집합-연관 매핑:
  • 가상 주소 127번지
  • 직접 매핑
  • 집합-연관 매핑
  • 가상 주소 1784번지
  • 직접 매핑
  • 집합-연관 매핑

image.png

장점:

  • 크기가 큰 페이지 테이블을 같은 크기의 묶음으로 나누어 관리함으로써 효율적
  • 집합-연관매핑에서는 디렉터리 테이블을 이용하여 묶음 테이블의 위치를 바로확인

역매핑

  • 기존 매핑: 프로세스마다 페이지 테이블이 필요하고 그 크기도 작지 않기 때문에 물리 메모리 공간을 낭비하는 것이 문제
  • 물리 메모리의 프레임 번호가 기준
  • 물리 메모리가 어떤 프로세스의 어떤 페이지를 가지고 있는지
  • <프레임 번호, 프로세스 아이디, 페이지 번호>
  • 프로세스의 수와 상관없이 항상 일정 크기의 페이지 테이블을유지

image.png

  • 역매핑 테이블에서 검색
  • 없으면 스왑영역

image.png

  • 단점: 페이지 테이블을 다 검사한후에야 저장장치에 접근하기 때문에 검색 시간을낭비

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!