37.2. 시스템의 메모리 개요
Linux 커널은 시스템의 메모리 리소스(RAM)의 활용도를 극대화하도록 설계되었습니다. 이러한 설계 특성으로 인해 워크로드의 메모리 요구 사항에 따라 시스템 메모리의 일부가 워크로드를 대신하여 커널 내에서 사용되고 메모리의 일부는 사용 가능합니다. 이 여유 메모리는 특수 시스템 할당 및 낮은 우선 순위 또는 높은 우선 순위의 시스템 서비스를 위해 예약되어 있습니다.
나머지 시스템 메모리는 워크로드 자체 전용이며 다음 두 가지 범주로 나뉩니다.
파일 메모리
이 카테고리에 추가된 페이지는 영구 스토리지의 파일 부분을 나타냅니다. 페이지 캐시의 이러한 페이지는 애플리케이션의 주소 공간에 매핑하거나 매핑 해제할 수 있습니다. 애플리케이션을 사용하여
mmap
시스템 호출을 사용하여 파일을 주소 공간에 매핑하거나 버퍼링된 I/O 읽기 또는 쓰기 시스템 호출을 통해 파일에서 작업할 수 있습니다.버퍼링된 I/O 시스템 호출과 페이지를 직접 매핑하는 애플리케이션도 매핑되지 않은 페이지를 다시 사용할 수 있습니다. 결과적으로 이러한 페이지는 특히 시스템이 메모리 집약적 작업을 실행하지 않는 경우 동일한 페이지 세트에서 과도한 I/O 작업을 다시 실행하지 않도록 커널에 의해 캐시에 저장됩니다.
익명 메모리
- 이 카테고리의 페이지는 동적으로 할당된 프로세스에 의해 사용되거나 영구 스토리지의 파일과 관련이 없습니다. 이 페이지 세트는 각 작업의 메모리 내 제어 구조를 백업합니다(예: 애플리케이션 스택 및 힙 영역).
그림 37.1. 메모리 사용 패턴