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