유닉스에서 캐시 메모리는 어떻게 작동합니까?

유닉스에서 캐시 메모리는 어떻게 작동합니까?

오늘 내 시스템이 충돌했습니다.

Feb 24 20:07:34 kernel: [46929872.935456]  [<ffffffff81141073>] ? out_of_memory+0x473/0x4b0

하지만 여전히 SHH에 로그인하여 상단을 열 수 있었고 많은 앱이 충돌하여 시작을 거부했지만 상단에는 메모리의 50%만 "사용됨"으로 표시되고 나머지 50%는 "캐시됨"으로 표시되었습니다.

나는 항상 캐시 메모리가 드라이브에서 쓰기/읽기를 줄이기 위해 파일을 캐시하는 데 사용된다고 생각했으며, 프로그램이 더 많은 메모리를 할당해야 할 때 일부 파일을 캐시에서 제거하여 프로그램을 실행하는 데 사용했습니다. 그러나 내 총 메모리의 50%가 캐시에 사용되고 시스템이 여전히 충돌하기 때문에 그것은 사실이 아닌 것 같습니다. 반면 일부 캐시만 삭제해야 합니다.

캐시 메모리 작동 방식에 대해 좀 더 자세히 설명해줄 수 있는 사람이 있나요? 감사해요.

답변1

캐시된 데이터를 쓸 수도 있습니다. 삭제하려면 먼저 디스크의 최종 위치에 써야 합니다. 디스크에 오류가 발생하고 쓰기 작업이 성공적으로 완료되었는지 또는 실패했는지 확인하지 못하는 경우 이러한 캐시를 삭제할 수 없습니다.

일부 오래된 디스크가 다음과 같이 실패하는 것을 본 적이 있습니다. 실제 실패를 보고하지 않고 무한 재시도 루프에 갇히게 됩니다. 이런 일이 일어나서는 안 되지만 분명히 그런 일이 일어납니다.

관련 정보