반응형

몇가지 문제를 통해 페이징에 대해 좀 더 자세히 이해해보자.

정답은 그림을 통해 자세히 설명하려 한다.


페이지 크기가 4KB이고 메모리 크기가 256KB인 메모리 페이징 시스템이 있을 때


- 페이지 프레임 수는?


- 이 메모리 주소를 해결하는 데 필요한 비트 수는?


- 페이지 번호에 사용하는 비트와 페이지 오프셋에 사용하는 비트는?



우선 문제를 분석 해보자.


페이지 크기가 4KB라 하였다. 메모리 관련 개념에서는 사용되는 단위가 바이트(Byte)이므로 바이트로 우선 변환해보자.

그럼 페이지는 2^12Byte임을 알 수 있다.



마찬가지로 메모리를 보면 메모리는 2^18Byte가 됨을 알 수 있다.

페이지 프레임 수는?

페이지 프레임 수는 메모리 전체 크기에 페이지가 최대 몇개 들어 갈 수 있는지 묻고 있는것이다.

따라서 2^18/2^12 = 2^6 = 64개이다.


이 메모리 주소를 해결하는 데 필요한 비트 수는?
메모리 주소를 모두 표현하기 위해서는 메모리가 2^18임을 알고있고 결국 비트가 18개가 있어야 2^18을 만족 할 수 있게 된다.

따라서 18비트가 있으면 된다.


페이지 번호에 사용하는 비트와 페이지 오프셋에 사용하는 비트는?

페이지는 모두 64개가 있다 했다. 따라서 그림은 다음과 같아진다.


위의 그림에서 보면 알 수 있다시피 페이지 번호를 모두 나타내기 위해서는 6개의 비트가 있어야 

페이지 번호 0번(000000)부터 페이지 번호 63번(111111)까지 모두 나타 낼 수 있다.

그리고 오프셋에 사용되는 비트 수는 한 페이지의 모든 위치를 다 나타내기 위해 

k번 페이지의 0번(0000 0000 0000 0000)부터 2^12-1번(1111 1111 1111 1111)까지 나타내는 총 12비트가 필요하다.



16bit 논리 주소를 이용하여 4KB 크기의 페이지를 갖는 시스템 메모리가 있다고 가정하고 분석해보자.

(이때 논리주소가 8196일 때 어떻게 되는지 생각해보자.)


우선 4KB 크기의 페이지라 하였으니 2^12Byte로 생각하자.


이제 이 페이지의 변위(오프셋)은 12비트가 필요함을 알 수 있다.

(위의 0000 0000 0000 0000 ~ 1111 1111 1111 1111까지 모두 표현해야 하니)


그렇다면 페이지 번호를 나타내는 비트 수는 16 - 12 = 4비트 임을 알 수 있고 총 2^4개의 페이지 수가 있음을 알 수 있다.



이제 논리주소 8196에 대해 생각해보자.

8196를 2진수로 나타내면 0010 0000 0000 0100가 된다

앞서 우리는 4비트를 페이지 번호에 이용, 나머지 12비트를 오프셋(변위)에 이용한다 했다.


따라서 앞의 4비트를 이용하여 페이지 번호가 0010(2)인 페이지 테이블의 물리적 주소가 110이 되고 변위는 0000 0000 0100이므로

실제 메모리 주소는 110 0000 0000 0100이 된다.

그럼 여기서 알 수 있는 것은

메모리는 2^15Byte의 크기가 됨을 알 수 있고 32KB 메모리임을 알 수 있다.





32비트 시스템에서 페이지 크기가 4KB일 때, 4GB 메모리에 접근하기 위해 필요한 페이지 테이블의 크기는? (페이지 엔트리의 크기는 4Byte 이다.)


이제 그림을 직접 그리거나 그림 없이 해결해보자.

페이지 크기는 4KB -> 2^12byte (오프셋에 필요한 비트 수 : 12비트)

메모리 크기는 4GB -> 2^32byte (메모리에 필요한 비트 수 : 32비트)

페이지 번호에 필요한 비트 수 : 32 - 12 = 20비트


따라서 페이지 테이블 크기는 페이지 수 * 엔트리 크기 = 2^20 * 2^2 = 2^22가 된다.










반응형