페이지 표 구조 문서의 검증 코드다. if __name__ == "__main__": 아래가 자체 테스트다.

"""페이지 표 크기 계산 (Stallings 그림 8.4의 2단계 페이지 표, 역 페이지 표)."""
KB, MB, GB = 2 ** 10, 2 ** 20, 2 ** 30

if __name__ == "__main__":
    # 32비트 주소 공간 4GB, 페이지 4KB, 페이지 표 항목 4바이트
    pages = 4 * GB // (4 * KB)
    assert pages == 2 ** 20                      # 페이지 약 100만 개
    user_pt = pages * 4
    assert user_pt == 4 * MB                     # 사용자 페이지 표 4MB = 페이지 1024장
    root = (user_pt // (4 * KB)) * 4
    assert root == 4 * KB                        # 루트 페이지 표 4KB (항목 1024개)
    # 주소 32비트 = 루트 색인 10 + 2단계 색인 10 + 오프셋 12
    assert 10 + 10 + 12 == 32
    v = 0x00403ABC
    assert (v >> 22, (v >> 12) & 0x3FF, v & 0xFFF) == (1, 3, 0xABC)
    # 역 페이지 표: 실제 메모리 프레임마다 항목 하나. 메모리 1GB, 4KB 프레임이면 2^18 항목
    assert GB // (4 * KB) == 2 ** 18
    # 카드 C3: 64비트 주소의 1단계 표라면 2^52 항목 x 8바이트
    assert 2 ** 52 * 8 == 2 ** 55 and 2 ** 55 // (2 ** 50) == 32       # 32 PB
    print("ALL CHECKS PASSED")