%3C/text%3E%3C/svg%3E">
💻
💻 IT·개발

가상 주소 → 페이지 번호·오프셋 계산기

입력하면 바로 계산됩니다.

입력값

가상 주소 페이지 번호·오프셋 계산기 쉽게 이해하기 — 개념과 원리

페이징 방식의 가상 메모리에서 프로세서는 가상 주소를 페이지 번호와 오프셋으로 나눕니다. 페이지 번호는 페이지 테이블을 거쳐 물리 프레임 번호로 바뀌고, 오프셋은 물리 주소에 그대로 붙습니다. 이 계산기는 16진수 주소와 페이지 크기(KiB)를 받아 이 분리를 계산하며, 운영체제 수업이나 디버거 출력·크래시 덤프를 읽을 때, TLB와 대형 페이지를 이해할 때 쓰입니다.

가상 주소를 페이지와 오프셋으로 나누기4 KiB 페이지에서 0x7FFE1234의 하위 12비트 0x234(564번째 바이트)가 오프셋이고, 나머지 0x7FFE1이 가상 페이지 번호입니다.주소 = 몇 번째 페이지 + 페이지 안의 위치0x7FFE1234페이지 번호 0x7FFE1상위 20비트오프셋 0x234하위 12비트페이지0x7FFE14,096바이트페이지 안 564번째 바이트0x234 = 5644,096 = 2¹²→ 오프셋 12비트= 16진 끝 3자리페이지 = 주소 ÷ 4,096 · 오프셋 = 나머지
책과 같습니다. 페이지 번호는 몇 쪽인지, 오프셋은 그 쪽의 어디인지를 말합니다.

계산 방법

페이지 크기는 KiB로 입력하며 1,024를 곱해 바이트로 바꿉니다. 주소는 16진수로 읽고("0x"는 있어도 없어도 됨) 큰 정수로 처리하므로 64비트 주소도 계산됩니다. 결과는 16진수로 표시합니다.

원리

페이지 크기는 2의 거듭제곱이므로, 페이지 크기로 나누는 것은 오른쪽으로 k비트 이동하는 것과 같고 나머지는 하위 k비트 그 자체입니다. 4 KiB 페이지라면 k = 12이므로 하위 12비트(16진수 세 자리)가 오프셋, 나머지 상위 비트가 페이지 번호가 됩니다. 한 페이지 안의 모든 바이트는 페이지 번호가 같으므로, 페이지 테이블 항목 하나로 페이지 전체를 대응시킬 수 있습니다.

예제 풀이

  1. 입력값: 주소 0x7FFE1234, 페이지 크기 4 KiB = 4,096바이트 = 2^12
  2. 오프셋 비트: log₂(4,096) = 12
  3. 페이지 번호: 2,147,357,236 ÷ 4,096 = 524,257, 나머지 564이며 524,257 = 0x7FFE1
  4. 오프셋: 564 = 0x234
  5. 검산: 16진수 끝 세 자리를 떼면 페이지 번호, 남기면 오프셋입니다.

결과 해석

오프셋은 페이지 안에서 몇 번째 바이트인지를 뜻하며 변환 뒤에도 바뀌지 않습니다. 페이지 번호는 MMU가 페이지 테이블에서 찾는 색인입니다. 2 MiB 대형 페이지를 쓰면 오프셋이 21비트로 늘어나, 같은 메모리를 훨씬 적은 항목으로 관리할 수 있습니다.

흔한 실수

주의: 이 계산은 주소를 산술적으로 나누는 것만 보여 줍니다. 실제 x86-64나 ARM은 페이지 번호를 다시 여러 단계의 페이지 테이블 색인으로 나누고 권한 비트도 확인하며, 세부 사항은 아키텍처와 커널에 따라 다릅니다.

자주 묻는 질문

32비트 주소 공간에 4 KiB 페이지는 몇 개인가요?

2^32 ÷ 2^12 = 2^20, 약 100만 개입니다.

물리 주소는 어떻게 만들어지나요?

물리 주소 = 프레임 번호 × 페이지 크기 + 오프셋이며, 오프셋은 그대로 유지됩니다.

x86-64는 왜 4 KiB 페이지를 쓰나요?

아키텍처의 기본 페이지 크기이기 때문이며, 큰 영역에는 2 MiB와 1 GiB 페이지도 지원합니다.

출처: A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, Wiley · Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A (paging)

2026년 11월 8일 확인. 표준 공식과 RFC/IEEE 정의를 사용해 브라우저 안에서만 계산합니다. 입력한 내용은 어디에도 전송되지 않습니다.

💻 IT·개발 계산기 전체 →🏠 홍라이프 계산기 홈 →