본문 바로가기

시스템

[OS] Page size <-> offset, page 개수 계산하기

일반적인 page size인 4KB로 생각해보자.

4KB = 2^12B

즉 한 page에 2^12개의 바이트가 저장될 수 있다.

각각의 바이트를 구분하려면 0 ~ 2^12의 숫자가 필요하다.

즉 12bit가 필요한 것이다. 

offset은 한 page 내부에서의 위치를 표현하기 위한 것이므로

offset으로 12bit를 사용하게 된다.

 

이번엔 page단위로 살펴보자. (내부가 아닌)

어느 4byte짜리 주솟값을 생각하자.

4byte는 32개의 bits로 이루어져 있고, 이 32개의 bit로 virtual addr를 저장한다.

이때 하위 12bit는 페이지 내부에서의 offset을 담게 되는 것이지,

몇번째 page인지를 의미하는 page number를 담을 때는 그 보다 상위 bit들만을 사용하게 될 것이다. 

 

다음으로 pintos를 기준으로 virtual, physical memory를 page단위로 나눠보자.

참고로, user memory는 virtual 기준으로 0~3GB, physical 기준으로 1~4GB에 저장된다.

반대로 kernel memory는 virtual 기준으로 3~4GB, physical 기준으로 0~1GB에 저장된다.

이때 user가 사용할 수 있는 3GB memory를 생각하자.

3GB = 3 * 2^30 B 이고, 

page 하나가 4KB = 2^12 B 이므로

둘을 나누면 page의 개수는 3 * 2^18 개가 된다.