КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Карты сотовУльи На диске Registry хранится не в одном большом, а в нескольких отдельных файлах, называемых «ульями» (hive). Каждый улей содержит одну древовидную структуру Registry, имеющую свой корневой ключ (т. е. вершину дерева). Подключи и их значения находятся ниже корневого ключа в иерархии. Из сказанного можно было бы сделать вывод, что каждый корневой ключ, представленный в окне редактора Registry (regedit или regedt32), хранится в NT в отдельном улье, однако это не так. Соответствие между ключами, отображаемыми regedt32, и содержимым ульев не столь очевидно (см. табл. 1). В действительности ни один из этих корневых ключей не соответствует какому-либо одному улью. Соответствие ульев дисковым файлам представлено в табл. 2. Обратите внимание на отсутствие расширений. В тех случаях, когда имя файла не указано, логические корневые ключи являются объектами без дискового представления. Configuration Manager создает такие ключи для объединения различных ульев в структуру Registry, которая и отображается в окне regedt32. Как явствует из табл. 1 и 2, некоторые ульи являются временными и обходятся без соответствующих файлов. Система создает их каждый раз при загрузке и хранит полностью в оперативной памяти, то есть они являются временными по самой своей природе. В качестве примера можно назвать улей HKEY_LOCAL_MACHINE\ HARDWARE, содержащий информацию о физических устройствах и зарезервированных для использования ими ресурсах. Определение аппаратной конфигурации и выделение ресурсов осуществляются каждый раз при загрузке системы, так что отказ от хранения этой информации на жестком диске представляется вполне логичным.
Сердце Registry — улей HKEY_ LOCAL_MACHINE\SYSTEM. В него входит подключ \CurrentControlSet\ Control, содержащий параметры, которые Configuration Manager использует при инициализации Registry. (В частности, значение ключа HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \hivelist используется при поиске файлов ульев.)
Для соединения ульев в единое дерево Registry используются ключи специального типа символьная ссылка (symbolic link). Так, например, ключ HKEY_LOCAL_MACHINE\SAM является ссылкой на корневой ключ улья SAM. Чтобы не обращаться к жесткому диску всякий раз, когда поступает запрос на доступ к Registry, в адресном пространстве ядра ОС хранится по копии каждого улья. В процессе инициализации улья Configuration Manager определяет размеры его файла, выделяет достаточное пространство в подкачиваемом пуле памяти ядра ОС и считывает в него файл улья. Подкачиваемый пул памяти — это область адресного пространства ядра NT, зарезервированная для использования драйверами устройств и самим ядром. Не используемые в данный момент фрагменты этого пула могут выгружаться в специальный файл подкачки.
Если бы размеры ульев никогда не увеличивались, Configuration Manager мог бы выполнять все операции на этой находящейся в памяти версии, так, словно улей не отличается от обычного файла. Расположение сота в памяти можно было бы вычислить, просто добавив к начальному адресу улья его индекс. Именно так поступает загрузчик Ntldr с ульем SYSTEM на одном из первых этапов загрузки операционной системы: Ntldr загружает улей SYSTEM целиком в память в режиме только для чтения и находит нужные соты по их смещению и начальному адресу улья. К сожалению, ульи растут с добавлением в них новых ключей и значений. Системе приходится выделять в своем подкачиваемом пуле дополнительные участки памяти для рамок, содержащих новые ключи и значения. Таким образом, данные Registry не обязательно размещаются в памяти все подряд. Для работы с не непрерывными буферами, в которых хранятся в оперативной памяти ульи, Configuration Manager использует такую же стратегию, как Memory Manager — для установления соответствия адресных пространств виртуальной и физической памяти. На рис. 2. изображена двухуровневая схема вычисления адресов, содержащих сот блока и рамки по ее индексу (то есть ее смещению от начала улья). Напоминаю, что рамка может состоять из одного или более блоков, а наращивание ульев осуществляется целыми рамками, так что рамка всегда размещается в непрерывном буфере в памяти и все блоки одной рамки оказываются размещены в памяти подряд.
Дата добавления: 2014-12-07; Просмотров: 438; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |