Исполнительная подсистема
Работает с вводом\выводом, менеджером объектов, управлением над процессами и безопасностью. Неофициально делится на несколько подсистем — менеджер кэша, менеджер конфигурации, менеджер ввода\вывода, вызов локальных процедур, менеджер памяти, монитор безопасности. Системные службы, то есть системные вызовы, реализованы на этом уровне, за исключением нескольких вызовов, которые вызывают непосредственно ядро для большей производительности. В данном контексте термин «служба» относится к вызываемым подпрограммам, или набору вызываемых подпрограмм. Они отличаются от служб, выполняемых в режиме пользователя, которые в какой-то мере являются аналогом демонов в UNIX- подобных системах.
Менеджер объектов
Это исполнительная подсистема, к которой обращаются все остальные модули исполнительной подсистемы, в частности системные вызовы, когда им необходимо получить доступ к ресурсам Windows NT. Менеджер объектов служит для уменьшения дублирования объектов, что может привести к ошибкам в работе системы. Для менеджера объектов каждый ресурс системы является объектом — будь то физический ресурс типа периферийного устройства, файловой системы, или логический ресурс — файл и др. Каждый объект имеет свою структуру, или тип объекта.
Создание объекта делится на две стадии — создание и вставка. Создание — создается пустой объект и резервируются необходимые ресурсы, например имя в пространстве имен. Если создание пустого объекта произошло успешно, то подсистема, ответственная за создание объекта заполняет его. Если инициализация успешна, то подсистема заставляет менеджер объектов произвести вставку объекта — то есть сделать его доступным по своему имени или дескриптору.
Подсистемы ОС Windows NT
Операционная система Windows NT разработана таким образом, чтобы обеспечивать прозрачную работу приложений различных типов под управлением одной и той же графической оболочки. Под управлением Windows NT можно запускать приложения, написанные для различных операционных систем, с использованием соответствующих API, включая MS DOS, OS/2, Windows 3-х, POSIX и Win32.
Обеспечение поддержки такого множества приложений и API достигается в Windows NT за счет использования подсистем среды (environment subsystems). Подсистемы среды представляют собой процессы Windows NT, эмулирующие среды разнообразных операционных систем. Эти подсистемы среды базируются на основе сервисов модуля Executive, используя которые они строят такие среды, которые необходимы поддерживаемым ими клиентским приложениям.
Защищенные подсистемы Windows NT работают в пользовательском режиме и создаются Windows NT во время загрузки операционной системы. Сразу после создания они начинают бесконечный цикл своего выполнения, отвечая на сообщения, поступающие к ним от прикладных процессов и других подсистем. Каждая подсистема работает как отдельный процесс режима пользователя, причем каждая подсистема защищена от ошибок в других подсистемах: сбой в одной из них не приведет к блокировке других подсистем или модуля Executive. Для запуска приложений также используются процессы режима пользователя, поэтому они не могут повлиять на работу подсистем или модуля Executive.
Подсистемы связываются между собой путем передачи сообщений. Когда, например, пользовательское приложение вызывает какую-нибудь API-процедуру, подсистема окружения, обеспечивающая эту процедуру, получает сообщение и выполняет ее либо обращаясь к ядру, либо посылая сообщение другой подсистеме. После завершения процедуры подсистема окружения посылает приложению сообщение, содержащее возвращаемое значение. Посылка сообщений и другая деятельность защищенных подсистем
невидима для пользователя.
Основным средством, скрепляющим все подсистемы Windows NT в единое целое, является механизм вызова локальных процедур (Local Procedure Call, LPC). LPC представляет собой оптимизированный вариант более общего средства - удаленного вызова процедур (RPC), которое используется для связи клиентов и серверов, расположенных на разных машинах сети.
Windows NT предоставляет следующие защищенные подсистемы среды и виртуальные машины DOS (Victual DOS Machines, VDM):
- Виртуальная машина MS-DOS (MS-DOS NTVDM).
- Виртуальная машина Win 16 (Win 16 NTVD).
- Подсистема OS/2
- Подсистема POSIX
- Подсистема Win32
Все подсистемы среды являются необязательными, и загружаются только в том случае, когда ее сервисы нужны клиентским приложениям.
Среди защищенных подсистем можно выделить подкласс, называемый подсистемами окружения. Подсистемы окружения реализуют интерфейсы приложений операционной системы (API). Другие типы подсистем, называемые интегральными подсистемами, исполняют необходимые операционной системе задачи. Например, большая часть системы безопасности Windows NT реализована в виде интегральной подсистемы, сетевые серверы также выполнены как интегральные подсистемы.
Наиболее важной подсистемой окружения является Win32 - подсистема, которая обеспечивает доступ для приложений к 32-bit Windows API. Дополнительно эта система обеспечивает графический интерфейс с пользователем и управляет вводом/выводом данных пользователя. Также поддерживаются подсистемы POSIX, OS/2, 16-разрядная Windows и MS DOS.
Концепция микроядра.
При разработке структуры Windows NT была в значительной степени использована концепция микроядра. В соответствии с этой идеей ОС делится на несколько подсистем-серверов, каждая из которых выполняет отдельный набор сервисных функций - например, сервис памяти, сервис по созданию процессов или сервис по планированию процессов. Каждый сервер выполняется в пользовательском режиме, выполняя циклическую проверку, не появился ли запрос от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Этот запрос перехватывается ядром, которое из-за ограниченности выполняемых функций в случае такой организации называется микроядром. Ядро ОС, работая в привилегированном режиме, доставляет сообщение нужному серверу. Сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения. Микроядро играет роль регулировщика - оно проверяет сообщения, пересылает их между серверами и клиентами и предоставляет доступ к аппаратуре.
Структура ОС на базе микроядра
Использование концепции микроядра способствует переносимости операционных систем, поскольку весь машинно-зависимый код изолирован в микроядре, а значит для переноса системы на новый процессор требуется меньше изменений, и все они логически сгруппированы вместе. Операционная система Windows NT может работать на компьютерах, построенных на базе процессоров Intel, PowerPC, DEC Alpha, MIPS.
Технология микроядер является основой построения множественных прикладных сред, которые обеспечивают совместимость программ, написанных для разных ОС. Абстрагируя интерфейсы прикладных программ от расположенных ниже операционных систем, микроядра позволяют гарантировать, что вложения в прикладные программы не пропадут в течение нескольких лет, даже если будут сменяться операционные системы и процессоры. В среде Windows NT, кроме "родных" 32-битовых приложений, могут выполняться приложения MS-DOS, 16-битовые Windows-приложения, Posix- и OS/2-приложения.
Однако, такая гибкость не дается даром. Пересылка сообщений не так быстра, как обычные вызовы функций, и ее оптимизация является критическим фактором успеха операционной системы на основе микроядра. Поэтому разработчики Windows NT отказались от модели микроядра в ее чистом виде. Кроме собственно микроядра, в привилегированном режиме работает часть Windows NT, называемая executive - исполнительная подсистема. Она включает ряд компонентов, которые управляют виртуальной памятью, объектами, вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и, частично, системой безопасности. Часть Windows NT, работающая в пользовательском режиме состоит из серверов Windows NT, называемых также защищенными подсистемами.
Структура Windows NT
Так как защищенные подсистемы автоматически не могут совместно использовать память, они общаются друг с другом посредством посылки сообщений. Сообщения могут передаваться как между клиентом и сервером, так и между двумя серверами. Все сообщения проходят через executive. Защищенные подсистемы Windows NT работают в пользовательском режиме и создаются Windows NT во время загрузки операционной системы. Сразу после создания они начинают бесконечный цикл своего выполнения, отвечая на сообщения, поступающие к ним от прикладных процессов и других подсистем. Взаимодействие приложений с защищенными подсистемами реализуется через ядро путем обмена сообщениями.
Поддержку защищенных подсистем обеспечивает исполнительная часть Windows NT - executive, которая работает в пространстве ядра и никогда не сбрасывается на диск. Ее составными частями являются:
· Менеджер объектов. Создает, удаляет и управляет объектами NT executive - абстрактными типами данных, используемыми для представления ресурсов системы.
· Монитор безопасности. Устанавливает правила защиты на локальном компьютере, охраняет ресурсы операционной системы, выполняет защиту и регистрацию исполняемых объектов.
· Менеджер процессов. Создает и завершает, приостанавливает и возобновляет процессы и нити, а также хранит о них информацию.
· Менеджер виртуальной памяти.
· Средства локального вызова процедур. Передают сообщения между клиентскими и серверными процессами одного и того же компьютера.
· Подсистема ввода-вывода. Включает в себя следующие компоненты:
1) менеджер ввода-вывода предоставляет средства ввода-вывода, независимые от устройств;
2) файловые системы, NT-драйверы, выполняющие файл-ориентированные запросы на ввод-вывод, транслирующие их в вызовы обычных устройств;
3) сетевой редиректор и сетевой сервер, драйверы файловых систем, передающие удаленные запросы на ввод-вывод на машины сети и получающие запросы от них;
4) драйверы устройств NT executive, низкоуровневые драйверы, которые непосредственно управляют устройством;
5) менеджер кэша, реализующий кэширование диска.
Исполнительная часть в свою очередь основывается на службах нижнего уровня, предоставляемых ядром (его можно назвать и микроядром) NT. В функции ядра входит:
· планирование нитей;
· обработка прерываний и исключительных ситуаций;
· синхронизация процессоров для мультипроцессорных систем;
· восстановление системы после сбоев.
Обратиться к ядру можно только посредством прерывания. Ядро расположено над уровнем аппаратных абстракций (Hardware Abstraction Level - HAL), который концентрирует в одном месте основную часть машинно-зависимых процедур. Располагается HAL между NT executive и аппаратным обеспечением и скрывает от системы такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и механизмы взаимодействия между процессорами. Такое решение позволяет легко переносить Windows NT с одной платформы на другую путем замены только слоя HAL.
Среди всех защищенных подсистем можно выделить так называемые подсистемы окружения - Win32, 16-битный Windows, DOS, OS/2, Posix. Каждая из этих подсистем реализует соответствующий прикладной программный интерфейс. Windows NT использует подсистемы окружения со следующими целями:
· Обеспечить несколько программных интерфейсов (APIs), сохраняя как можно более простым базовый программный код (NT executive).
· Экранировать базовую операционную систему от изменений или расширений в поддерживаемых API.
· Объединить часть глобальных данных, требуемых всем API, и в то же время отделить данные, требуемые одному API от данных, требуемых другим API.
· Защитить окружение каждого API от приложений, а также от окружений других API и защитить базовую операционную систему от различных окружений.
· Позволить операционной системе расширяться в будущем за счет новых API.