2단계 페이징 사상, 역 페이지 테이블 사상

OS/Theory 2016. 4. 19. 09:30

<2단계 페이징 사상>

32 비트를 사용해 주소를 표현하는 시스템에서 하위 12 비트를 offset으로 사용한다면, 페이지의 크기는 4 Kbyte(2^12)가 되고 사상 테이블은 최대 100만개(220)의 엔트리를 가질 수 있다.

엔트리의 크기를 4 Byte로 잡더라도 페이지 테이블의 크기는 4 Mbyte가 되므로 매우 큰 크기가 되어 메모리에 모두 저장하기에는 벅차게 되므로, 페이지 테이블을 작게 나누어 필요한 부분만을 메모리에 적재하기 위해 계층구조를 갖도록 구성할 수 있다.


ex) 계층구조인 2단계 페이징을 예로 들어 보자.

위에서 말한 페이지 번호를 나타내는 20 비트를 10 비트씩 나누어 상위 10 비트를 바깥(또는 루트)페이지 테이블의 엔트리 위치로, 하위 10 비트는 나누어진 테이블 내의 엔트리 위치를 나타내도록 하면 어떨까? 메모리에 상주시키는 4 Kbyte 크기의 루트 테이블과 같은 크기의 1024(2^10)개 페이지 테이블들의 선택적인 메모리 적재를 통해 전부 적재해야 하는 부담을 줄일 수 있다.

 




 

위의 그림에서 1024개의 페이지 테이블을 생략하였다.



<역 페이지 테이블 사상 - 역발상>

메모리에 고정 크기의 페이지 테이블 하나만 둠으로써 해결하는 방법이다.

메모리의 프레임 수만큼 엔트리를 가진다.

테이블 내에서 엔트리의 순서는 프레임의 순서와 같다. k 번째 엔트리는 메모리의 k 번째 프레임에 대한 사상 정보를 가지고 있는데, 빈 프레임인지 아닌지를 나타내는존재 비트와 함께 적재된 경우 어떤 프로세스의 몇 번째 페이지인지를 나타내게 된다.

가상주소는 페이지 번호(p), 위치값(d)과 함께 이 페이지를 소유하는 프로세스 번호(Pid)도 가져야 한다. 사상을 할 때 프로세스 번호와 페이지 번호를 함께 사용하여 페이지 테이블을 검색해야 하기 때문이다. 다른 프로세스라 할지라도 페이지 테이블은 같은 페이지 번호로 매겨진다. -> 공유가 힘들다.


ex) 번호가 2인 프로세스가 페이지 번호 3과 위치 값 10으로 사상을 요구할 때, 가상주소는 <2, 3, 10>

1. 먼저 23을 가지는 엔트리를 검색(최악의 경우 엔트리의 끝까지 검색)

2. 발견된 엔트리의 역 페이지 테이블에서의 위치가 일곱 번째라면 메모리의 일곱 번째 프레임에 2번 프로세스의 3번 페이지가 적재되어 있다는 것이며, 여기서 위치 값 10을 더해 실주소를 알게 되는 것이다.



 

페이징은 고정 크기의 페이지로 메모리를 관리함으로써 구현이 쉽다는 장점을 가지기 때문에 대부분의 시스템에서 채택되고 있다.

프로그램의 마지막 페이지는 (평균적으로 페이지 크기의 반 정도의) 내부 단편화가 발생되는 단점이 있다.

예를 들어 3K 크기의 메모리에 페이지의 크기를 1K로 했을경우 1.5K 크기의 프로그램 두 개가 내부 단편화 때문에 전부 적재되지 못한다.

하나로 붙어 다녀야 효과적인 크기(서브루틴, for문 또는 매트릭스(Matrix) ) 가 페이지 단위로 나누어져 일부가 적재되면 사상 시간이 길어지고 공유 또한 불편하게 될 수 있다.



Copyright2014 By 휴먼사이언스

 

'OS > Theory' 카테고리의 다른 글

Working set이론  (0) 2016.04.21
상 메모리의 관리(적재, 배치, 할당 기법)  (0) 2016.04.20
페이지의 보호와 공유  (0) 2016.04.19
TLB(Translation Lookaside Buffer)  (2) 2016.04.18
페이징(Paging)  (0) 2016.04.17
posted by 경원구