파일은 항상 $BLOCKSIZE 단위로 캐시되나요?

파일은 항상 $BLOCKSIZE 단위로 캐시되나요?

4KB 블록 크기가 주어지면 1KB 파일을 디스크에서 읽고 주 메모리에 캐시할 때 해당 파일을 포함하는 전체 4KB 블록이 캐시됩니까?

마찬가지로 100KB 파일을 열고 그 안에서 50KB를 찾은 다음 1KB의 데이터를 읽는 경우 전체 파일이 아닌 1KB의 읽은 데이터가 포함된 4KB 블록만 주 메모리에 캐시됩니까?

나는 ext4 파일 시스템을 가정하고 있지만 그것을 고집하지는 않습니다.

답변1

예.

권위 있는Linux 페이지 캐싱 기본 사항상태

문서조각페이지 캐시는 쓰기 중뿐만 아니라 파일을 읽을 때도 기록됩니다.

그리고

자동으로 파일 저장조각페이지 캐시에서는 일반적으로 매우 유리합니다.

이는 아래와 같이 블록 기반 파일 시스템(예: ccfs, ext?, gfs, ifs, xfs)에서 작동합니다.그의 사진. 이것도 확인됐습니다페이지 캐시, 메모리, 파일의 관계, 이는 다음과 같이 명확하게 설명합니다.

파일에서 단일 바이트를 읽으면 요청한 바이트가 포함된 전체 4KB 블록이 디스크에서 읽혀지고 페이지 캐시에 배치됩니다.

웹 페이지의 세 번째 단락에서는 전체 파일이 아닌 메인 메모리에 캐시된 1KB 데이터가 포함된 4KB 블록만 읽음을 확인합니다.

관련 정보