Структурно Windows NT можно разделить на две части: одна работает в пользовательском режиме (защищенные подсистемы Windows NT ), а другая - в режиме (исполнительная система Windows NT ). Подробно структура Windows NT изображена рис 4.12.
Серверы Windows NT называются защищенными подсистемами (protected subsystems), так как каждый из них – это отдельный процесс, память которого защищена от других процессов системой виртуальной памяти исполнительной системы NT. Так как совместное использование памяти подсистемами не реализуется автоматически, то коммуникации между ними осуществляются путем передачи сообщений. Сплошные линии на рис. 4.12 обозначают пути передачи сообщений между клиентом и сервером или между двумя серверами. Все сообщения проходят через исполнительную систему, но для простоты на рисунке это не показано.
Исполнительная система NT – это «двигатель» ОС, способный поддерживать любое число серверных процессов. Серверы предоставляют исполнительной системе NT пользовательские и программные интерфейсы, а также обеспечивают среды для выполнения приложений разных типов.
Термин «сервер» подразумевает, что каждая защищенная подсистема обеспечивает API, который могут использовать программы. Когда
приложение (или другой сервер ) вызывает некоторую процедуру API, серверу, реализующему данную процедуру, посылается сообщение при помощи средства локального вызова процедур (local procedure call, LРС) – оптимизированного механизма исполнительной системы NT для локальной передачи сообщений. Сервер же посылает ответное сообщение вызывающей программе.
В Windows NT имеется два типа защищенных подсистем: подсистемы среды (environment subsystems) и неотъемлемые подсистемы (integral subsystems). Подсистема среды – это сервер пользовательского режима, реализующий API некоторой ОС. Когда приложение вызывает функцию API, этот вызов доставляется посредством LPC подсистеме среды. Та выполняет вызов и возвращает результаты прикладному процессу, посылая другой LPC.
Самая важная подсистема среды в Windows NT - это подсистема Win32, которая предоставляет прикладным программам API 32-разрядной Windows. Кроме того, подсистема среды Win32 реализует графический интерфейс пользователя Windows NT и управляет всем вводом пользователя и выводом приложений. В Windows NT также имеются подсистемы среды POSIX, OS/2, 16 – разрядной Windows и МS-DOS (две последние не показаны на рис. 4.12). Данные подсистемы предоставляют свои АРI, но используют для получения пользовательского ввода и отображения результатов подсистему Win32.
Другие защищенные подсистемы – неотъемлемые подсистемы – это серверы, выполняющие важные функции ОС. В процессе разработки Windows NT некоторые неотъемлемые подсистемы появлялись и исчезали, но одна присутствовала всегда: подсистема защиты. Подсистема защиты исполняется в пользовательском режиме и регистрирует правила контроля доступа, определенные для локального компьютера. Например, она отслеживает, какие учетные записи пользователей имеют особые привилегии, доступ к каким системным ресурсам подлежит аудиту и должны ли генерироваться сообщения или предупреждения аудита. Кроме того, подсистема защиты ведет базу данных учетных записей пользователей, содержащую идентификаторы пользователей, пароли, группы, к которым отнесен пользователь, и особые привилегии, которыми он обладает. Она также принимает регистрационную информацию пользователя и инициирует аутентификацию подключения пользователя к системе.