페이지 크기가 4,096바이트일 때 페이지 안에 있는 바이트 하나를 가리키려면 비트가 열두 개 필요합니다(메모리 주소 개념과 같습니다). 페이지 안에서 특정 바이트를 가리키는 이 비트를 오프셋(offset)이라고 부르겠습니다.
페이지 넘버와 오프셋을 더하면 논리 주소가 됩니다. 이 논리 주소는 CPU가 요청하는 주소로 프로그램 카운터에 저장된 값입니다. 페이지 넘버와 오프셋을 더하면 프로그램 카운터의 주소 값이 된다는 개념이 아직 이해되지 않을 수 있습니다.
10진수로 예를 들어 보겠습니다. 다음과 같은 상황을 가정합시다.
• 가상 주소 공간: 2,000바이트
• 페이지 크기: 100바이트
• 프로그램 카운터 값: 234
• 페이지 개수: 20(2,000/100)
• 오프셋: 두 자릿수 10진수(0~99)
전체 2,000바이트에서 페이지 넘버는 어떻게 될까요?
• 0~99바이트: 0
• 100~199바이트: 1
• 200~299바이트: 2
• 300~399바이트: 3
(중략)
• 1,900~1,999바이트: 19