Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Реестр Windows NT. Целостность и восстановление улья в реестре.






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

 

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

Сброс данных

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

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

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

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

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

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

Если в процессе выполнения описанной выше процедуры сброса (между шагами 2 и 4) произойдет остановка системы, то при следующей загрузке улья при запуске системы (исключение составляют ульи профилей, которые загружаются при регистрации в системе) система увидит маркер, оставленный на шаге 2, и продолжит восстановление улья на основании измененных данных, которые содержатся в LOG-файле. Таким образом, если улей не находится в переходном состоянии, то при его загрузке LOG-файлы не используются. Если улей находится в переходном состоянии, он не может быть загружен без соответствующего LOG-файла.

Для улья \system в Windows NT/2000 используется другой процесс сброса, т. к. этот улей является жизненно важным элементом, данные которого считываются при запуске системы. Если улей \System поврежден, то он не может быть восстановлен с помощью описанной выше процедуры.

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

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







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.