2011-05-01 8 views
1

윈도우는 당신이 당신의 I/O 파일 시스템 캐시 할 것인지 여부를 지정할 수있는 FILE_FLAG_NO_BUFFERING 플래그가 (Windows에서) 캐시를 오염없이 파일을 읽어보십시오.캐시에서, 그러나

괜찮 으면 좋겠지 만 가능한 경우 캐시를 사용하고 수정하지 않으시겠습니까? 즉

는, 당신은 어떻게 다음 Windows를 알 수 있습니까?

이미 캐시,하지만 지역 발생하지 않습니다 내 데이터, 그래서 캐시에 넣어하지 않는 경우 캐시에서이 파일을 읽어보세요!

은 SCSI 표준은 정확하게이 수행하는 Disable Page Out 비트를 정의, 그래서 그것을 물론, 너무 파일 시스템 캐시의 협력을 윈도우 (에서 해당 기능을 사용할 수 있습니다 방법 (모든 경우) 궁금하네요)?


편집 : TL; DR :

무엇 에 대한 FILE_FLAG_WRITE_THROUGH에 해당이을 읽는거야?

+0

명확히하기 위해, 당신은 가능하면 캐시를 사용하여 읽기 원하는,하지만 당신은 읽기의 결과를하지 않으려는 (아마도 미리 비우는 더 유용한 데이터를 피하기 위해) 캐시 할? –

+0

@Phil : 정확히 =) – Mehrdad

+0

@Heandel : 목적은 @Phil이 말한 것입니다. 필요가 없을 때 다른 * 데이터가 캐시에서 쫓겨나는 것을 막기 위해서입니다. – Mehrdad

답변

0

나는 의심 당신이 요구하는 어떤 모양이 개 플래그를 참조하십시오. 전자 문서는 완전히 불투명하지만 원하는 것을 암시하는 것처럼 보입니다. 패턴이 매우 랜덤 한 경우 나중에 다시 사용하기 위해 페이지에 매달려 있으면 메모리가 낭비됩니다.

파일은 Windows 커널이 항상 I/O를 유지하는 '캐시'의 일부 페이지를 사용합니다, 명심하십시오. 그것을 넣을 곳이 없습니다. 따라서 '다른 페이지를 추방하기 전에이 파일의 이전 페이지를 제거하는 것'과는 달리 '캐시하지 마십시오'라고하는 것은 의미가 없습니다.

+0

저들은 내가 요구하는 것을하지는 않는다. 전자는 미리 읽기 동작이 권장되지 않는다고 지정하고 후자는 권장됨을 지정하지만 캐시에서 페이지를 가져 오는 것에 대해서는 아무 것도 말하지 않습니다. – Mehrdad

+0

언어는 귀하의 케이스를 최적화하기로되어 있다고 말합니다. 그들은 그들이 당신이 기억으로 원하는 것을한다고 말하지 않으며, 그들은 그들이 *하지 않는다고 결코 말하지 않습니다. 커널 개발자의 의견이 없으면 문제가 있으면 실험 해 보겠습니다. – bmargulies

+0

사실은 이미 그것을 시도했습니다 - 문제가 여전히 FILE_NO_INTERMEDIATE_BUFFERING'가에서 다른 프로그램에 영향을주지 않습니다'반면, (따라서 왜 내 하드 디스크가 너무 많이 나는 다른 프로그램을 실행할 때 때려) 캐시에서 다른 페이지를 축출한다는 것입니다 모든.물론 후자는 전혀 캐시를 사용하지 않으므로 내 문제입니다. – Mehrdad

1

가장 가까운 Windows가 제공하는 것은 FILE_FLAG_WRITE_THROUGH입니다.

FILE_FLAG_RANDOM_ACCESS 
FILE_FLAG_SEQUENTIAL_SCAN 

후자의 의사가 명확하게 아마 미리 읽기 것이지만 순차적가 캐시의 페이지를 유지하지 않을 것을 제안 :

+0

하지 쓰기, 읽기 ... – Mehrdad

+0

@Mehrdad : 예 - 나는 그것이 당신이 원하는 무엇을 정말하지 않는 것이,이 제공하는 가장 가까운 말했습니다 그 이유는. –

관련 문제