관리 메뉴

일서방

Node , ZONE , pageFrame 본문

IT공부/리눅스커널이야기

Node , ZONE , pageFrame

0asis 2025. 12. 19. 16:58

물리 RAM 전체

  └ NODE(NUMA 단위 : CPU 소켓/메모리 지역)

       └ ZONE(DMA/32bit/일반 등 용도,제약별 구역)

           └ Page Frame(최소 단위 : 4KB 같은 물리 페이지)

 

NODE : "어느 지역(소켓)의 메모리냐"

ZONE : " 그 지역 안에서 어떤 제약/용도 구역이냐"

PageFrame : "실제 할당되는 최소 물리 단위(페이지)"

 

1) Page Frame(페이지 프레임)

-정의 : 

Page Frame은 물리 메모리(RAM)를 페이지 크기(대게 4KB)로 쪼갠 한칸

리눅스는 기본적으로 물리메모리를 페이지 단위로 관리하고 , 각 페이지에 대해 커널 내부에 struct page라는 메타데이터를 부텨서 관리한다.

 

보통 x86_64에서 page size = 4KB

HugePage는 2MB / 1GB 등 큰 페이지도 있지만 , 기본 관리 단위는 4KB가 중심

 

-왜 페이지 단위인가? : 

   ●가상메모리 매핑(page table)도 페이지 단위

   ●캐시/보호/공유/복사(COW) 같은 기능이 페이지 단위로 구현됨

   ●물리 RAM 전체를 바이트 단위로 추적하면 비용이 너무큼

 

 

2) ZONE(존)

-정의 : 

ZONE은 "같은 Node(지역) 안에서 , 하드웨어/용도 제약이 같은 페이지들의 집합"

 

-대표적인 Zone종류

   ●ZONE_DMA

      ●아주 낮은 물리 주소영역

      ●"구형 장치/특정DMA"가 접근 가능한 메모리

 

   ●ZONE_NORMAL

      ●일반 커널/유저 메모리 할당의 중심

      ●64-bit에선 보통 대부분의 RAM이 여기로 감

 

3) Page Frame(페이지 프레임)

-정의 : 물리 메모리의 최소 관리 단위

-기본개념 : 

   ●보통 4KB

   ●물리 메모리를 같은 크기로 쪼갠 조각

   ●커널은 메모리를 바이트 단위로 안 봄 => 페이지 단위로만 관리

-Page Frame안에 뭐가 있나??

: 각 페이지는 struct page로 관리됨

  ● 상태(free/used)

  ● 참조 횟수

  ● 어느 Zone/Node 소속인지