
Атомарность и восстановление ульев реестра
Реестр гарантирует атомарность (atomicity) отдельных действий. Это означает, что любое изменение, выполненное по отношению к параметру реестра (установка, удаление или сохранение), либо работает, либо нет. За счет этого исключается возможность появления поврежденных комбинаций из старых и новых значений. Такое повреждение не произойдет, даже если в процессе внесения изменений в реестр система внезапно остановится вследствие прекращения подачи питания, аппаратного сбоя или проблем с программным обеспечением.
К примеру, если приложение устанавливает значение реестра, и в этот момент происходит остановка системы, то после перезагрузки реестр будет иметь либо прежнее значение, либо новое, но бессмысленная комбинация старого и нового значений не появится никогда. Кроме того, размер и временные данные для ключа, содержащего значение, в который вносились изменения, будут точными, вне зависимости от того, было изменено это значение или нет.
Проблема, связанная с размером реестра
В отличие от Windows NT/2000, в Windows XP было снято ограничение размера реестра. Его программный код был переработан с учетом повышения производительности. В то же время это не отразилось на приложениях, т. к. по-прежнему используется существующий интерфейс программирования реестра (Registry API).
Новая реализация реестра предоставляет два ключевых преимущества:
увеличен допустимый объем реестра (larger registries);
увеличена скорость выполнения запросов.
Таким образом, в Windows XP вы не найдете опции, позволяющей вам установить ограничение на размер реестра (рис. 1.9).
Увеличение
допустимого объема реестра.
Windows XP поддерживает больший объем записей
реестра, по сравнению с предыдущими
версиями ядра, он ограничен лишь доступным
пространством системного диска.
Рис. 1.9. В Windows XP отсутствует опция установки ограничения размера реестра
Ускорение выполнения запросов.. В реестре Windows XP используется усовершенствованный алгоритм размещения новых ячеек, который позволяет сохранять взаимосвязанные ячейки как можно ближе друг к другу, например, на одной странице или на расположенных рядом страницах, снимая тем самым проблему местонахождения и снижая количество страничных ошибок, возникающих при обращении к взаимосвязанным ячейкам. При размещении новых ячеек применяется список освободившихся ячеек и фактор близости (vicinity argument) для того, чтобы гарантировать их размещение в том же месте, где расположен соответствующий улей.
В Windows XP усовершенствован способ управления большими данными со стороны реестра. В версиях, предшествующих Windows XP, если какое-либо малоэффективное приложение, наращивало объем незначительными приращениями, при этом "расточительно" создавался файл реестра. В Windows XP эта проблема решается с помощью большой ячейки (big cell), в которой ячейки размером, превышающим 16 Кбайт, разделяются на цепочки ячеек по 16 Кбайт. Это снижает фрагментацию, при увеличении длин данных до определенного порога.