20. 더 작은 페이징

이주희·2022년 10월 27일
0

OS

목록 보기
13/17

페이징 테이블의 크기

너무 크면 많은 공간을 차지하게 된다...

더 큰 페이지

페이지 테이블 크기를 줄이려면 -> 페이지 크기를 증가시킨다!

-> 내부 낭비 공간이 증가 (내부 단편화)

하이브리드 접근법 ( 페이징과 세그먼트 )

페이징과 세그멘테이션을 결합하여 페이지 테이블의 크기를 줄인다

세그먼트마다 따로 페이지테이블을 둠
-> 여전히 페이지 테이블 낭비를 하게 됨
-> 외부 단편화 유발

멀티 레벨 페이지 테이블

선형 페이지 테이블을 트리 구조로 표현

페이지 테이블을 페이지 크기의 단위로 나눔
페이지 테이블의 페이지에 유효하지 않은 항목이 있다면 할당 X

예제

64B 페이지를 갖는 16KB 크기의 작은 주소공간.
14bit의 가상주소공간

-> 6 offset + 8 VPN

  1. 선형 페이지 테이블로 만들 떄
    2^8개의 entry로 구성
    페이지 테이블의 크기 : 2^8 * 4B = 1KB

  2. 2단계 페이지 테이블로 만들 때
    선형 페이지 테이블을 페이지 단위로 분할
    각 PTE가 4B라 가정시,,,
    페이지 테이블은 (4B(엔트리 크기)16)(페이지 크기 맞춤) 16
    따라서 첫 페이지 테이블은 16개의 64B 페이지로 분리
    각 페이지에는 16개의 PTE 있음

VPN의 상위 4비트를 페이지 디렉토리의 인덱스로 사용하게 됨
페이지 디렉토리의 해당 항목이 무효라면 주소 접근 유효하지 않음

역페이지 테이블

시스템에 여러개의 페이지 테이블 대신 하나만 둔다
페이지테이블: 물리 페이지 -> 가상 주소상의 페이지 변환
각 항목은 해당 물리페이지를 사용중인 프로세스 번호, 해당 가상 페이지 번호를 가짐
해시 테이블 사용해 물리 주소를 가상 주소로 변환

스와핑

페이지 테이블을 커널 가상 메모리에 위치
메모리 부족할 경우 디스크로 스왑

0개의 댓글