Главная arrow Операционные системы arrow Архитектура Windows NT
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Архитектура Windows NT Печать

Операционная система Windows NT имеет модульную структуру. Это означает, что она состоит из четко разделяемых компонентов, каждый из которых отвечает строго за свои функции. Структурно операционная система Windows NT может быть представлена в виде двух частей (см. рис.): одна часть системы работает в режиме пользователя (user mode), другая часть работает в режиме ядра (kernel mode).

Структура Windows NT

Часть Windows NT, работающая в режиме ядра, называется Executive - исполнительной частью. Она включает ряд компонентов, которые управляют виртуальной памятью, объектами (ресурсами), вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и частично системой безопасности. Эти компоненты взаимодействуют между собой с помощью межмодульной связи. Каждая компонента вызывает другие с помощью набора тщательно специфицированных внутренних процедур. Режим ядра представляет собой привилегированный режим. Код, выполняющийся в режиме ядра, имеет прямой доступ ко всем аппаратным средствам и всей памяти, включая адресные пространства всех процессов режима пользователя.

В состав модуля Executive входят такие компоненты, как Уровень аппаратных абстракций (Hardware Abstraction Level, HAL), ядро системы, а также сервисные модули Windows NT Executive.

Уровень аппаратных абстракций (HAL)

Уровень аппаратных абстракций представляет собой библиотеку работающих в режиме ядра процедур управления аппаратными средствами. HAL располагается на самом низком уровне исполняющей системы Windows NT между аппаратными средствами и остальными частями операционной системы. Этот уровень скрывает (или абстрагирует) особенности аппаратных платформ от верхних уровней операционной системы (такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и механизмы взаимодействия между процессорами). Такое решение позволяет легко переносить Windows NT с одной платформы на другую путем замены только слоя HAL, который устанавливается на этапе инсталляции операционной системы. Процедуры HAL вызываются другими компонентами исполняющей системы Windows NT.

Ядро Windows NT

"Сердцем" операционной системы Windows NT, работающим в тесной взаимосвязи с HAL, является ядро (или микроядро - microkernel). Ядро осуществляет диспетчеризацию нитей, обработку прерываний и исключительных ситуаций. Если компьютер имеет многопроцессорную архитектуру, ядро повышает производительность системы, синхронизируя работу процессоров. В мультипроцессорной конфигурации ядро может одновременно выполняться на всех процессорах.

Роль ядра заключается в том, чтобы обеспечить оптимальную загрузку всех процессоров и наилучшую производительность системы. Для этого ядро осуществляет диспетчеризацию нитей в соответствии с их приоритетами. Фактически, оно принудительным образом проводит политику диспетчеризации, реализуемую модулем Windows NT Executive. Кроме того, ядро вытесняет (preempt) нити с низким приоритетом в пользу более высокоприоритетных нитей. Оно может принудительным образом выполнять переключения контекста (context switches), давая процессору инструкции прекратить выполнение одной задачи и взяться за другую. Таким образом, код, выполняющийся в такой системе, должен быть реентерабельным (reentrant). Под реентерабельностью кода понимается способность прервать выполнение и быть выгруженным, а также возобновить выполнение без потери информации. Кроме того, реентерабельный код может совместно использоваться несколькими различными нитями, выполняющими различные строки одного и того же кода на различных процессорах.

Ядро является единственной неперемещаемой в памяти (nonpageable) и невыгружаемой (nonpreemptible) частью операционной системы. За редким исключением все остальные нити, работающие в Windows NT 4.0, в том числе и в составе модуля Executive, являются выгружаемыми (preemptible) и полностью реентерабельными. За счет этого достигается максимальная эффективность системы.

Наконец, ядро синхронизирует деятельность таких сервисов Windows NT Executive, как Диспетчер ввода/вывода (I/O Manager) и Диспетчер процессов (Process Manager). Кроме того, компоненты Executive используют еще более высокие уровни абстракции, называемые объектами микроядра (microkernel objects), часть из которых экспортируется в пределах интерфейсных вызовов API с пользовательскими приложениями.

Сервисы Windows NT Executive

Модуль Windows NT Executive содержит набор сервисов общего назначения, доступных всем компонентам операционной системы. Каждой группой сервисов управляет один из следующих модулей:

  • Диспетчер объектов. Создает, удаляет и управляет объектами NT Executive - абстрактными типами данных, используемых для представления ресурсов системы.
  • Монитор безопасности. Устанавливает правила защиты на локальном компьютере. Охраняет ресурсы операционной системы, выполняет защиту и регистрацию исполняемых объектов.
  • Диспетчер процессов. Создает и завершает, приостанавливает и возобновляет процессы и нити, а также хранит о них информацию.
  • Диспетчер виртуальной памяти. Отображает виртуальные адреса в адресном пространстве процесса на физические страницы памяти компьютера.
  • Подсистема ввода-вывода.
  • Средства вызова локальных процедур.
  • Диспетчер окон. Отвечает за создание экранного интерфейса и за процессы, использующие оконные функции.
  • Интерфейс графических устройств (GDI) - графическое ядро системы. Состоит из функций Win32k.sys, в задачи которых входит отображение графики на мониторе компьютера и ее печать принтерах. Функции GDI выполняют роль посредников между приложениями и драйверами графических устройств типа дисплеев и принтеров.
  • Драйверы графических устройств. Представляют собой динамически подгружаемые библиотеки функций, которые позволяют GDI с такими графическими устройствами вывода, как мониторы, принтеры, факсимильные аппараты.