RAM이 100% 사용되고 일부는 디스크 캐시에 사용되고 일부는 애플리케이션에 사용된다고 가정합니다. 사용 가능한 하드 드라이브에 스왑 공간이 충분합니다. Linux가 애플리케이션 데이터가 포함된 페이지를 제거하기로 결정하면 해당 페이지는 스왑 공간으로 이동됩니다.
그러나 Linux가 캐시된 디스크 데이터가 포함된 RAM의 페이지를 제거하기로 결정한 경우 해당 페이지를 교체하기 위해 이동합니까, 아니면 단순히 삭제합니까?
답변1
TL;DR 페이지가 디스크 읽기를 위해 캐시된 경우 절대 스왑되지 않습니다.
귀하의 질문에 따르면 귀하는 이미 스왑 작동 방식(또는 가상 메모리 작동 방식)을 알고 있습니다. 이제 디스크 캐싱을 이해하는 간단한 핵심 단계는 다음과 같습니다.정확히같은 방법. "애플리케이션 데이터"와 "디스크 캐시"는 없으며 단지 단일 가상 메모리 메커니즘일 뿐입니다.
각 페이지에 대해 영구 저장소가 지원됩니다. 페이지를 "디스크 캐시"로 선언하는 대신 "/var/spool/mail/root가 이 페이지를 지원합니다"라고 선언할 수도 있습니다. 페이지를 "응용 프로그램 메모리"로 선언하는 대신 "이 페이지는 스왑 공간으로 지원됩니다"("익명입니다" = 명명된 파일에서 지원되지 않음)를 선언할 수도 있습니다.
페이지가 더티하다면, 이름이 지정된 파일이거나 스왑 공간인 경우 독립적으로 자체 영구 저장소에 저장해야 합니다. 페이지가 더티하지 않은 경우 이는 정의상 정확히 동일한 바이트가 페이지의 영구 저장소에 이미 존재함을 의미합니다. 어떤 조치도 필요하지 않습니다. 운영 체제는 적절하다고 판단될 때마다 이 페이지를 재사용할 수 있습니다.
여기서 내가 말하는 "지원되는" 속성은 사람들이 주로 메모리 매핑이라고 부르는 것이며 여기서 설명하는 것은 실제로 mmap
작동하는 방식입니다.