Множественные прикладные среды Windows NT
Виктор Олифер,

Защищенные подсистемы взаимодействуют путем передачи
сообщений, используя механизм LPC
LPC - Local Procedure Call - вызов локальных процедур
Цели подсистем окружения:
- Обеспечить несколько программных интерфейсов
- Экранировать базовую ОС от изменений API
- Объединить общие для всех API глобальные данные, уменьшая
избыточность
- Обеспечить возможность включения новых API
- Защита окружений от приложений
Множественные прикладные среды обеспечивают совместимость на ДВОИЧНОМ уровне
Цели:
- возможность выполнять программы, написанные для
других ОС и процессоров
- встроенность средств обеспечения совместимости
в ОС
- приемлемая скорость выполнения приложений
Примеры ОС, содержащих встроенные средства
обеспечения множественных прикладных сред:
- OS/2 2.x
- Workplace OS
- Windows NT
- PowerOpen
- некоторые версии UNIX
Пример различия в системных вызовах:
fork()
DosExecPgm() | |
Цели разработки микроядра Mach
- Обеспечение базовых функций для создания других
операционных систем (например, UNIX)
- Поддержка больших разряженных адресных пространств
- Обеспечение прозрачного доступа к сетевым ресурсам
- Поддержка параллелизма как в системе, так и в
приложениях
- Обеспечение переносимости Mach на различные типы
компьютеров
Абстрактная модель эмуляции UNIX на основе
Mach

Функции микроядра Mach:
- управление процессами,
- управление памятью,
- коммуникации
- функции ввода-вывода
Функции управления файлами, каталогами и другие традиционные
для операционных систем функции выполняются в пользовательском
пространстве эмуляторами различных ОС
Модель API на основе DLL

Обращение к системным сервисам в традиционных ОС
- аппаратное прерывание
- процессор переходит в режим ядра
- выполняется требуемая системная функция
- возврат процессора в пользовательский режим
- выполнение нити с прерванного места
Вызов системной функции (API Win32) в Windows NT
- Динамическая библиотека DLL Win32 обращается
к системному сервису NT с просьбой послать сообщение серверу,
выполняющему требуемую функцию
- Сервис посылает сообщение и ждет ответ
- Сервер получает сообщение, выполняет функцию
и отсылает ответ
- NT-executive выполняет следующую последовательность
действий:
- сохраняет контекст клиентской нити
- выбирает серверную нить для выполнения и загружает
ее контекст
- выполняет функцию API Win32, используя серверную
нить
- сохраняет контекст серверной нити
- загружает контекст клиентской нити и обрабатывает
результаты выполнения функции API
- сохраняет контекст клиентской нити
Оптимизация
- некоторые функции API реализованы внутри библиотеки
заглушек
- некоторые данные Win32 хранятся в адресном пространстве
NT-executive
- запросы приложений на выполнение функций API
объединяются в пакеты