필요할 때 커널이 차지할 수 있도록 프로세스가 캐시 메모리를 할당할 수 있습니까?

필요할 때 커널이 차지할 수 있도록 프로세스가 캐시 메모리를 할당할 수 있습니까?

저는 구체적으로 Linux에 관해 질문하고 있지만 일반적으로 Unix(예: POSIX 또는 유사)에 적용되는 답변이 더 나을 것입니다.

Linux는 사용 가능한 메모리(즉, 아직 프로세스에 할당되지 않은 메모리)를 사용하여 파일 시스템 메타데이터(및 기타 항목)를 캐시합니다. 프로세스가 추가 메모리를 요청하면 이러한 캐시는 공간을 확보하기 위해 축소됩니다.

내 질문: 애플리케이션이 캐시로만 사용되도록 메모리를 할당하는 방법이 있습니까? 즉, 사용 가능한 메모리가 부족하고 다른 프로세스의 메모리 할당을 처리할 수 없는 경우 커널이 어떻게든 해당 메모리 영역에 대한 제어권을 빼앗을 수 있음을 알고 할당이 이루어집니다.

답변1

당신은 사용할 수 있습니다madvise(2)이를 위해 MADV_FREE페이지를 재활용 가능으로 표시하지만 즉시 삭제할 필요는 없으며 데이터를 다시 읽을 수 있습니다. 페이지당 0을 모두 복원하면 페이지가 사라진 것을 알 수 있습니다.

관련 정보