![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Подсистемы и библиотеки
ОС Windows XP имеет две подсистемы среды (Win32 и POSIX1), которые работают только на платформе х86. Каждая из указанных подсистем обеспечивает пользовательским приложениям доступ к разным службам Windows XP. Пользовательские процессы для вызова служб операционной системы используют библиотеки динамической связки (DLL) соответствующей подсистемы среды. Их задача заключается в транслировании документированных функций среды в соответствующие недокументированные функции служб ядра операционной системы. Например, библиотека DLL подсистемы Win32 использует функции Win32 API, библиотека системы POSIX, соответственно, функции POSIX 1003.1 API. Главными компонентами подсистемы Win32 являются процессы подсистемы среды и драйвер режима ядра. Процесс подсистемы среды поддерживает: - консольные (текстовые) окна; - создание и удаление процессов и потоков; - работу виртуальной 16-разрядной DOS -машины; - прочие функции MS-DOS. Драйвер режима поддерживает: - менеджер окон, который управляет: отображением окон, выводом на экран, вводом с клавиатуры, от мыши и других устройств, передачей пользовательских сообщений приложениям; - интерфейс графических устройств GDI (Graphics Device Interface) – библиотеку функций для вывода на графические устройства для рисования текста, линий, фигур и манипуляций графическими объектами; - зависимые от устройств драйверы графики, принтера и видеокарты; - несколько библиотек DLL, которые транслируют документированные функции Win32 API в соответствующие недокументированные вызовы Ntoskrnl.exe и Win32k.sys. Приложения вызывают стандартные функции для создания окон и кнопок на дисплее. Менеджер окон передает эти запросы драйверам графических устройств через интерфейс GDI, где они форматируются для вывода средствами конкретных устройств. GDI обеспечивает набор стандартных функций, позволяющих приложениям общаться с графическими устройствами (включая дисплеи и принтеры), без конкретных знаний о них. GDI интерпретирует запросы приложений на графический вывод и посылает их драйверам графических дисплеев. Этот интерфейс позволяет создать код приложения, независимый от конкретных устройств их драйверов. Файл: %SystemRoot%\SYSTEM32\Ntdll.dll является специальной системой поддержки DLL -библиотек. Эта система содержит два типа функций: Первая группа функций обеспечивает интерфейс к службам Windows XP, которые могут быть вызваны из пользовательского режима. Существует более 200 таких функций, например NtCreateFile, NtSetEvent и т.д. Для каждой из них имеется точка входа в Ntdll.dll с тем же именем. Внутренний код функции содержит специфичные для архитектуры команды, которые вызывают переход в режим ядра для обращения к реальным службам ОС, код которых содержится в Ntoskrnl.exe. Вторая группа функций содержит большое количество функций поддержки: загрузчик исполняемых модулей, коммуникационные функции для процессов подсистемы Win32, библиотека функций реального времени пользовательского режима, диспетчер вызовов асинхронных процедур АРС (Asynchronous Procedure Call, асинхронный вызов процедур) пользовательского режима, диспетчер исключений. Адресное пространство компьютера от 2 до 4 Гбайт под управлением ОС Windows XP занимает ядро ОС (нулевое кольцо защиты микропроцессора). Системный сервер функционирует в адресном пространстве, невидимом для программ Win32. Здесь происходит проверка действительности параметров вызова и исполняется подлинный системный код. Такая организация обеспечивает высокую степень безопасности, но иногда приводит к существенным накладным расходам. Каждая программа Win32 видит неструктурированное адресное пространство размером 2 Гбайт. Данную область памяти прикладных программ называют памятью третьего кольца защиты микропроцессора. К этой памяти может иметь доступ кроме исполняемого приложения и операционная система. Сама программа отображается в область между 64 Кбайт и 2 Гбайт. Первые 64 Кбайт недоступны. Верхняя область принадлежащего программе пространства содержит код, который воспринимается ею как системные DLL. На самом деле, это заглушки – DLL клиентской стороны, которые выполняют перенаправление вызовов. Когда программа вызывает функцию API, DLL клиентской стороны передает вызов отдельному системному процессу.
|