Реестр разделен на части — ульи. Они названы так разработчиками по аналогии с ячеистой структурой пчелиного "жилья". Улей — это дискретный набор ключей, подключей и значений, находящийся вверх}' иерархии реестра. Улей поддерживается одиночным файлом и файлом .LOG, находящимися в каталоге %svsteimoot%\system32\config. Ниже перечислены все ульи для компьютера, работающего под управлением Windows NT.
Улей реестра
Имя файла
HKEY_LOCAL_MACHINE\SAM
SAM, SAM.LOG
HKEY_LOCAL_MACHINE\SECURITY
SECURITY, SECUR1TY.LOG
HKEY_LOCAL_MACHINE\SOFTWARE
SOFTWARE, SOFTWARE.LOG
HKEY_LOCAL_MACHINE\SYTEM
SYSTEM, SYSTEM.ALT
HKEY_CURRENT_USER
USER***, USER***.LOG или ADMIN***, ADMIN***.LOG
HKEY_USERS\DEFAULT
DEFAULT, DEFAULT.LOG
Реестр гарантирует целостность индивидуальных действий, т.е. любое одиночное изменение значения для установки, удаления или сохранения бyдeт работать или не работать, даже если система отключается из-за сбоя питания, отказа аппаратных средств или проблем с программным обеспечением. Например, если приложение устанавливает значения для двух элементов (А и Б), возможна одна из следующих ситуаций:
· присвоено новое значение элементу А или элементу Б;
· присвоены новые значения элементам А и Б;
· не сделано никаких изменений.
Благодаря целостности индивидуальных действий исключена ситуация получения разрушенной смеси старых и новых значений для элемента. Например, не будет получена разрушенная смесь старого и нового элемента А. Кроме того, ключ, содержащий элементы А и Б, будет иметь размер, временную метку и другие данные, не противоречащие фактическому состоянию ключа.
Данные записываются в реестр при сбросе данных, который происходит через несколько секунд после изменения данных или когда приложение преднамеренно сбрасывает данные на жесткий диск. Выполняется следующий процесс сброса для всех ульев:
1. Все измененные данные заносятся в файл LOG улья вместе с картой их расположения в улье, а затем выполняется сброс на диск файла LOG. В этот момент принимается, что все измененные данные записаны в файл LOG.
2. Первый сектор файла улья маркируется для указания, что файл находится в переходном состоянии.
3. Измененные данные записываются в файл улья.
4. Файл улья маркируется как завершенный.
При аварийном отказе системы между пунктами 2 и 4 при следующей загрузке улья в процессе запуска (если это не улей профиля, загружаемый при входе в систему) система видит метку', установленную в пункте 2, и продолжает восстановление улья с учетом изменений файла LOG. Таким образом, файлы LOG не используются, если улей не в переходном состоянии. В противном случае улей не может быть загружен без файлов LOG.
Несколько иной процесс заполнения применяется для улья SYSTEM. Этот важный элемент для запуска системы используется слишком рано в процессе запуска, поэтому восстановить его описанным способом нельзя.
Файл SYSTEM.ALT содержит копию данных файла SYSTEM. В процессе заполнения изменения маркируются, записываются и затем отмечаются как выполненные; затем тот же процесс заполнения повторяется для файла SYSTEM.ALT. При сбое питания, отказе аппаратных средств или проблемах с программным обеспечением на любой стадии описываемого процесса один из файлов SYSTEM или SYSTEM.ALT будет содержать правильную информацию.