Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БОС(Лабораторные).doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
813 Кб
Скачать
☆

3. Процесс внесения изменения в параметры реестра

3.1. Атомарность и восстановление ульев реестра

Реестр гарантирует атомарность (atomicity) отдельных действий. Это озна­чает, что любое изменение, выполненное по отношению к значению (уста­новка, удаление или сохранение) либо работает, либо нет. За счет этого исключается возможность появления поврежденных комбинаций из старых и новых значений. Такое повреждение не произойдет, даже если в процессе внесения изменений в реестр система внезапно остановится вследствие пре­кращения подачи питания, аппаратного сбоя или проблем с программным обеспечением. К примеру, если приложение устанавливает значение реест­ра, и в этот момент происходит остановка системы, то после перезагрузки значение реестра будет иметь прежнее значение или новое значение, но бессмысленная комбинация старого и нового значений не появится нико­гда. Кроме того, размер и временные данные для ключа, содержащего зна­чение, в которое вносились изменения, будут точными, вне зависимости от того, было изменено это значение или нет.

3.2. Сброс данных (flushing data)

Windows NT 4.0 и Windows 2000 записывают данные в реестр только после того, как происходит сброс (flush). Сброс происходит после того, как изме­ненные данные "постареют" на несколько секунд. Кроме того, сброс может произойти и по прямому запросу приложения, которое намеренно сбросило данные на жесткий диск.

Для всех ульев (кроме \System) система выполняет следующую процедуру сброса:

1. Все измененные данные записываются в файл журнала (LOG-файл) со­ответствующего улья, вместе с указанием их точного местоположения в улье. После этого выполняется сброс, и все измененные данные оказы­ваются записанными в файл журнала.

2. Первый сектор файла улья помечается, что указывает на переходное со­стояние данного файла.

3. Измененные данные записываются в файл улья.

4. После этого файл улья помечается как файл, выполнение транзакции над которым завершилось.

Для улья \System используется другой процесс сброса, т. к. этот улей являет­ся жизненно важным элементом, данные которого считываются при запуске системы. Кроме того, при запуске системы его использование начинается гораздо раньше, чем других ульев, поскольку в его состав входит ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control, содер­жащий параметры, необходимые при инициализации реестра в процессе загрузки. Так, параметры, расположенные в составе ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist, испо­льзуются при поиске остальных файлов ульев реестра. Если улей \System поврежден, то он не может быть восстановлен с помощью описанной выше процедуры.

Файл System.alt содержит копию данных файла System. Во время сброса данных изменения помечаются, записываются и затем помечаются как вы­полненные. После этого точно такой же процесс сброса выполняется для файла System.alt. Если на любой стадии процесса происходит отключение питания, аппаратный или программный сбой, то корректная информация может быть найдена либо в файле System, либо в файле System.alt.

Файл System.alt аналогичен файлу LOG, с тем исключением, что во время загрузки система вместо того, чтобы повторно вносить изменения, зарегист­рированные в LOG-файле, просто переключается на использование файла System.alt. Файл System.alt не нужен, если файл System не находится в пере­ходном состоянии.