일반적인 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 개가 된다.
'시스템' 카테고리의 다른 글
RAID(Redundant Array of Inexpensive Disk) 평가하기 (0) | 2024.03.15 |
---|---|
[시스템 프로그래밍] exit / fork / wait / execve (1) | 2023.03.22 |
[시스템 프로그래밍] error handling wrapper / pid / process states (0) | 2023.03.15 |
[시스템 프로그래밍] Process와 Context Switching (0) | 2023.03.14 |
[시스템 프로그래밍] Exceptional control flow의 종류 (0) | 2023.03.09 |