адресный база данный
Внутри RegistryWINDOWS 2000MAGAZINE #02/99ЖУРНАЛ СИСТЕМНЫХ АДМИНИСТРАТОРОВ ИРАЗРАБОТЧИКОВВнутри RegistryКак организована адресный база данный управляетсябаза данных важнейшей системнойинформации Windows NT.Марк РусСиновичдоктор философии в областивычислительной техникиУниверситета Карнеги–Меллонаи один из соавторов многихпопулярных утилит для Windows NT,включая NTFSDOS, Filemon, Regmon адресный база данный Recover. База данных системной информацииRegistry служит централизованнымхранилищем конфигурационныхпараметров операционных системWindows NT адресный база данный Windows 2000, адресный база данный также приложенийдля этих платформ. В неезаписываются сведения о различныхнастройках, аппаратнойконфигурации, пользовательскихпредпочтениях. Существуетмножество книг адресный база данный статей,посвященных логике построения Registry.Их авторы описывают, где в этой базеданных находятся значения тех илииных конкретных параметров, каковыих допустимые диапазоны, адресный база данный на чтоони влияют. В то же время ни в одном из этихисточников вы не найдете описанияспособа физического хранения Registryв Windows NT. Другими словами, какимобразом в NT адресный база данный Win2K организованохранение Registry на диске, как эти ОСосуществляют поиск адресный база данный выборкуинформации по запросам приложений,и какие принимаются меры для защитыстоль важной для них базы данных?Из этой статьи вы узнаете, какимобразом Configuration Manager — тоткомпонент ядра операционнойсистемы, который реализует Registry —организует хранение принадлежащихэтой базе данных дисковых файлов,управляет считыванием имодификацией ключей Registry адресный база данный ихзначений из приложений. Кроме того,здесь описаны механизмы,обеспечивающие возможностьвосстановления Registry после сбоя,включая аварию системы в процессевнесения изменений в эту базуданных. Предполагается, чточитатель знаком с логическойорганизацией Registry, понятиямикорневого ключа (root key), подключа (subkey)и значения ключа (value).УльиНа диске Registry хранится не в одномбольшом, адресный база данный в нескольких отдельныхфайлах, называемых «ульями» (hive).Каждый улей содержит однудревовидную структуру Registry,имеющую свой корневой ключ (т. е.вершину дерева). Подключи адресный база данный ихзначения находятся ниже корневогоключа в иерархии. Из сказанногоможно было бы сделать вывод, чтокаждый корневой ключ,представленный в окне редактораRegistry (regedit или regedt32), хранится в NT вотдельном улье, однако это не так.Соответствие между ключами,отображаемыми regedit, адресный база данный содержимымульев не столь очевидно (см. табл. 1).В действительности ни один из этихкорневых ключей не соответствуеткакому-либо одному улью.Соответствие ульев дисковым файлампредставлено в табл. 2. Обратитевнимание на отсутствие расширений.В тех случаях, когда имя файла неуказано, логические корневые ключиявляются объектами без дисковогопредставления. Configuration Manager создаеттакие ключи для объединенияразличных ульев в структуру Registry,которая адресный база данный отображается в окне regedit. Как явствует из табл. 1 адресный база данный 2,некоторые ульи являются временнымии обходятся без соответствующихфайлов. Система создает их каждыйраз при загрузке адресный база данный хранит полностьюв оперативной памяти, то есть ониявляются временными по самой своейприроде. В качестве примера можноназвать улей HKEY_LOCAL_MACHINE\ HARDWARE,содержащий информацию о физическихустройствах адресный база данный зарезервированныхдля использования ими ресурсах.Определение аппаратнойконфигурации адресный база данный выделение ресурсовосуществляются каждый раз призагрузке системы, так что отказ отхранения этой информации нажестком диске представляетсявполне логичным. Таблица 1. Корневые ключиRegeditКлючОписаниеHKEY_CLASSES_ROOTСимвольная ссылка наключ HKEY_LOCAL_MACHINE\SOFTWARE\Classes.HKEY_CURRENT_USERСимвольная ссылка наодин из ключей ветви, идущей отHKEY_USERS. Каждый такой ключпредставляет один из ульевпользовательских параметровHKEY_LOCAL_MACHINEВременный ключ, неимеющий соответствующегофизического улья. Объединяеткорневые ключи различных ульевHKEY_USERSВременный ключ,объединяющий ульи параметровзарегистрированных в данныймомент в системе пользователейHKEY_CURRENT_CONFIGСимвольная ссылка наключ текущего набораконфигурационных параметроваппаратуры, находящийся вветви ключаHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IDConfigDB\HardwareProfilesHKEY_DYN_DATAВременный ключ,служащий для организацииускоренной выборки данных. Неимеет соответствующегофизического ульяСердце Registry — улей HKEY_ LOCAL_MACHINE\SYSTEM.В него входит подключ \CurrentControlSet\Control, содержащий параметры, которыеConfiguration Manager использует приинициализации Registry. (В частности,значение ключаHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelistиспользуется при поиске файловульев.)Таблица 2. Маршрутные именаульев в Registry адресный база данный соответствующиедисковые файлы Маршрутное имяулья в RegistryМаршрутное имяфайла ульяHKEY_LOCAL_MACHINE\SYSTEM\winnt\system32\config\systemHKEY_LOCAL_MACHINE\SAM\winnt\system32\config\samHKEY_LOCAL_MACHINE\SECURITY\winnt\system32\config\securityHKEY_LOCAL_MACHINE\SOFTWARE\winnt\system32\config\softwareHKEY_LOCAL_MACHINE\HARDWAREВременный улейHKEY_LOCAL_MACHINE\SYSTEM\CloneВременный улейHKEY_USERS\UserProfileНаборпользовательских параметров;обычно в каталоге \winnt\profiles\userHKEY_USERS\.DEFAULT\winnt\system32\config\defaultДля соединения ульев в единоедерево Registry используются ключиспециального типа символьнаяссылка (symbolic link). Так, например, ключHKEY_LOCAL_MACHINE\SAM является ссылкой накорневой ключ улья SAM.Структура ульяПодобно тому, как файловаясистема делит пространство дискана кластеры, Configuration Manager логическиделит пространство улья на блоки.По определению, они имеют размер 4096байт (4 Кбайт). При увеличении объемахранимых данных к улью добавляетсянеобходимое число блоков. Первыйблок улья называется базовымблоком. В нем хранится глобальнаяинформация, включая сигнатуру regf,по которой файл идентифицируетсякак файл улья, номер текущей версиив последовательности обновления,временную метку, соответствующуюпоследней операции записи, номерверсии формата улья, контрольнуюсумму, адресный база данный полное имя улья (например,SystemRoot\CONFIG\ SAM). О номере впоследовательности обновления ивременной метке мы еще поговоримпри описании способа записи данныхв улей. В Windows NT 4.0 формат ульяизменился, так что использоватьвзятые от нее ульи с предыдущимиверсиями ОС, включая 3.51, не удастся.Внутри улья Registry данные хранятся в«сотах» (cell). Сот может содержатьключ, значение, дескриптор уровнязащиты, список подключей или списокзначений. Первое поле данных сотасодержит идентификатор типа данных(см. табл. 3). Размер сота указываетсяв его заголовке — поле,предшествующем полям данных. Когдатребуется ввести в улейдополнительный сот, адресный база данный для этогонеобходимо увеличить его размер,система создает «рамку» (bin),имеющую размер нового сота сокруглением вверх до целого числаблоков. Остаточное пространство (отконца сота до конца рамки)рассматривается как свободное иможет быть использовано дляразмещения других сотов. Форматрамки включает сигнатуру hbin адресный база данный поле,содержащее его длину адресный база данный смещениеотносительно начала файла улья. Таблица 3. Типы размещаемыхв сотах данных СотТип данныхСот ключаКлюч Registry. Такой сотназывается также ключевымузлом (key node). Сот ключа содержитсигнатуру (kn для сота ключа адресный база данный klдля символьной ссылки),временную метку последнегообновления, индекс сота спискаподключей данного ключа;индекс сота дескриптора уровнязащиты данного ключа; индекссота строкового ключа,содержащего родовое исобственное имена данногоключа (например, CurrentControlSet)Сот значенияЗначение ключа.Такой сот содержит сигнатуру (kv),идентификатор типа значения (например,REG_DWORD или REG_BINARY), имя значения (например,Boot-Execute), адресный база данный также индекс сота,содержащего данные этогозначенияСот списка подключейСписок индексовсотов, содержащих подключиодного родительского ключаСот списка значенийСписок индексовсотов, содержащих значенияодного родительского ключаСот дескрипторауровня защитыДескриптор уровнязащиты. Такие соты содержатсигнатуру (ks) в заголовке исчетчик числа ссылок (то естьчисла ключевых узлов,использующих данныйдескриптор уровня защиты). Одинсот дескриптора уровня защитыможет использоватьсянесколькими сотами ключейАдминистрирование активныхкомпонентов Registry на уровне рамок, ане отдельных сотов, сокращаетнакладные расходы. В частности,рамки создаются адресный база данный уничтожаютсяреже, чем соты, что позволяетConfiguration Manager более эффективноуправлять распределением памяти.При загрузке улья в памятьсчитываются только активные рамки (те,что содержат соты), адресный база данный пустые —игнорируются. В процесседобавления сотов в улей адресный база данный ихудаления могут образовыватьсяпустые рамки вперемежку сактивными. Это явление аналогичнофрагментации жесткого диска,возникающей в процессе создания иудаления файлов. Смежные пустыерамки укрупняются, как адресный база данный смежныепустые соты. Ссылки из одних сотовна другие, образующие структуруулья, используют в качествекоординат индексы сотов (cell index),представляющие собой смещения отначала файла улья. Например, сот,описывающий некоторый ключ, всегдасодержит ссылку на егородительский ключ. Кроме того, всоставе сота ключа присутствуетссылка на сот, содержащий списокподчиненных ему по структуреподключей. В свою очередь, сот сосписком подключей содержит ссылкина соты этих подключей. Такимобразом, чтобы найти подключнекоторого ключа, первым деломследует найти по хранимой в егосоте ссылке список его подключей.Затем производится переборподключей по списку адресный база данный сравнение ихимен с искомым. Рисунок 1: Примерструктуры улья Registry.Во всех этих сотах, рамках иблоках немудрено запутаться,поэтому приведем простой примерструктуры улья Registry. Взгляните нарис. 1. На нем изображены базовыйблок адресный база данный две рамки: одна пустая, адругая — с несколькими сотами. Вулье два ключа: корневой ключ Root иего подключ Sub Key. Root имеет двазначения: Val1 адресный база данный Val2. Сот спискаподключей содержит ссылку наподключ корневого ключа, адресный база данный сотсписка значений — ссылки на егозначения. Свободное пространствово второй рамке представляет собойпустые соты. На рисунке не показанысоты дескрипторов уровня защитыдля двух ключей, которые такжедолжны присутствовать в реальномулье. На рис. 1 представлен экранутилиты DiskProbe из составаинструментария Microsoft Windows NT Server 4.0Resource Kit при просмотре первой рамки вулье SYSTEM. Обратите внимание насигнатуру рамки hbin справа вверхуэкрана. Ниже вы видите такжесигнатуру nk, используемую дляобозначения сот, содержащих ключи.На диске она хранится в обратнойпоследовательности знаков из-запринятого в архитектуре Intel x86порядка записи байтов. Данный сотсодержит корневой ключ улья SYSTEM,что можно определить по имени System,расположенному еще ниже сигнатурыnk.Configuration Manager упорядочивает спискизначений адресный база данный ключей по алфавиту, такчто становится возможнымиспользовать алгоритм двоичногопоиска: сначала считывается ключ изсередины списка, адресный база данный если его имястоит по алфавиту после искомого,поиск продолжается в первойполовине списка, адресный база данный в противномслучае — во второй. Выбирается ключиз середины выбранной половины, ипроцедура повторяется до тех пор,пока не будет найден нужный ключили не будет определено, что такогоключа нет.Карты сотовЧтобы не обращаться к жесткомудиску всякий раз, когда поступаетзапрос на доступ к Registry, в адресномпространстве ядра ОС хранится покопии каждого улья. В процессеинициализации улья Configuration Managerопределяет размеры его файла,выделяет достаточное пространствов подкачиваемом пуле памяти ядра ОСи считывает в него файл улья.Подкачиваемый пул памяти — этообласть адресного пространстваядра NT, зарезервированная дляиспользования драйверамиустройств адресный база данный самим ядром. Неиспользуемые в данный моментфрагменты этого пула могутвыгружаться в специальный файлподкачки. Экран 1:Исследование рамки улья SYSTEM спомощью утилиты DiskProbeЕсли бы размеры ульев никогда неувеличивались, Configuration Manager мог бывыполнять все операции на этойнаходящейся в памяти версии, так,словно улей не отличается отобычного файла. Расположение сота впамяти можно было бы вычислить,просто добавив к начальному адресуулья его индекс. Именно такпоступает загрузчик Ntldr с ульем SYSTEMна одном из первых этапов загрузкиоперационной системы: Ntldr загружаетулей SYSTEM целиком в память в режиметолько для чтения адресный база данный находит нужныесоты по их смещению адресный база данный начальномуадресу улья. К сожалению, ульирастут с добавлением в них новыхключей адресный база данный значений. Системеприходится выделять в своемподкачиваемом пуле дополнительныеучастки памяти для рамок,содержащих новые ключи адресный база данный значения.Таким образом, данные Registry необязательно размещаются в памятивсе подряд. Для работы с не непрерывнымибуферами, в которых хранятся воперативной памяти ульи, ConfigurationManager использует такую же стратегию,как Memory Manager — для установлениясоответствия адресных пространстввиртуальной адресный база данный физической памяти. Нарис. 2. изображена двухуровневаясхема вычисления адресов,содержащих сот блока адресный база данный рамки по ееиндексу (то есть ее смещению отначала улья). Напоминаю, что рамкаможет состоять из одного или болееблоков, адресный база данный наращивание ульевосуществляется целыми рамками, такчто рамка всегда размещается внепрерывном буфере в памяти адресный база данный всеблоки одной рамки оказываютсяразмещены в памяти подряд.Рисунок 2: Схемаиспользования индекса сотаConfiguration Manager использует в схемеустановления соответствияизмененный индекс сота, состоящийиз трех логических полей, — подобнотому, как Memory Manager делит на полявиртуальный адрес. Первое из этихполей NT интерпретирует как номерэлемента каталога карт сот улья.Всего элементов в ней 1024, адресный база данный каждыйпредставляет собой ссылку на картусотов — таблицу из 512 элементов.Второе поле индекса сота — номерэлемента карты сот, содержащегоадреса рамки адресный база данный блока сота. Наконец,последнее поле индекса являетсясмещением сота от начала блока. Впроцессе инициализации ульяConfiguration Manager динамически создаеткарты сот в таком количестве, чтобыобщее число элементов в них было неменьше числа блоков в улье, адресный база данный затем,при изменении размеров улья,добавляет или удаляет карты по меренадобности. Пространство имен Registry адресный база данный работа снимConfiguration Manager определяет типобъекта ключевой объект (key object),используемый для интеграциипространства имен Registry с общимпространством имен ядра ОС. Такойобъект с именем REGISTRYприсоединяется к корнюпространства имен NT адресный база данный служит точкойвхода в пространство имен Registry.Утилита Regedit отображает именаключей в форме HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet, но подсистема Win32преобразует их в свое пространствоимен (в данном примере:\Registry\MACHINE\SYSTEM\ CurrentControlSet). Встретивключевой объект с именем Registry впроцессе синтаксического разбораимени, NT Object Manager передает егоConfiguration Manager для дальнейшегоанализа по внутренним деревьямимен ульев.Прежде чем переходить к описаниюпотока управления в ходеосуществления типичной операции сRegistry, я бы хотел еще поговорить оключевых объектах адресный база данный блокахуправляющих параметров ключа (keycontrol block). Когда приложениеобращается с запросом на открытиеили создание ключа Registry, ConfigurationManager передает ему дескрипторключевого объекта, размещенногоConfiguration Manager в памяти с помощью ObjectManager. Сервисы Object Manager даютвозможность пользоватьсяпреимуществами его механизмовобеспечения безопасности адресный база данный учетачисла активных ссылок на объект.Кроме того, Configuration Manager создаетдля каждого открытого ключа Registryблок управляющих параметров, вчисло которых входят полное имяключа с путем, индекс соты ключа ифлажок, определяющий, следует лиConfiguration Manager удалить этот сот послезакрытия последнего указывающегона ключ дескриптора. NT хранит всеблоки управляющих параметров ввиде двоичного дерева,упорядоченного по именам ключей поалфавиту, что ускоряет процедурупоиска по имени ключа. Ключевойобъект содержит указатель на блокуправляющих параметров ключа. Покаждому запросу приложения надоступ к определенному ключусоздается новый ключевой объект, новсе они указывают на один блокуправляющих параметров. Поток управления при открытииприложением существующего ключаRegistry начинается с обращения кфункции интерфейса прикладногопрограммирования Registry API, которойпередается в качестве параметраимя ключа адресный база данный которая запускаетмеханизм синтаксического разбораимен Object Manager. Обнаружив в имениключевой объект Registry, Object Managerпередает его Configuration Manager длядальнейшей обработки. Configuration Managerиспользует хранимые в оперативнойпамяти структуры данных улья дляпоиска ключа с указанным именем.При обнаружении сота с подходящимсодержимым Configuration Manager производитпоиск по дереву блоков управляющихпараметров, адресный база данный если данный ключ ужеоткрыт (тем же или другимприложением), увеличивает счетчикссылок; если же нет — создает новыйблок управляющих параметров ипомещает его в дерево. Затем ConfigurationManager выделяет ключевой объект,инициализирует его ссылкой на блокуправляющих параметров ивозвращает управление Object Manager. ObjectManager, в свою очередь, возвращаетприложению дескриптор. При поступлении от приложениязапроса на создание нового ключаRegistry работа идет следующим образом.Configuration Manager отыскивает сот ключа,который станет для создаваемогоключа родительским. Затемпроводится поиск свободного сотадостаточно большого размера. Еслитакового не окажется, Configuration Managerсоздает новую рамку адресный база данный новый сотвнутри нее. (Оставшеесяпространство рамки включается всписок свободных сотов.) Затем сотзаполняется соответствующейинформацией — такой как имя ключа,— адресный база данный Configuration Manager заносит ее в списокподключей родительского ключа (находящийсяв своем отдельном соте). Наконец, всоответствующее место сота новогоключа записывается индекс сота егородительского ключа.Configuration Manager использует счетчикссылок в блоке управляющихпараметров для определения момента,когда этот блок можно будет удалить.После освобождения всехдескрипторов ключа, которомупринадлежит блок управляющихпараметров, счетчик ссылококазывается равен нулю, что ислужит признаком того, что блокбольше не нужен. Если к этомумоменту флажок удаленияоказывается взведен (в результатетого, что некоторое приложениеобратилось к функции удаленияключа), Configuration Manager удаляет из ульяи сам ключ.Надежное хранениеЧтобы гарантировать возможностьвосстановления в случае аварии,каждый хранимый на диске улей Registryимеет помимо основной еще адресный база данный вторуюкопию (log hive) — в файле с расширением.log. Заглянув в каталог \winnt\system32\config,вы увидите там файлы system.log, sam.log инекоторые другие с тем жерасширением. При инициализацииулья Configuration Manager создает битовыймассив, каждый бит которогосоответствует одному 512-байтовомусектору (sector) улья. Он называетсямассивом «грязных» секторов,поскольку если бит равен единице,это означает, что соответствующийсектор улья был модифицирован впамяти, адресный база данный его необходимо записать вдисковую копию улья. (Если же битравен 0, соответствующий сектор впамяти идентичен дисковому.)В случае выполнения некоторыхопераций (вроде создания новогоключа) или внесения изменений всуществующий ключ Configuration Managerпомечает измененные сектора улья вмассиве «грязных» секторов, адресный база данный затемназначает время отложеннойоперации записи, или синхронизациикопий улья (hive sync). Системный потокотложенной записи просыпаетсячерез 5 секунд после получениязапроса на синхронизацию исбрасывает «грязные» сектора всехульев на диск. Таким образомодномоментно фиксируются всеизменения, произведенные в Registry современи поступления запроса насинхронизацию копий ульев адресный база данный доначала осуществления этой операции.Очередная синхронизацияпроизводится не раньше чем через 5секунд после предыдущей.Если бы операция отложеннойзаписи просто сбрасывала все «грязные»сектора в файл улья, то в случаеаварии системы во время еевыполнения этот файл оказывался быповрежденным адресный база данный не подлежал бывосстановлению. Во избежание такойнеприятности сначала массив «грязных»секторов адресный база данный сами эти секторасбрасываются в журнальный файл (.log)улья, размеры которого принеобходимости могут быть увеличены.Затем увеличивается номер впоследовательности обновления вбазовом блоке журнальный файл, итолько после этого грязные секторазаписываются в основной файл улья.В заключение всей работыувеличивается номер впоследовательности обновления адресный база данный вбазовом блоке основного файла улья.Таким образом, если во времясинхронизации произойдет авария,при последующей перезагрузкеConfiguration Manager обнаружит несовпадениеномеров последовательностиобновления в базовых блокахосновной адресный база данный резервной копий улья изавершит синхронизацию сиспользованием журнального файла.В результате не только дисковаякопия улья окажется полностьюкорректна, но адресный база данный никакие изпоследних изменений не будутпотеряны.Для улья SYSTEM как наиболее важногопредусмотрена еще одна,дополнительная степень защиты.Заглянув в каталог \winnt\system32\ config, выувидите там целых три файла сименем System: System, System.log адресный база данный System.Alt.Configuration Manager хранит в файле System.Altпассивное зеркало улья SYSTEM, котороеобновляется в процессесинхронизации точно так же, как егоосновная дисковая копия. Если впроцессе загрузки обнаружится, чтоосновная копия улья SYSTEM неисправна,Configuration Manager попытаетсяиспользовать альтернативную.Оптимизации Registry Configuration Manager использует несколькодостойных упоминания приемов,оптимизирующих его работу с точкизрения производительности. Во-первых,практически каждый ключ Registryсвязан с дескриптором уровнязащиты, используемым дляограничения доступа к нему.Снабжать каждый ключ отдельнойкопией такого дескриптора было бынеэффективно, поскольку нередкотребования безопасности бываютодинаковыми в отношении целыхветвей дерева ключей Registry. Приназначении ключу дескрипторауровня защиты Configuration Manager первымделом проверяет соответствующиедескрипторы родительского ключа идругих его подключей. Еслиобнаруживается совпадение, ConfigurationManager просто устанавливает ссылку изсота нового ключа на общийдескриптор, адресный база данный счетчик ссылокдескриптора увеличивает на единицу(значение этого счетчика говорит отом, сколько ключей используютдескриптор). Кроме того, Configuration Managerоптимизирует способ хранения вулье имен ключей адресный база данный значений. ХотяRegistry полностью поддерживаеткодировку Unicode, имена, содержащиетолько символы ASCII, хранятся в этойболее компактной кодировке. Присчитывании имени (например, впроцессе поиска) выполняетсяпреобразование из ASCII в Unicode.Хранение имен в коде ASCII можетобеспечивать значительноесокращение размеров улья.Наконец, со временем происходитфрагментация ульев Registry. Так, улей,представленный на рис. 1,фрагментирован, поскольку содержитпустое пространство. Configuration Managerникогда не предпринимает попытокуплотнить улей, но в NT есть механизм,позволяющий выполнить эту операцию.Функция RegSaveKey интерфейсаприкладного программирования Win32 (онаиспользуется утилитой созданиядиска аварийного восстановленияEmergency Repair Disk, ERD) создает резервнуюкопию улья Registry в отдельном файле.Информация переносится в резервныйфайл без пробелов, то естьфактически осуществляется егоуплотнение. Для замены действующейкопии улья резервной используетсяфункция RegReplaceKey API-интерфейса Win32,либо другие функции Win32,используемые процедуройвосстановления системы с ERD.Завершение экскурсииВ третьей бета-версии Win2K ниConfiguration Manager, ни способ работы сульями Registry в памяти адресный база данный на диске непретерпели существенных изменений.Можно даже загрузить с помощьюфункции Load Hive редактора regedt32 улей,взятый от Win2K, в NT 4.0. В то же время вновой версии ОС появился рядоптимизаций, существенносокращающих расход памяти иповышающих скорость работы. Во-первых,в Win2K блоки управляющих параметровключей содержат только собственноимена ключей, без полных путей доних. Например, блок, относящийся кключу \Registry\System\ Control, будетсодержать имя Control. Дальнейшаяоптимизация расхода памятидостигается отделением от блокауправляющих параметров блока имениключа. Для ключей с одинаковымиименами создается по блокууправляющих параметров на каждый,но лишь один на всех блок имениключа. Для повышения скоростипоиска Configuration Manager ведет хэш-таблицуимен ключей, для которых созданыблоки управляющих параметров.Вторая оптимизация состоит в том,что Configuration Manager используетподдерживаемый Win2K кэш в форме хэш-таблицыCache Table для хранения тех блоковуправляющих параметров, обращаютсяк которым чаще всего. При обработкеобращения к блоку управляющихпараметров Configuration Manager первымделом проводит поиск в Cache Table.И наконец, еще один кэш Delayed Close Tableиспользуется для хранения недавнозакрытых приложениями блоковуправляющих параметров. ConfigurationManager обычно освобождает такие блоки,но в Win2K они сохраняются в Delayed CloseTable на случай, если приложениепопытается повторно открытьнедавно закрытый блок. Еслисвободных мест нет, для добавленияочередного закрытого блока сначалаудаляется блок, находящийся втаблице дольше всех. разделы
рассылка база данный
доставка хим. реагент
штукатурка фасадный
кристофер брэнд
этнический психология
мужчина выходной
доставка санкт
ваза 2112
этикетировочные машина
купля производственный комплекс
прерывание беременность
телематические служба
нард скачать
перегородка сантехкабин
магнитный доска
ваза 2110
эмжс
купить видеокарту
шелкография
резка
съемный зубной протез
иномарка
электромонтажный стол
корпоративный обслуживание
акриловый вкладыш
жила кострома
стопный пластырь
ubiquam
иномарка
стоматологический услуга
пвс
пвс
красный площадь собор
билет хоккей
флаг заказ
факультет психология
набор гинекологический
дулевский фарфор
система видеоконференция
трехмерный презентация
купить ниппель перех
китайский махровый
факультет психология
волосовский доломит
масло форма
перегородка сантехкабин
цвет гармония
isdn видеоконференция
слимент лифт
теплогенераторы master
вакуумный упаковочный
фейрверк праздник
цвет город
асбест
inerta краска
консультирование организация
диагностический стенд
банковский сейфовые ячейка
циклон сцн-40
персонализация карта
обзвон
сборщик долг
гайковерт электрический
тренировка память
купить 6131
брусок алмазный
ваза 2111
северный корона
выделенка
покрышка бриджстоун
автоматический резка
автоматический отправка писем outlook
охота пиранья
ичп пбоюл
время ярославль
контейнерный автозаправка
цвет камуфлир
рак щитовидный железа
значок медаль
tognana фарфор
позитивный психология
фризер
macintosh
longines
купить элеваторный узел
перевод испанский
магнитно-маркерные доска
бестраншейный облицовка
адресный база данный