×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 2,101,710명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)
반응형

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

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


페이지 크기가 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가 된다.










반응형