Исполнительная система (The Executive)
Надо отметить, что в разных источниках понятие исполнительной системы интерпретируется по-разному. Например, в документации DDK исполнительная система – это совокупность компонентов, исполняющихся в привилегированном режиме – режиме ядра, и формирующих законченную ОС за исключением пользовательского интерфейса. В данном случае к компонентам исполнительной системы относятся также само ядро и слой абстрагирования от оборудования (HAL). В других источниках ядро и HAL рассматриваются как отдельные модули. В этой книге решено было следовать именно этому разделению, хотя бы потому, что HAL не предоставляет системных сервисов, к которым могут обращаться защищенные подсистемы.
Подсистемы Исполнительной Системы NT составляют наиболее существенный слой в режиме ядра, и они исполняют большую часть функций, традиционно связанных с операционными системами. В Таблице 1 перечислены подсистемы Исполнительной Системы NT, и рис. 2 показывает их позицию в архитектуре NT. Эти подсистемы имеют разные обязанности и названия, так что Вы могли бы подумать, что они являются различными процессами.
Например, когда программа типа Microsoft Word запрашивает обслуживание операционной системы типа распределения памяти, поток управления передается от программы Word в режим ядра через "родной" интерфейс системных сервисов NT. Тогда обработчик системного сервиса для распределения памяти напрямую вызывает соответствующую функцию Диспетчера Виртуальной Памяти. Запрошенное распределение памяти выполняется в контексте процесса Word, который запросил его, то есть нет никакого переключения контекста к другому системному процессу.
Драйверы Windows NT, включая драйверы устройств, промежуточные драйверы и драйверы файловых систем, после загрузки рассматриваются как часть исполнительной системы, а точнее как часть системы ввода/вывода.
Все компоненты, кроме диспетчера кэша, предоставляют определенное множество системных сервисов, к которым могут обращаться защищенные подсистемы. И каждый компонент исполнительной системы реализует множество внутренних процедур, доступных только компонентам исполнительной системы.
Префиксы в названиях внутренних процедур соответствуют названиям компонентов исполнительной системы, обеспечивающих эти процедуры, например: Ех для функций, реализуемых компонентом Ex (ecutive) Support – исполнительным модулем, Ps – диспетчером процессов, Ob – диспетчером объектов, Iо – диспетчером ввода/ вывода, Mm – диспетчером памяти, Сс – диспетчером кэша, Se – монитором безопасности.
Исполнительная система не исполняется постоянно в собственном процессе, а работает в контексте некоторого существующего процесса, завладевая выполняющимся потоком, когда происходит важное системное событие. Например, когда поток вызывает системный сервис, в результате чего происходит программное прерывание, или когда внешнее устройство генерирует прерывание, ядро получает управление потоком, который выполнялся процессором. Оно выполняет соответствующий системный код для обработки события и затем возвращает управление коду, выполнявшемуся перед прерыванием.
Исполнительный модуль (executive support) – это особый компонент исполнительной системы ОС Windows NT, давший свое имя целой группе модулей операционной системы. Он отвечает за многие разнообразные функции, включая управление очередями (их блокирование), управление резидентной и нерезидентной системной областью памяти, увеличение/уменьшение значения глобальной переменной и др. Этот компонент обеспечивает также системные рабочие потоки, которые драйверы NT, особенно драйверы файловых систем, используют для выполнения необходимой работы.
Таблица 1. Подсистемы Исполнительной Системы NT и их предназначение.
Подсистема исполнительной системы | Предназначение |
---|---|
Диспетчер Объектов (Object Manager) | Управляет ресурсами и реализует глобальное пространство имен |
Монитор Безопасности (Security Reference Monitor) | Реализует модель безопасности NT на основе Идентификаторов Безопасности (SID) и Списков Разграничительного Контроля Доступа (Discretionary Access Control List – DACL) |
Диспетчер Виртуальной Памяти (Virtual Memory Manager) | Определяет адресное пространство процесса и распределяет физическую память |
Диспетчер Ввода/Вывода (I/O Manager) | Служит интерфейсом между прикладными программами и драйверами устройств |
Диспетчер Кэша (Cache Manager) | Реализует глобальный файловый кэш |
Средство Вызова Локальных Процедур (Local Procedure Call (LPC) Facility) | Обеспечивает эффективную межпроцессную коммуникацию |
Диспетчер Конфигурации (Configuration Manager) | Управляет Реестром |
Диспетчер Процессов (Process Structure) | Экспортирует программные интерфейсы (API) процессов и потоков |
Поддержка среды Win32 (Win32 Support) | Реализует Win32-функции обмена сообщениями и рисования (новые для NT 4.0) |
Диспетчер Plug-and-Play (Plug-and-Play Manager) | Уведомляет драйверы устройств о включении или отключении устройства (новые для NT 5.0) |
Диспетчер Электропитания (Power Manager) | Контролирует состояние электропитания компьютера (появился в NT 5.0) |
Исполнительный модуль (Executive Support) | Реализует управление очередями, системной областью памяти, обеспечивает системные рабочие потоки |