Архитектура операционных систем Windows XP и Windows Server 2003 является модульной. Структурно ее можно разделить на две части. Первая часть работает в режиме ядра (kernel mode) и называется исполнительной системой Windows (Windows executive). Компоненты режима ядра обладают следующими функциональными возможностями:
имеют доступ к оборудованию;
имеют прямой доступ ко всем видам памяти компьютера;
не выгружаются на жесткий диск в файл подкачки;
имеют более высокий приоритет, нежели процессы режима пользователя.
Вторая часть работает в так называемом режиме пользователя (user mode) Эту часть составляют защищенные подсистемы ОС. Особенности процессов пользовательского режима:
не имеют прямого доступа к оборудованию, все запросы на использование аппаратных ресурсов должны быть разрешены компонентом режима ядра;
могут быть выгружены из физической памяти в виртуальную на жестком диске;
приоритет процессов данного типа ниже приоритета процессов режима ядра, это предохраняет ОС от снижения производительности или задержек, происходящих по вине приложений.
Защищенные подсистемы.
Защищенные подсистемы - это серверные процессы пользовательского режима, создаваемые ОС во время загрузки. После создания они функционируют постоянно, обрабатывая сообщения от прикладных процессов и других подсистем.
В Windows два типа защищенных подсистем.
1. Подсистемы среды. Под такими подсистемами понимаются программы-серверы пользовательского режима, реализующие программный интерфейс некоторой операционной системы. Главнейшей подсистемой этого типа является Win32. К ее функциям относятся:
предоставление приложениям стандартного программного интерфейса к функциям ОС;
К подсистемам среды относятся также подсистемы POSIX и OS/2.
2. Внутренние подсистемы. К этому типу относятся подсистемы, выполняющие важные функции ОС. Вот основные.
Подсистема безопасности. Осуществляет регистрацию правил контроля доступа, поддержку базы данных учетных записей пользователей, прием регистрационной информации и инициализацию процесса аутентификации пользователей.
Служба рабочей станции. Предоставляет приложениям механизм доступа к сетевым ресурсам, таким как файлы, папки, принтеры и т. п.
Служба сервера. Обслуживает входящие из сети запросы на доступ к ресурсам компьютера, например, к файлам и папкам.
Исполнительная система и уровень абстрагирования от оборудования.
В состав исполнительной системы входят следующие элементы.
Справочный монитор защиты (Security Reference Monitor, SRM). Гарантирует выполнение политики защиты на локальном компьютере. Оберегает ресурсы ОС, обеспечивая защиту объектов и аудит доступа к ним.
Диспетчер процессов (Process Manager). Создает и завершает процессы и потоки. Кроме того, приостанавливает и возобновляет исполнение потоков, хранит и выдает информацию о процессах и потоках NT.
Диспетчер межпроцессного взаимодействия (Interprocess Communication Manager, IPC Manager). Обеспечивает взаимодействие между подсистемами режима пользователя и исполнительной подсистемы.
Диспетчер виртуальной памяти (Virtual memory manager, VMM). Реализует виртуальную память - схему управления памятью, которая предоставляет каждому процессу большое собственное адресное пространство и защищает это пространство от других процессов.
Ядро (Kernel). Реагирует на прерывания и исключения, выполняет межпроцессорную синхронизацию и предоставляет набор элементарных объектов и интерфейсов, используемый остальными частями исполнительной системы для реализации объектов более высокого уровня.
Подсистема ввода/вывода (I/O Subsystem). Состоит из группы компонентов, отвечающих за выполнение ввода/вывода на разнообразные устройства. Подробнее подсистема ввода/вывода рассматривается в следующих разделах.
Диспетчер объектов (Object manager). Создает, поддерживает и уничтожает объекты исполнительной системы Windows - абстрактные типы данных, представляющие системные ресурсы.
Диспетчер электропитания (Advanced Configuration and Power Interface Manager, ACPI-manager). Управляет электропитанием устройств, координирует запросы устройств, связанные с изменением режима электропитания.
Диспетчер Plug and Play (PnP-manager). Обеспечивает распознавание PnP-устройств после процесса загрузки ОС, управляет их драйверами, предоставляет интерфейс средствам пользовательского режима для поиска устройств, их установки и удаления, а также остановки и возобновления их работы.
Диспетчер окон и интерфейс графических устройств (Graphic Device Interface, GDI). Управляет отображением окон, обеспечивает прием ввода от клавиатуры и мыши, распределяя информацию приложениям.
Компоненты исполнительной системы реализованы как независимые от аппаратной платформы модули. Это обеспечивается наличием уровня абстрагирования от оборудования и делает ОС максимально переносимой. Уровень абстрагирования от оборудования (Hardware Abstract Level, HAL). Представляет собой программную прослойку между исполнительной системой Windows и аппаратной платформой, на которой работает ОС. HAL скрывает аппаратно-зависимые детали, такие как интерфейсы ввода/вывода, контроллеры прерываний и механизмы межпроцессорных связей. Вместо того чтобы обращаться к аппаратуре непосредственно, исполнительная система Windows вызывает функции HAL.
Системный реестр Windows.
В операционной системе Windows практически вся конфигурационная информация (приложений, служб, параметров оборудования и т. п.) хранится в системном реестре (System Registry). Эти компоненты реестра наглядно показаны на рисунке.
Содержимое реестров разных компьютеров может сильно различаться. Оно зависит от устройств, служб и программ, установленных на каждом компьютере
Поддеревья включают разделы. Разделы и подразделы, в свою очередь, могут включать подразделы и параметры. Разделы и параметры могут быть двух типов.
Постоянные - разделы и параметры сохраняются на диске и загружаются после перезагрузки компьютера. Большинство данных, хранящихся в реестре - постоянные. *Временные - разделы и параметры присутствуют только в оперативной памяти компьютера и не сохраняются на диске. В основном временными являются разделы реестра, хранящие информацию о текущей конфигурации оборудования.
Реестр представляет собой иерархическую структуру, состоящую из поддеревьев, разделов, подразделов и параметров. Для просмотра и редактирования системного реестра Windows предусмотрены две специализированных программы - regedit и regedt32.
Использование реестра компонентами Windows.
Ниже приведены сведения об использовании системного реестра основными компонентами и приложениями Windows.
Компонент
Использование системного реестра
Программа установки
Программа установки Windows и другие программы установки (приложений и оборудования) добавляют данные в системный реестр. Например, при установке в реестр записываются значения многих настраиваемых параметров приложений по умолчанию. Программы установки также выполняют чтение системного реестра для определения наличия в системе необходимых компонентов
Определитель оборудования
При каждом запуске компьютера, работающего под управлением Windows, определитель оборудования помещает данные аппаратной конфигурации в реестр. Эти данные включают список оборудования, обнаруженного в системе. Диагностика действующего оборудования выполняется программами Ntdetect.com и Ntoskrnl.exe
Ядро Windows
В процессе загрузки ОС ядро Windows извлекает из реестра необходимые данные, например перечень загружаемых драйверов и порядок загрузки. Кроме того, программа Ntoskrnl.exe записывает в реестр собственные данные (например номер версии)
Драйверы устройств
Драйверы устройств заносят в реестр и извлекают из него параметры собственного запуска и настройки обслуживаемого оборудования. Драйвер устройства сообщает об использовании тех или иных системных ресурсов, например прерываний и каналов прямого доступа к памяти, после чего эти сведения записываются в системный реестр. Кроме того, программы и драйверы устройств используют данные реестра для автоматизации установки и настройки программ
Приложения
Приложения используют реестр для хранения глобальных и пользовательских настроек. Например, Microsoft Word хранит в реестре список последних открытых пользователем документов. Многие приложения, являющиеся неотъемлемой частью ОС, например Проводник , также хранят свои настройки в реестре
Организация системного реестра.
Верхний уровень иерархии системного реестра составляют поддеревья. Поддеревья включают разделы. Разделы и подразделы, в свою очередь, могут включать подразделы и параметры.
Поддеревья реестра
Реестр Windows содержит два поддерева: HKEY_LOCAL_MACHINE (хранящее параметры настройки компьютера и общие параметры настройки ПО и ОС) и HKEY_CURRENT_USER (хранящее параметры настройки ПО и ОС текущего пользователя). Однако, чтобы облегчить поиск сведений в реестре, программы редактирования реестра выводят пять поддеревьев, которые перечислены ниже.
Поддерево реестра
Описание
HKEY_LOCAL_MACHINE
Содержит информацию о конфигурации оборудования компьютера, ОС и ПО. Параметры конфигурации ПО являются общими для всех пользователей компьютера
HKEY_CLASSES_ROOT
Содержит информацию о конфигурации COM-компонентов и OLE-объектов. Является ссылкой на разделы HKEY_LOCAL_MACHINE\SOFTWARE\Classes и HKEY_CURRENT_USER\SOFTWARE\Classes . Если какое-либо значение существует в обоих разделах, то значение из поддерева HKEY_CURRENT_USER перекрывает значение из поддерева HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER
Содержит информацию о конфигурации ОС и ПО для пользователя, работающего в системе в данный момент. Является ссылкой на раздел HKEY_USERS\ идентификатор_безопасности_пользователя
HKEY_USERS
Содержит информацию о конфигурации ОС и ПО для пользователей, работающих в системе в данный момент, а также информацию о конфигурации для профиля пользователя по умолчанию
HKEY_CURRENT_CONFIG
Содержит информацию о текущей аппаратной конфигурации компьютера. Является ссылкой на раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current
Поведение поддерева HKEY_CLASSES_ROOT различается в Windows 2000 и более ранних версиях. В Windows 2000 поддерево HKEY_CLASSES_ROOT ссылается на раздел HKEY_CURRENT_USER\SOFTWARE\Classes конкретного пользователя, что позволяет пользователям иметь индивидуально зарегистрированные или настроенные COM-компоненты. Изменения, вносимые в это поддерево, будут фиксироваться в разделе реестра соответствующего пользователя. В предыдущих версиях Windows изменения вносились в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Classes, что позволяло одному пользователю системы изменять параметры компонентов, зарегистрированных другими пользователями.
Кусты и файлы реестра
Куст описывает древовидную структуру непрерывного связанного набора разделов, подразделов и параметров, выходящую из вершины иерархии реестра. Куст хранится на диске в виде отдельного файла и имеет отдельный журнал. Файлы реестра хранятся в папках %systemroot%\system32\Config (системная часть) и %userprofile% (пользовательская часть). Каждый куст реестра представлен на диске в виде двух стандартных файлов, перечисленных в таблице.
Куст реестра
Файлы
HKEY_LOCAL_MACHINE\SAM
sam и sam.log
HKEY_LOCAL_MACHINE\SECURITY
security и security.log
HKEY_LOCAL_MACHINE\SOFTWARE
software и software.log
HKEY_LOCAL_MACHINE\SYSTEM
system и system.log
HKEY_CURRENT_CONFIG
system и system.log
HKEY_CURRENT_USER
ntuser.dat и ntuser.dat.log
HKEY_USERS\.DEFAULT
default и default.log
Параметры
Каждый раздел реестра содержит элементы данных, называемые параметрами. Некоторые параметры хранят сведения, характерные для отдельного пользователя, другие - применимые ко всем пользователям компьютера.
Каждый параметр имеет три характеристики:
имя параметра - используется приложениями для обращения к конкретному параметру;
тип данных параметра - описывает, данные какого типа хранит параметр;
значение параметра - непосредственно данные, которые могут быть получены при обращении к параметру.
Типы данных для параметров реестра, которые на данный момент поддерживает Windows XP, перечислены в таблице.
Тип данных
Описание
REG_BINARY
Данные в двоичном формате. Обычно этот тип используется для хранения больших объемов данных, например параметров оборудования
REG_DWORD
Целое число без знака. На хранение отводится 4 байта, чем определяется минимальное (0) и максимальное (4 294 967 296) хранимое значение. Обычно этот тип используется для хранения числовых величин и значений различных флагов
REG_EXPAND_SZ
Строка с символами подстановки. Используется для хранения строковых значений, при считывании которых осуществляется преобразование символов подстановки. Например, при считывании значения %homedrive%\ Users and Settings\%username% возвращается c:\Documents and Settings\User1
REG_MULTI_SZ
Набор из нескольких строковых значений. Используется для хранения списков строк. В качестве разделителя элементов списка используются символы возврата каретки или другие разделители
REG_SZ
Строка символов. Используется для хранения различных простых неинтерпретируемых строковых значений
REG_FULL_RESOURCE_DESCRIPTOR
Набор массивов данных. Используется для хранения больших бинарных массивов данных. В основном используется для хранения различных параметров аппаратного обеспечения компьютера