Оконная и графическая подсистемы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оконная и графическая подсистемы



Оконная и графическая подсистемы отвечают за интерфейс пользователя - работу с окнами, элементами управления и графическим выводом.

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

Интерфейс графических устройств (Graphical Device Interface, GDI) — состоит из набора базовых операций графического вывода, которые не зависят от конкретного устройства (черчение линий, отображение текста и т.п.).

Драйверы графических устройств (видеокарт, принтеров и т.п.) - отвечают за взаимодействие с контролерами этих устройств.

Во время создания окон или элементов управления запрос поступает в менеджера окон, который для выполнения базовых графических операций обращается к GDI. Потом запрос передается драйверу устройства, затем - аппаратному обеспечению через НАL.

Компоненты режима пользователя

Компоненты режима пользователя не имеют прямого доступа к аппаратному обеспечению, их код выполняется в изолированном адресном пространстве. Большая часть кода режима пользователя находится в динамических библиотеках, которые в Windows называют DLL (dynamic-link libraries).

Библиотека системного интерфейса

Для доступа к средствам режима ядра в режиме пользователя необходимо обращаться к функциям библиотеки системного интерфейса (ntdll.dll). Эта библиотека предоставляет набор функций - переходников, каждой из которых отвечает функция режима ядра (системный вызов). Программы обычно не вызывают такие функции непосредственно, за это отвечают подсистемы среды.

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

Подсистемы среды предоставляют программам пользователя доступ к службам операционной системы, реализуя соответствующий АРI. Мы остановимся на двух подсистемах среды: Win32 и POSIX.

Подсистема Win32, которая реализует Win32 АРI, является обязательным компонентом Windows ХР. В неё входят такие компоненты:

♦ процесс подсистемы Win32 (csrss.ехе), который отвечает, за реализацию текстового (консольного) ввода-вывода, создание и уничтожение процессов и потоков;

♦ библиотеки подсистемы Win32, которые предоставляют прикладным программам функции Win32 АРI. Чаще всего используют библиотеки gdi32.dll (низкоуровневые графические функции, независимые от устройства), user32.dll (функции интерфейса пользователя) и kernel32.dll (функции, реализованные в ИС и ядре).

После того как программа обратится к функции Win32 АРI, сначала будет вызвана соответствующая функция из библиотеки подсистемы Win32. Рассмотрим варианты выполнения такого вызова.

1. Если функции нужны только ресурсы ее библиотеки, вызов полностью выполняется в адресном пространстве программы без перехода в режим ядра.

2. Если нужен переход в режим ядра, из кода библиотеки подсистемы выполняется системный вызов. Так происходит в большинстве случаев, например во время создания окон или элементов управления.

3. Функция библиотеки подсистемы может обратиться к процессу подсистемы Win32, при этом:

♦ когда нужна только функциональность, реализованная данным процессом, перехода в режим ядра не происходит;

♦ когда нужна функциональность режима ядра, процесс подсистемы Win32 выполняет системный вызов аналогично к варианту 2.

Подсистема POSIX работает в режиме пользователя и реализует набор функций, определенных стандартом POSIX 1003.1. Поскольку процессы, или прикладные программы, написанные для одной подсистемы, не могут использовать функции других, в POSIX-программах нельзя пользоваться средствами Win32 АРI (в частности, графическими и сетевыми функциями), что снижает важность этой подсистемы.

Подсистема POSIX не является обязательным компонентом Windows ХР.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 219; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.108.168 (0.006 с.)