Среди системных каталогов Windows есть один, о котором рядовой пользователь обычно узнаёт случайно: кто-то в инструкции предлагает «почистить» его ради ускорения компьютера, а кто-то, наоборот, предупреждает, что трогать его не стоит. Речь о папке C:\Windows\Prefetch, где операционная система складывает небольшие файлы с расширением .pf и служебный файл layout.ini. Эти файлы не являются ни мусором, ни кешем в привычном смысле слова. Это журналы наблюдений, которые Windows ведёт за каждым запускаемым приложением, чтобы со второго, третьего и десятого раза программа открывалась быстрее, а система точнее понимала, какие данные и когда понадобятся. Заодно эта папка оказалась настоящим кладом для специалистов по криминалистической экспертизе: по содержимому .pf-файла можно доказать сам факт запуска конкретной программы, установить, сколько раз и когда она стартовала, даже если сама программа давно удалена. Разберёмся, как устроен механизм изнутри, почему советы эпохи Windows XP давно потеряли смысл и как использовать prefetch корректно при диагностике медленной загрузки системы.
Что происходит при первом запуске программы
Когда исполняемый файл запускается впервые после установки, к работе подключается компонент ядра, который принято называть механизмом предвыборки, или prefetcher. В течение примерно десяти секунд после старта приложения он отслеживает все обращения программы к диску: какие исполняемые файлы читаются, какие динамические библиотеки подгружаются, какие данные и в каком порядке затрагиваются. По завершении наблюдения результат сохраняется в папку Prefetch в виде отдельного .pf-файла.
Имя файла формируется по строгому шаблону. Сначала идёт имя исполняемого модуля заглавными буквами, затем дефис, затем восемь шестнадцатеричных символов - хеш, вычисленный от полного пути, по которому лежит программа. Поэтому две разные копии одного и того же приложения, установленные в разные каталоги, получают два разных .pf-файла, а переименование папки или перенос программы приводит к появлению новой записи. Через этот хеш эксперт может приблизительно восстановить, откуда именно стартовал исполняемый файл, перебрав типовые пути и сравнив результаты хеширования.
Внутри .pf-файла хранится бинарная структура, в которой выделяются несколько важнейших полей. Прежде всего это счётчик запусков: каждый старт программы увеличивает его на единицу. Далее идут метки времени последнего запуска - в современных версиях Windows там может храниться до восьми отметок, что позволяет увидеть историю активности за несколько стартов. Наконец, самая объёмная часть файла - список файлов и каталогов, к которым программа обращалась в первые секунды работы: системные библиотеки, шрифты, конфигурационные файлы, данные профиля. Именно этот список и есть главный рабочий инструмент ускорения, а не побочный журнал.
Формат .pf менялся от версии к версии Windows, заголовок помечен сигнатурой, а тело файла в современных системах сжато, поэтому читать его «глазами» в hex-редакторе бессмысленно - для разбора применяются специализированные утилиты, которые распаковывают содержимое и выводят счётчик, метки времени и полный перечень трассированных путей.
Как предвыборка ускоряет повторные запуски
Смысл технологии раскрывается при втором и последующих запусках. Когда менеджер кеша видит, что для запускаемой программы существует свежий .pf-файл, он не ждёт, пока приложение будет само шаг за шагом запрашивать каждую библиотеку. Вместо этого система сразу выдаёт к диску серию упреждающих чтений, вытягивая в память весь зафиксированный набор модулей упорядоченными, по возможности последовательными операциями.
Для классического жёсткого диска разница колоссальная. Механический накопитель больше всего времени теряет не на чтении данных, а на позиционировании головки: каждый запрос на произвольный блок - это движение каретки и ожидание поворота пластины. Беспорядочный доступ, при котором программа просит сотни мелких блоков из разных областей диска, превращает загрузку в длинную череду дёрганий. Prefetch переупорядочивает этот хаос: чтения выстраиваются в поток, головка двигаприходится к следующему продукту: люди, привыкшие к медленным системам, решительно не желали отказываться от привычек эпохе егда даже купасть в тину. В точке пересечения этих требований и родилась полная спецификация, которую операционная система поддерживает и сегодня.
Отдельной строкой стоит исторический шлейф технологий ReadyBoot и ReadyBoost. ReadyBoot использовал тот же принцип трассировки, но применительно к самой загрузке Windows: система записывала, какие файлы и драйверы нужны на ранних этапах старта, и подготавливала их чтение заранее. ReadyBoost пошёл дальше и предлагал подключить к компьютеру обычную флешку, чтобы мелкие случайные чтения обслуживались с быстрой флеш-памяти, разгружая медленный жёсткий диск. Обе технологии родились из одной идеи предугадывания обращений к диску и обе сегодня выглядят реликтами: на машинах с твердотельными накопителями ReadyBoost операционная система просто не включает, потому что собственный накопитель и так быстрее флешки.
Диагностика медленной загрузки через prefetch
Папка Prefetch может работать и инструментом администратора. Если система или конкретное приложение вдруг начали стартовать заметно медленнее, механизм предвыборки позволяет провести контрольный эксперимент. Временно отключив EnablePrefetcher нулём и перезагрузившись, наблюдатель смотрит на поведение системы: если старт замедлился ещё сильнее, значит, механизм исправен и работал на пользу, а причину тормозов надо искать в другом месте - в перегруженном автозапуске, деградирующем накопителе или конфликте драйверов. Если же разницы нет, а в папке не появляются новые .pf-файлы, велик шанс, что предвыборка оказалась отключена чуждым «оптимизатором» или повреждена.
После эксперимента значение возвращают к тройке, и механизм заново накапливает трассировки сам, без каких-либо команд со стороны пользователя. Проверить кардинальную гипотезу помогает и счётчик запусков внутри .pf-файла: если программа стартует каждый день, а её файл датирован прошлым месяцем, запись по какой-то причине не обновляется, и это само по себе диагностический признак.
Практический вывод для владельца компьютера звучит просто. Папку Prefetch не нужно чистить, механизм не нужно отключать, а само её существование стоит воспринимать как штатную и полезную часть архитектуры Windows. Это скромный, самоограниченный и самоочищающийся механизм, который тридцать лет назад был придуман как ответ на механическую медлительность дисков, а сегодня продолжает служить - теперь уже главным образом журналом, по которому система и эксперты читают историю работы машины.
Почему Prefetch существовала задолго до SSD и что ей стало теперь
Понять папку проще историческим путём. Эпоха HDD научила систему ловить последовательные обращения с предельной жалостью к механике: каждый надоедливый поиск дорожки на диске стоил миллисекунды, и Windows изо всех сил загружала запуски чтениями, созвучными с реальным порядком доступа. Файлы .pf были именно таким послужным списком: они записывали, какие секции каких модулей читаются в начале работы приложения, и на следующий день оказывались в распоряжении чтения почти линейного. С твердотельными накопителями расчёт изменился: никаких дорожек, произвольный доступ дешевый, а главный артефакт входа в Windows ушёл в задачу распараллеливания запуска; предзагрузка из фалового кеша сохранила смысл лишь частично, и SysMain перестраивал приоритеты несколько раз - не из прихоти, а потому что трофей SSD заметил своего противника физически.
Что показывает взгляд инженера
Дисциплина опытной диагностики выделяет Prefetch как наблюдательный журнал, а не как неисправность: программа, запустившаяся впервые, немедленно появляется в файле .pf с типовыми метаданными; ложные интерпретации строятся на предположении, что папка откуда-то наследует ошибки, и лечат её стиранием, от чего польза нулевая, а стоимость первого запуска выше. Классическое правило хорошей обслуживающей теории гласит: не трожь журнал, который отвечает на вопросы, заданные администратором после жалобы сверху. Там, где медленная загрузка становится реальной тоской, используют измерение последствий запуска, а не предзагрузку по навальному заказу - и Prefetch снова выигрывает в качестве истории активации, которая показывает, что именно запускает машину в неверные минуты.
Отношение к домашнему мифу о чистке
Рекомендации поэтапной очистки Prefetch в духе «удали и компьютер полетит» принадлежат к традиции, основанной на прошлом опыте с миллионами записей на FAT и устаревшей логикой управления. Современная NTFS сама поддерживает каталог полным хозяйственным образом, а граница из сотни с небольшим записей гарантирует ограничение размера; ручная зачистка папки заставляет систему проделывать работу заново, что ощущается как единственный подвох на следующем старте - и потом снова забывается о нём до следующего выхода в поле. Удачная пословица практического администратора отражает это по форме: чистка Prefetch-директории - самый дорогой способ не заниматься диагностикой.
Враг месяца: отключение через кусты реестра. Изменение EnablePrefetcher на ноль пришло из тех времён, когда диски искали дешёвый способ избавиться от записи операционной системой; сегодня та же подмена лишь стирает предприятие тонкой оптимизации запуска и замедляет повторное открытие приложений. Кто регулярно носит с собой папку C:\Windows\Prefetch в списке врагов, тот имеет дело с изукрашенным бытовым мифом: механизм не тратит память, не гоняет головку, а полнит единственную ведомость запуска, которая оказывается кстати во время тех самых постоялых сложностей, из-за которых и появляется половина советов о чистке.
Отдельная строка о приватности. Отчётливость Prefetch удобна не только администратору, но и исследователю инцидента: список записей отвечает на вопрос, какие программы действительно стартовали на машине, а время последнего запуска поддерживает рассказ событий против домыслов. С этим связан и спокойный совет частному эксперту: не удаляйте каталог при расследовании, а уже после изъятия образа диска, ибо журнал приложений - единственная его аналогия, которая пишется сама собой без ведома пользователя.
Связь с мониторингом старта. Там, где обращение к файлам prefetch совпадает с инструментарием экрана загрузки вроде Event 100 из журнала диагностики, картина дополняется летописью самих приложений: особисты почти гарантированно выделят новые старты из общего ритма. Вот поэтому в зрелых справочниках Prefetch описывают не как салон красоты, а как та часть Windows, где хранится короткая и точная опись запусков системы за последние дни - каталог, доступный для прочтения тем же администратором, что и прочие документы диагностики.
Технические детали формата .pf. Внутри бинарника лежат не только пути, но и информация о смещениях в исполняемых картах, порядок загрузки DLL, счётчики базовых обращений и часы последнего запуска, сохранённые в формате FILETIME; системный разбор этого формата доступен программно через документированные структуры, и утилиты класса просмотрщиков формируют удобные таблицы, не делая ничего сверх чтения файловой системы. Высокая надёжность этих записей опирается на сторонний факт: Prefetch не является системой безопасности и не стремится противостоять подделке, а является инструментом производительности; поэтому любые выводы делаются с осторожностью, но исторически эти карточки оказываются ценной частью технической криминалистики.
Зачем это знать обычному пользователю. Каждый день пользователь должен уметь отличить диагностический признак от мифа очистки: Prefetch не замедляет систему, не желает быть очищенным и не делает расследование более трудным. Он просто представляет собой хозяйственную заметку системы, которая иногда густеет и вступает в свои права при доказательственной работе, но никогда не приносит вреда эксплуатации. Сохранение папки в исходном виде есть повседневная форма дисциплины администрирования, доступная любому без стресса.