Подсистемы среды

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

Подсистемы среды — не новинка в Windows 2000, но они значительно улучшились со времен выпуска Windows NT. Считается, что некоторые приложения работают лучше под управлением Windows 2000, чем той операционной системы, для которой они изначально создавались. В Windows 2000 возросла и безопасность работы прило жений. Например, Windows 2000, никак не влияя на работу сервера, может прервать работу DOS-приложения, что гарантировало бы зависание при запуске в среде DOS. Подсистемы среды и приложений Windows 2000 перечислены в табл. 1.1.

Подсистемы среды, отличные от Win32, обеспечивают базовую поддержку He-Win32 приложений и не более того. В той или иной подсистеме большой необходимости нет, все они поддерживаются только для запуска простых утилит, совершающих прямые и совместимые с POS1X или OS/2 вызовы функций, обычно написанных на С. Однако подсистема среды POS1X обеспечивает запуск таких утилит UNIX, как VI или GREP.

Например, подсистема среды POSIX не обеспечивает такой тесной интеграции Windows 2000 и UNIX, как запуск оболочки UNIX под Windows 2000. Для этого вам понадобится устанавливать соответствующие службы для UNIX. Более подробные сведения вы найдете дальше в настоящей главе.

Для запуска под управлением Windows 2000 приложений, написанных для других операционных систем, существует несколько ограничений. Это продемонстрировано в следующем списке, куда для полноты картины включены и приложения Win32, рабо­тающие в режиме пользователя.

- Программы не имеют прямого доступа к оборудованию. Другими словами, если
приложению требуется свободное дисковое пространство, оно не может полу­
чить необходимые сведения от оборудования. Вместо этого оно обращается к
объектам режима пользователя, которые взаимодействуют с объектами режима
ядра, а те, в свою очередь, спускаются еще ниже и обращаются к уровню аппа­
ратных абстракций HAL. Затем полученные сведения передаются назад вверх до
уровня интерфейса. Функция из программного кода Win32 сразу получает необ­
ходимые значения, поэтому разработчикам не нужно думать об организации
доступа к оборудованию. Такая ситуация хороша как для разработчиков, так и
для операционной системы. Прикладные интерфейсы API, проверяющие досто­
верность вызовов, защищают операционную систему, поэтому разработчики по­
лучают возможность использовать просто интерфейс на уровне вызовов, для чего
обычно требуется всего одна, а не 10 тысяч строк программного кода.

- Программы не имеют прямого доступа к драйверам устройств. Перечислен­
ные выше замечания справедливы и по отношению к драйверам устройств.
Производители оборудования создают драйверы для Windows 2000, которые
взаимодействуют с оборудованием. Однако драйверы не обращаются непо­
средственно к оборудованию, взаимодействуя вместо этого с абстрактными
объектами, предоставляемыми прикладными интерфейсами API. Этот под­
ход, а также новая модель драйверов Windows WDM (Windows Driver Model)
будут рассмотрены дальше в настоящей главе.

- Программам выделяется только ограниченное адресное пространство. Это
защищает операционную систему от "грубых" приложений, пытающихся занять всю доступную память. Это невозможно в Windows 2000, где каждая программа ограничена выделенным ей адресным пространством.

- Windows 2000, как и Windows NT, использует пространство жесткого диска
как квазиоперативную память. Приложениям ничего не известно о типе ис­
пользуемой памяти; для них все осуществляется совершенно прозрачно.
Виртуальная память — это комбинация всех типов памяти в системе; более
подробно эти вопросы будут рассмотрены дальше в настоящей главе.

- Приложения, запущенные в режиме пользователя, являются процессами с
низшим приоритетом, чем любые службы и функции, запущенные в режиме
ядра. Это также означает, что им отдается меньшее предпочтение при досту­
пе к центральному процессору, чем процессам режима ядра.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: