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

 
Подсистемы 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 (Virtual DOS Machines, VDM):

  • Виртуальная машина MS-DOS (MS-DOS NTVDM).
  • Виртуальная машина Win 16 (Win 16 NTVDM).
  • Подсистема OS/2.
  • Подсистема POSIX.
  • Подсистема Win32.

Все подсистемы среды являются необязательными, и загружаются только в том случае, когда ее сервисы нужны клиентским приложениям.

Среди защищенных подсистем можно выделить подкласс, называемый подсистемами окружения. Подсистемы окружения реализуют интерфейсы приложений операционной системы (API). Другие типы подсистем, называемые интегральными подсистемами, исполняют необходимые операционной системе задачи. Например, большая часть системы безопасности Windows NT реализована в виде интегральной подсистемы, сетевые серверы также выполнены как интегральные подсистемы.

Наиболее важной подсистемой окружения является Win32 - подсистема, которая обеспечивает доступ для приложений к 32-bit Windows API. Дополнительно эта система обеспечивает графический интерфейс с пользователем и управляет вводом/выводом данных пользователя. Также поддерживаются подсистемы POSIX, OS/2, 16-разрядная Windows и MS DOS.

Среда MS DOS

Приложения Windows NT запускаются как процессы, называемые Виртуальная машина DOS в Windows NT (NT Virtual DOS Machine, NTVDM). NTVDM представляет собой 32-разрядное приложение Windows, имитирующее компьютер с процессором Intel 486, работающий под управлением MS DOS.

Каждое приложение MS DOS запускается в виде отдельного процесса NTVDM, хотя все они по умолчанию называются Ntvdm.exe. Запустить можно неограниченное количество процессов NTVDM. Каждый из таких процессов запускается в собственном адресном пространстве. Благодаря этому приложения защищены друг от друга, а операционная система - от процессов NTVDM.

Когда Windows NT работает на процессоре Intel 486 или более современном, операционной системе доступен режим процессора, называемый виртуальным режимом-86 (Virtual-86 mode). Этот режим допускает прямое исполнение большинства инструкций приложения MS DOS.

Процесс NTVDM, в котором работает приложение MS DOS, состоит из трех нитей: нить приложения, обеспечивающая работу приложения MS-DOS, нить наблюдения (heartbeat thread), эмулирующая прерывания таймера для приложения MS DOS, и нить консоли, которая обеспечивает для приложения консольный ввод/вывод.

На компьютерах Intel 486 приложения с символьным интерфейсом могут работать как в окне, так и на полном экране. Графические приложения могут работать только на полном экране. Если приложение, работающее в окне, изменяет видеорежим, оно автоматически переключается в полноэкранный режим.

16-разрядная среда Windows

16-разрядные приложения Windows также работают как NTVDM. Windows NT 4.0 запускает 16-разрядные приложения Windows как отдельные нити в составе единого процесса NTVDM с разделяемым адресным пространством. В отличие от приложений MS DOS, каждое приложение Windows работает как отдельный процесс NTVDM. Процесс Winl6 NTVDM известен также под названием WOW (Winl6 on Win32).

Winl6 NTVDM представляет собой многопоточный процесс, каждая из нитей которого является отдельным 16-разрядным приложением Windows. Этот процесс является многозадачным, т. е. на многопроцессорных компьютерах могут одновременно выполняться несколько 16-разрядных приложений, являющихся нитями разных процессов. Однако в составе NTVDM одновременно может выполняться только одна нить 16-разрядного приложения Windows, все остальные нити этого процесса NTVDM блокируются. Если нить Winl6 NTVDM вытесняется (прерывается нитью с более высоким приоритетом), микроядро всегда возобновляет выполнение вытесненной нити.

Каждая Winl6 NTVDM содержит две системных нити: нить Wowexec.exe, которая запускает приложения Winl6, и нить наблюдения (heartbeat thread), которая имитирует для приложения прерывания таймера. Кроме того, в процессе NTVDM имеется по нити для каждого 16-разрядного приложения Windows.

Подсистема OS/2

Подсистема OS/2 поддерживает символьные приложения OS/2 1.х на процессорах х86. Приложения, разработанные для OS/2 или MS DOS, всегда будут работать в среде OS/2, если эта подсистема доступна.

Windows NT 4.0 не поддерживает высокопроизводительную файловую систему HPFS, разработанную специально для OS/2 1.х. Начиная с версии 4.0, Windows NT больше не будет поддерживать эту файловую систему.

Подсистема POSIX

Подсистема POSIX в Windows NT разработана для поддержки приложений POSIX. Приложения POSIX требуют определенных функциональных возможностей файловой системы, например, поддержки чувствительных к регистру имен файлов и поддержку файлов с несколькими именами - так называемые жесткие ссылки (hard links). Новая файловая система NTFS поддерживает эти требования POSIX. Любое приложение POSIX, которому требуется доступ к ресурсам файловой системы, должно иметь доступ к разделу NTFS. Приложения POSIX, которым не требуется доступ к ресурсам файловой системы, могут выполняться в любой из поддерживаемых файловых систем.

DirectX

DirectX представляет собой высокопроизводительный прикладной программный интерфейс, который скрывает от приложения характеристики аппаратных средств и операционной системы. DirectX разработан для обеспечения высокоскоростного пользовательского интерфейса реального времени.

Windows NT 4.0 включает в свой состав три компонента DirectX: DirectDraw, DirectSound и DirectPlay. Эти компоненты позволяют запускать игровые и другие приложения, разработанные для DirectX на платформах Windows 95 и Windows NT 4.0 Workstation и Server.

DirectX для Windows NT 4.0 поддерживает точки входа приложений, вызываемых программами, разработанными для DirectX в Windows 95. В Windows NT функции реализованы несколько иначе, чем в Windows 95, но они позволяют запускать в Windows NT 4.0 без изменении программы, разработанные для DirectX.

Цель включения DirectX в Windows NT заключалась в обеспечении наилучшей производительности графической подсистемы без компрометации устойчивости системы. В Windows NT функции DirectX никогда не взаимодействуют непосредственно с аппаратурой; все графические функции управляются GDI.