프리패치 파일이란?

시스템에서 실행된 응용프로그램을 분석할때 유용한 파일로, Windows 에서만 존재 하는 파일로 응용프로그램이 처음 사용되는 곳을 기준으로 프리패치 파일을 만들고, 응용프로그램을 실행 할때 속도를 향상 시키기 위해서 **Prefetching 기법**을 사용한다.

프리패치 파일에서 좀더 부족한 부분을 추가해서 성능을 향상 시킨 파일이 슈퍼패치 파일인데 슈퍼 패치 파일은 다음 글에서 다룰 예정입니다.

실행 파일이 사용하는 시스템 자원을 특정 파일에 미리 저장을 한것이 프리패치 파일이다. 윈도우 부팅시에 프리패치 파일들을 전부 메모리에 로드를 시키면, 사용자가 응용프로그램을 실행할때 프리 패치파일에 저장된 정보를 메모리에서 실행 해서 실행 속도를 향상시키는 방법이다.

윈도우 XP 이후의 운영체제에서 Prefetch File을 제공 하고 있다.

Prefetch File은 2가지로 분류가 가능합니다.

  1. 부트 프리패칭(Boot Prefetching) : Windows XP, Windows 2003, Windows Vista 2008, Windows 7
  2. 응용 프로그램 프리패칭(Application Prefetching) : Windows XP, Windows Vista, WIndows 7, Windows 8

Prefetch File Name

  1. Boot Prefetch File : NTOSBOOT-B00DFAAD.pf
  2. Application Prefetch File : <FILENAME>-<FILEPATH HASH>.pf

아래의 사진을 확인해 보면 현재 필자가 사용하는 운영체제인 Windows 10에서는 부트 프리패치 파일이 없는 것으로 보인다.

https://blog.kakaocdn.net/dn/cxPq32/btqEjDrRQ0h/xMVsmx6HQxIcaMUreZVtj0/img.png

Windows 10 에서 부트 프리패치 파일이 보이지 않는 이유는 앞에서 이야기 한것 처럼 프리패치 파일의 기능에 있다. 프리패치 파일은 먼저 시스템에서 자원을 파일에 저장한 뒤 메모리에 로드시켜서 사용자가 응용프로그램 실행으로 인해 읽어올때 빠르게 읽어오기 위해서 사용하는데, Windows 10 부터는 빠른 실행(fast startup)이 도입이 되면서 부트 프리패치가 사라지게 되었다.

부트 프리패칭

응용프로그램 프리패칭

프리패치 기능을 활성화 설정

https://blog.kakaocdn.net/dn/b6b6NH/btqEjoV2Jem/dKWA0gmUNJu62wVlPV2PX1/img.png

REG Path : HKLM\\SYSTEM\\ControlSet001\\Control\\Session Manager\\Memory Management\\PrefetchParameters

위의 경로에 존재하는 EnablePrefetcher 의 값에 따라 프리패치 사용 유무가 달라집니다.

레벨 0 : 비활성화 레벨 1 : 응용 프로그램 프리패칭만 사용 레벨 2 : 부트 프리패칭만 사용 레벨 3 : 응용/부트 프리패칭 모두사용(Default)

하지만 Windows 10 에서는 Boot Prefetch 파일이 없기 때문에 위의 레지스트리 값이 큰 의미는 없어 졌다.

windows의 운영체제 번호에 따라서 프리패치의 구조가 달라 집니다. 현재 필자가 사용하는 Windows 10을 기준으로 먼저 설명을 하고 마지막 쯤에 Windows XP나 Windows 7 에서의 Prefetch 파일 구조를 다루겠습니다.