이번엔 페이지 테이블의 구조에 대해서 알아보자
1 ) 계층적 페이지
-> 페이지 테이블을 여러 개의 작은 조각으로 나누는 방법.
-> 2단계 페이징 기법 : 페이지 테이블 자체가 다시 페이징 되도록 함.
2 ) 해시 페이지 테이블
주소 공간이 32비트 보다 크면 3단계 페이지의 경우 시간이 오래걸린다.
-> 한 페이지로 표현하는 해쉬테이블을 사용한다.
<해쉬테이블의 구성 요소>
1 ) 가상 페이지 번호
2 ) 사상되는 페이지 프레임 번호
3 ) 연결 리스트상의 다음 원소 포인터
가상 주소 공간으로부터 페이지 번호가 오면 해싱하여 해시 페이지 테이블에서 연결리스트로 따라가면서 첫 번째 원소와 가상 페이지 번호를 비교한다.
테이블의 크기는 어떻게 정해야 할까 ?
1 ) 너무 크게 잡으면 메모리 낭비가 된다.
2 ) 작게하면 충돌의 위험도가 커진다.
페이지 테이블 항목의 개수가 수백만 개가 되면 많은 물리 메모리를 소비해야 함.
3 ) 역 페이지 테이블 : 메모리 프레임 당 테이블 하나를 가지는 방법
-> 공간은 절약되지만 주소 변환 시간이 더 오래 걸림.
-> 해쉬 테이블이나 TLB를 이용하면 조금 해결할 수 있음.
-> 공유 페이지 구현 못한다는 단점도 있음.
<구성 요소>
1 ) 페이지 주소
2 ) 페이지 소유하고 있는 프로세스 ID