Типичные функции, которые подсистемы
- Создание и завершение процессов и нитей
- Регистрация и управление взаимоотношениями между
процессами
- Чтение, запись и другие действия с адресными
пространствами процессов - клиентов
- Останов нити клиента, изменение пользовательского
контекста нити, рестарт этой нити
- Захват и обработка исключительных ситуаций (exeptions),
генерируемых клиентскими процессами
Отличия 32-битного API Win32 от 16-битного
Windows API:
- использование 32-битной плоской модели памяти
- расширенные функции по управлению вводом-выводом,
памятью, объектами
- поддержка многонитевости, безопасности
- улучшены функции по управлению графикой и окнами
Преемственность API Win32
- управление окнами и пользовательским интерфейсом
из Windows 3.0
- пользовательский интерфейс Windows NT полностью
совместим с пользовательским интерфейсом Windows 3.1
- графическая часть подсистемы Win32 является
полностью новой
- новое свойство Win32 - безопасность
Подсистема OS/2
- символьно-ориентированные приложения OS/2 1.х
- компьютеры на базе процессоров х86
- запуск из командной строки Windows NT, из Program
Manager или косвенно из приложений OS/2 или Win32
- распознаются по заголовку исполняемого файла
- для загрузки приложения - вызов подсистемы OS/2
- запускается процесс OS/2SRV подсистемы окружения
OS/2
- попытки выполнить сегменты ввода-вывода в кольце
2 завершаются кодом "Общий сбой по защите"
- Объекты Windows NT встраиваются внутрь объектов
OS/2
- Нить получает приоритет и идентификатор, которые
являются допустимыми в OS/2
- Подсистема окружения OS/2 использует возможности
большой памяти Windows NT
Подсистема Posix (Portable Operation System Interface based on UNIX)
- запуск из консольного текстового окна Windows
NT, с помощью File Manager, Program Manager и косвенно из другого
приложения POSIX
- на диске должен находится по крайней мере один
раздел NTFS
- Подсистема POSIX непосредственно не поддерживает
печать
- Командный процессор Windows NT поддерживает команды
всех подсистем окружения
Механизм вызова локальных процедур (Local Procedure Call, LPC)
Назначение - прозрачный
вызов процедур одного процесса из другого процесса внутри одной
машины
LPC - локальный вариант RPC
Для прикладного программиста совершенно прозрачен
Системный программист оформляет библиотеку стабов
LPC и библиотеку функций сервера LPC и регистрирует последнюю
в ядре
Механизм передачи параметров и результаты в LPC -
передача асинхронных сообщений через общую память
Передача сообщений при реализации LPC
Передача сообщений через коммуникационные
порты
Коммуникационные порты
- очереди фиксированной длины в виртуальном адресном пространстве
ядра.
Передача сообщений через разделяемую секцию памяти
- Клиентский стаб сам решает, какого размера сообщения понадобятся
для передачи параметров процедуры
- Если потребуется сообщение 256 байт, то стаб создает секцию
памяти и отображает ее (с помощью менеджера виртуальной памяти)
в свое адресное пространство и пространство процесс-сервера