Архитектура Windows NT
Windows NT
В конце 88-го года Microsoft поручила Дэвиду Катлеру (David Cutler) возглавить новый проект в области программного обеспечения: - создать ОС фирмы на основе новой технологии (New Technology - NT). К операционной системе было предъявлено несколько ключевых требований - полностью 32-разрядная ОС, способная работать на многочисленных аппаратных платформах с разной архитектурой.
NT задумывалась как распределенная, клиент - серверная ОС, поддерживающая симметричные многопроцессорные аппаратные платформы. Кроме того, от NT требовалась, совместимость со стандартом POSIX 1003.1, поддержка Unicode для адаптации к требованиям мирового рынка, выполнение большинство существующих 16-разрядных приложений для MS-DOS и Windows 3.х. Разработчики должны были обеспечить переносимость, надежность, совместимость "снизу-вверх", высокую производительность и возможность расширения в соответствии с меняющимися требованиями рынка.
При разработке архитектуры Windows NT была в значительной степени использована концепция микроядра. В соответствии с этой идеей операционная система разделена на несколько подсистем, каждая из которых выполняет отдельный набор сервисных функций - например, сервис памяти, сервис по созданию процессов, или сервис по планированию процессов. Каждый сервер в пользовательском режиме, выполняет цикл проверки запроса от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (или микроядро), работая в привилегированном режиме, доставляет сообщение нужному серверу, затем сервер выполняет операцию, после этого ядро возвращает результаты клиенту с помощью другого сообщения.
Структурно Windows NT может быть представлена в виде двух частей: часть операционной системы, работающая в режиме пользователя, и часть операционной системы, работающая в режиме ядра. На рис.3 представлена структура Windows NT, в которой каждое из приложений обращается к сервисным функциям (серверам) косвенно, через вызовы локальных процедур (LPC), реализованных в диспетчере LPC, являющемся частью NT Executive и работающем в привилегированном режиме. Приложения Win32 исполняются как отдельные многонитевые процессы. Программы Win16 могут запускаться как однонитевые процессы на общей виртуальной машине, или на собственной виртуальной машине, что обеспечивает им большую степень защищенности от других программ Win16. Приложения DOS выполняются как отдельные процессы на отдельных виртуальных DOS-машинах (VDM). Среда машины в рамках VDM конструируется таким образом, чтобы как можно более точно имитировать среду реального режима DOS. Подсистемы OS/2 и POSIX обеспечивают работу соответствующих прикладных программ в текстовом режиме.
Ядро работает в привилегированном режиме и никогда не удаляется из памяти. Обратиться к ядру можно только посредством прерывания. Ядро расположено над уровнем аппаратных абстракций (Hardware Abstraction Level HAL), который концентрирует в одном месте большую часть машинно-зависимых процедур. HAL располагается между NT executive и аппаратным обеспечением и скрывает от системы такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и механизмы взаимодействия между процессорами. Такое решение позволяет легко переносить Windows NT с одной платформы на другую путем замены только слоя HAL.
Поддержку защищенных подсистем обеспечивает исполнительная часть - Windows NT executive, которая работает в пространстве ядра и никогда не сбрасывается на диск. Ее составными частями являются:
Ú Менеджер объектов. Создает, удаляет и управляет объектами NT executive - абстрактными типами данных, используемых для представления ресурсов системы.
Ú Монитор безопасности. Устанавливает правила защиты на локальном компьютере. Охраняет ресурсы операционной системы, выполняет защиту и регистрацию исполняемых объектов.
Ú Менеджер процессов. Создает и завершает, приостанавливает и возобновляет процессы и нити, а также хранит о них информацию.
Ú Менеджер виртуальной памяти.
Ú Подсистема ввода-вывода. Включает в себя следующие компоненты:
менеджер ввода-вывода, предоставляющий средства ввода-вывода, независимые от устройств;
файловые системы - NT-драйверы, выполняющие файл-ориентированные запросы на ввод-вывод и транслирующие их в вызовы обычных устройств;
сетевой редиректор и сетевой сервер - драйверы файловых систем, передающие удаленные запросы на ввод-вывод на машины сети и получающие запросы от них;
драйверы устройств NT executive - низкоуровневые драйверы, которые непосредственно управляют устройством;
менеджер кэша, реализующий кэширование диска.
Исполнительная часть, в свою очередь, основывается на службах нижнего уровня, предоставляемых ядром (его можно назвать и микроядром) NT. В функции ядра входит:
Ú планирование процессов,
Ú обработка прерываний и исключительных ситуаций,
Ú синхронизация процессоров для многопроцессорных систем,
Ú восстановление системы после сбоев.
Рис. 3. Архитектура ОС Windows NT