운영 체제 책에서는 일반적으로 페이지 크기가 프로세서 아키텍처에 의해 결정된다고 언급합니다. 예를 들어 Intel x86은 4KB 페이지 크기를 지원합니다. 하드웨어에 운영체제를 설치하면 운영체제가 하드웨어에서 4KB 크기의 페이지를 읽어와 가상 주소 공간을 각각 4KB 크기의 페이지로, 메모리를 프레임으로 논리적으로 나누는 느낌이 든다.
제가 맞다면 프로세서나 하드웨어의 어디에서 운영 체제가 이 4KB 값을 읽습니까? 하드웨어가 제공하는 페이지 크기를 결정하기 위해 운영 체제는 어떤 메커니즘을 사용합니까? 누군가 나를 깨달을 수 있습니까? Intel은 어떤 기준으로 4KB 페이지 크기를 예약하기로 결정했습니다.
답변1
운영 체제는 아키텍처(및 경우에 따라 빌드 시 커널 구성)를 기반으로 페이지 크기를 하드코딩합니다. 예를 들어 x86에서 기본 페이지 크기는 항상 4KiB입니다. 이는 Linux에서 CPU 아키텍처의 속성이며 이 정의를 볼 수 있습니다.존재하다include/asm/page_types
. 64비트 ARM에서는 빌드 시 페이지 크기를 4KiB, 16KiB 또는 64KiB로 구성할 수 있습니다. 일부 아키텍처는 다양한 페이지 크기(예를 들어x86의 대형 페이지), 모든 크기는 미리 알려져 있으며 기본 크기는 고정되어 있습니다.
Linux에서 페이지 크기에 대한 정식 정의는 아키텍처에 따라 PAGE_SIZE
달라지는 를 포함하여 페이지 크기를 얻는 것 입니다 asm/page.h
(x86에서 발생하는 것처럼 다른 헤더가 도입될 수 있음). Elixir는 편리한 목록을 제공합니다모든 PAGE_SIZE
정의.
Linux 커널에서 지원하는 대부분의 아키텍처는 4KiB 페이지를 지원합니다. 단, Alpha, ARC, 일부 Motorola 68k 시스템, OpenRISC 및 64비트 SPARC는 모두 8KiB 페이지를 사용합니다. 다른 페이지 크기를 사용하도록 많은 아키텍처를 구성할 수 있습니다.