Эмуляция нескольких ОС
Подсистемы окружения операционной системы NT реализованы как системы типа клиент/сервер.
Как часть процесса компиляции, прикладные программы прикрепляются на этапе компоновки
к API операционной системы, который экспортируют подсистемы окружения ОС NT .
Связывание на этапе компоновки подключает прикладную программу к клиентским DLLs
подсистем окружения, которые осуществляют экспорт API. Например, Win32 программа
- это клиент подсистемы окружения Win32, поэтому она связана с клиентскими DLL
Win32, включая Kerael32.dll, gdi32.dll, и user32.dll. Программа POSIX связана
с клиентской DLL POSIX - psxdll.dll. Цифровые передача
Передача импульсов
Асинхронная и синхронная передача
Клиентские DLL выполняют задачи от имени их серверов, но они выполняются, как
часть клиентского процесса. Как показано рис. 1, в некоторых случаях пользовательская
DLL может полностью реализовывать API без необходимости обращения к помощи сервера;
в других случаях сервер должен помочь. Помощь сервера обычно необходима только
когда должна быть модифицирована общая информация, связанная с подсистемой окружения.
Когда пользовательская DLL требует помощи от сервера, DLL посылает сообщение,
известное, как вызов локальной процедуры (LPC) на сервер. Когда сервер завершает
указанный запрос и возвращает ответ, DLL может завершить функцию и возвратить
управление клиенту. И пользовательская DLL и сервер могут использовать «родной»
API, когда это необходимо. API подсистем окружения дополняют «родной» API специфическими
функциональными возможностями или семантикой. 
Рис. 1 |