본문 바로가기

IT

페이지 스와핑(Page Swapping) 이해하기

반응형

페이지 스와핑은 운영 체제에서 메모리 관리를 위해 사용하는 기술이다. 글에서는 kswapd 커널 쓰레드와 페이지 스와핑 작동 원리에 대해 쉽게 설명해 보도록 하겠다.
 
kswapd 커널 쓰레드
 
kswapd 메모리가 부족할 작동하여 메모리를 청소하는 역할을 한다. 메모리의 여유 공간(free area) 부족해지면 kswapd 활성화되어 메모리 정리를 시작한다.
 
 
페이지 스와핑 작동 원리
 
A. Slab 캐시 정리
 kswapd 먼저 Slab 캐시를 줄여 메모리를 확보한다.
 
B. 레퍼런스 비트 확인
 페이지의 레퍼런스 비트를 확인하여 사용 중인 페이지를 active 리스트에, 사용되지 않은 페이지를 inactive 리스트에 분류한다. 과정에서 페이지에 번째 기회를 주기도 한다.
 
C. inactive 리스트 처리
 inactive 리스트에서 페이지 테이블 엔트리(pte) 매핑이 해제된 페이지는 이상 사용되지 않기 때문에, 데이터가 변경된 경우에는 I/O 작업을 통해 저장하고, 변경되지 않은 경우에는 바로 메모리를 회수한다.
 
D. PTE 매핑 페이지 처리
 많은 PTE 매핑 페이지가 있을 경우, swapout 통해 모든 프로세스의 페이지 테이블 엔트리를 스캔하며 페이지에 레퍼런스 비트와 변경 여부를 복사한다.
 
E. 페이지 회수
 이후 inactive 리스트에서 레퍼런스 비트가 0 페이지만 메모리에서 쫒아내고, 필요하다면 과정을 반복한다.
이렇게 페이지 스와핑을 통해 운영 체제는 메모리를 효율적으로 관리하며, 메모리 부족 문제를 해결할 있다.
 
 
*용어 정리
 
kswapd 커널 쓰레드
 커널은 운영 체제의 핵심 부분이며, 쓰레드는 프로세스 내부의 실행 흐름이며,  kswapd는 커널에서 실행되는 쓰레드로, 메모리를 관리하고 필요한 경우 페이지 스와핑을 수행한다.

Slab cache
 메모리 관리를 효율적으로 수행하기 위해 사용되는 캐시이다. 동일한 크기의 메모리 블록을 저장하고, 필요에 따라 할당하거나 반환한다.

페이지
 가상 메모리 관리에서 사용하는 기본 단위이며 메모리는 여러 개의 페이지로 나뉘어져 있으며, 프로세스가 메모리를 사용할 때 페이지 단위로 할당받고 반환한다.

레퍼런스 비트(Reference bit)
 페이지의 사용 여부를 나타내는 플래그이며, 페이지가 최근에 사용되었다면 1, 그렇지 않다면 0으로 설정된다.

active 리스트와 inactive 리스트
 메모리 관리 시스템에서 사용되는 두 가지 주요 페이지 목록으로  active 리스트에는 최근에 사용된 페이지들이 포함되어 있으며, inactive 리스트에는 사용되지 않은 페이지들이 포함된다.

PTE(Page Table Entry)
가상 주소와 물리 주소 간의 매핑을 나타내는 항목이며, 페이지 테이블은 이러한 PTE들로 구성되어 있다.

dirty 비트(Dirty bit)
 페이지에 데이터가 변경되었는지 여부를 나타내는 플래그이며, 데이터가 변경된 경우(즉, "Dirty" 페이지)에는 1로 설정되고, 그렇지 않은 경우에는 0으로 설정된다.
 

반응형

'IT' 카테고리의 다른 글

VMware Cloud on AWS  (0) 2023.07.04
Multi-AZ란?  (0) 2023.07.04
AWS L4/L7 Load Balancer  (0) 2023.04.10
IntelliJ IDEA란? 주요 기능 및 특징  (0) 2023.03.19
JavaFX란?  (0) 2023.03.19