한희수 2025. 2. 23. 19:34

프리패치는 윈도우 시스템에서 응용 프로그램 실행 속도를 높이기 위해 자주 사용하는 파일들을 미리 로드하는 기술이다. 이 기능은 프로그램이 처음 실행될 때 필요한 리소스를 메모리에 미리 로딩하여, 두 번째 실행부터는 빠르게 실행될 수 있도록 돕는다. 그러나 시스템 메모리의 용량을 초과하게 되면, 프리패치된 데이터는 페이징 파일로 이동한다. 이 경우, 프로그램이 다시 실행될 때 해당 데이터는 페이징 파일에서 다시 메모리로 로드되어야 하므로, 파일을 다시 읽는 과정에서 속도 저하가 발생할 수 있다.

 

이러한 문제를 해결하기 위해 슈퍼패치(Superfetch) 기술이 도입되었다. 슈퍼패치는 Windows Vista부터 적용되었으며, 사용자가 프로그램을 사용하는 패턴을 분석하고 추적하여 자주 사용되는 프로그램을 식별한다. 슈퍼패치는 사용 빈도가 높은 프로그램의 프리패치 데이터를 페이징 파일에서 다시 메모리로 로딩하여, 응용 프로그램 실행 시 불필요한 페이징을 방지하고 속도를 개선한다.

 

슈퍼패치를 구동하기 위해서는 아래의 2가지를 설정해야 한다.

1) 서비스(Services.msc)에 Superfetch 서비스를 구동시킨다.

 

더보기

Windows 10에서 Superfetch 서비스는 더 이상 "Superfetch"라는 이름으로 표시되지 않고, 대신 "SysMain"이라는 이름으로 변경되었다.

 

2) 레지스트리에 Superfetch를 활성화시켜야 한다.

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
더보기

Windows 10에서는 EnableSuperfetch라는 레지스트리 키가 기본적으로 SysMain 서비스에 대한 설정으로 변경되었습니다. 따라서 EnableSuperfetch가 없을 수 있다.

 

슈퍼패치 파일은 프리패치와 같은 경로에 저장되며 파일명은 Ag로 시작하고 확장자는 '.db' 이며 압축과 비압축 파일이 있다.

 

슈퍼패치 분석을 통해 메모리에 매핑된 파일 목록, 실행 프로세스명, 프로그램 경로, 실행 횟수, 프로그램 실행 시각 등을 알 수 있다.

 

- 압축 파일 구조 분석

범위(Hex) 크기(Byte) 이름 설명
0x00 - 0x03 4 Signature 0x4D414D "MAM"
0x04 - 0x07 4 Total Size of decompressed data  
0x08 - 0x0F 8 Checksum  
0x10 - 0x-- 가변적 Compressed Data  

 

- 비압축 파일(TRX) 구조 분석

 

범위(Hex) 크기(Byte) 이름 설명
0x00 - 0x03 4 Magic Number  
0x04 - 0x07 4 Total Size  
0x08 - 0x0B 4 Header Size  
0x0C - 0x0F 4 File Type Parameters  
0x10 - 0x13 4 Param 1  
0x14 - 0x17 4 Param 2  
0x18 - 0x1B 4 Param 3  
0x1C - 0x1F 4 Param 4  
0x20 - 0x23 4 Param 5  
0x24 - 0x27 4 Param 6  
0x28 - 0x33 12 Param 7  
0x34 - 0x37 4 Count of Volumes  
0x38 - 0x3B 4 Count of paths registered  
0x3C - 0x3F 4 Check condition verified Check condition verified after the lecture process to ensure integrity of the data
0x40 - 0x43 4 Condition Condition to do specific lecture operations