RAM에는 없지만 디스크에 I/O를 실행한 파일 시스템 캐시에 액세스

RAM에는 없지만 디스크에 I/O를 실행한 파일 시스템 캐시에 액세스

Linux에는 가능한 한 많은 데이터를 RAM에 버퍼로 보관하는 파일 시스템 캐시가 있습니다.

스레드는 파일 시스템의 페이지 블록을 읽으려고 시도합니다. 페이지가 캐시에 있으면 캐시에서 데이터를 가져옵니다(캐시 적중). 그렇지 않으면 해당 페이지에 대한 디스크 I/O 요청을 하고 대기합니다(캐시 누락).

하지만 여러 스레드(또는 프로세서)가 동일한 페이지 블록을 읽는 상황도 있을 수 있다고 생각합니다.페이지가 캐시에 없지만 페이지에 대한 I/O 요청이 이루어졌습니다.이 경우 디스크 I/O가 다시 실행되지 않지만 스레드는 어쨌든 디스크에서 페이지를 읽을 때까지 기다려야 합니다.

Linux의 파일 캐시에 이 속성이 있습니까? 이걸 뭐라고 부르니?

답변1

Linux에서 캐시에서 로드하는 것이 비동기식인 모든 OS에서 수행되는 방식은 다음과 같습니다. 페이지가 요청되었지만 아직 로드되지 않은 경우 아직 로드되지 않은 것으로 표시된 캐시 항목이 있습니다. 두 번째 요청이 오면 기존 캐시 항목을 피기백하고 로드가 완료될 때까지 기다립니다. Linux 커널에서는 대기 메커니즘을 대기 대기열이라고 합니다. 대기 대기열에 대한 많은 문서가 있습니다.리눅스 장치 드라이버,완료 수량(대기 큐보다 약간 높은 수준의 데이터 구조)커널 API 문서,…

이 메커니즘에 공식적인 이름이 있는지는 모르겠습니다.

관련 정보