Windows 7의 프로세스는 캐시됩니까?


4

Windows Performance Analyzer를 사용하여 Java 응용 프로그램을 작성하고 있습니다. 내 응용 프로그램은 외부 명령 줄 프로그램을 사용하여 파일을 구문 분석하는 간단한 파서입니다. 이 외부 프로그램은 각 파일마다 호출됩니다. Windows 7에서 실행될 때의 모습은 다음과 같습니다.

프로파일 링 결과

당신이 볼 수 있듯이,이 동시에 생성이 개 수명이 짧은 프로세스는 다음과 같습니다 conhost.exesrc2srcml.exe. 이상한 점은 이러한 프로세스가 처음보다 훨씬 오래 지속된다는 것입니다. 이것의 원인은 무엇입니까?

Windows가 어떤 방식으로 해당 프로세스를 캐시 할 수 있습니까?

답변:


4

Windows 7은 실제로 응용 프로그램을 포함한 모든 종류의 파일을 메모리에 캐시합니다. 프로세스가 메모리에 있다는 사실은 프로세스가 훨씬 빨리 시작된다는 사실을 추측했을 것입니다. 실행 파일 자체가 캐시 될뿐만 아니라 필요한 DLL도로드되어 준비됩니다.


1

conhost.exe콘솔 호스팅 프로세스이며 명령 프롬프트 (cmd)에 의해 시작됩니다. 명령 행 프로그램을 사용 중이므로 존재합니다.

src2srcml.exesrcML 툴킷의 일부이며 소스 마크 업 또는 XML 파일을 조작하고 있기 때문에있을 수 있습니다.

MoJo가 이미 언급 한 것처럼 첫 번째 호출에서 속도가 느린 이유는 첫 번째 호출이 필요한 오브젝트를 메모리에로드하기 때문입니다. Windows가 RAM을 필요로하지 않는 한, 읽거나 쓴 모든 파일 블록을 남겨 둡니다.

여기에는 실행 파일, DLL 파일, 디스크 테이블, 디렉토리 구조, 사용자 데이터 파일, 레지스트리, 필요한 커널 모듈이 포함되며 디스크에 상주하는 모든 것이 Windows에 의해 캐시됩니다.

캐시의 크기는 전적으로 동적이며 RAM의 절반 이상으로 확장 될 수 있습니다. 프로그램에 메모리가 필요하므로 Windows는 읽은 블록을 해제합니다. 또한 수정 된 블록을 작성하여 해제 (지연 쓰기) 후보가 될 수 있도록 주기적으로 검사해야하므로 Windows 컴퓨터의 전원 플러그를 뽑는 것이 좋지 않습니다.

Windows가 필요한 모든 객체를 RAM에로드하여 사용자의 필요에 맞게 조정했기 때문에 새로운 호출이 더 빠른 이유입니다.

자세한 정보는 Microsoft 블로그 파일 캐싱 또는 I / O 개념을 참조하십시오 .


첫 번째 부분에 관해서는-나는 이미이 자바 프로그램을 작성했기 때문에 이것에 대해 이미 알고있다.)
Kao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.