Какова архитектура оконной системы Mac OS X?

Какова архитектура оконной системы Mac OS X?

Я знаком с тем, как работает система X11, где клиенты подключаются через сокет к серверному процессу и отправляют операции на сервер Windows для выполнения определенных операций от их имени.

Но я не понимаю (и не смог найти хороших документов), как приложение с графическим интерфейсом взаимодействует с оконной системой в Mac OS X. Вот некоторые из вопросов, которые у меня возникли:

  • Как приложение получает события от оконной системы?
  • Нужно ли приложению регистрироваться на ядре или на каком-либо сервере оконной системы?
  • Каким образом система управления окнами запрашивает у приложения обновление отображения?
  • Как приложение запускает операцию повторного отображения?
  • Существует ли протокол на основе сокетов или какая-либо другая система RPC для оконной системы?
  • Имеет ли оконная система или приложение прямой доступ к оборудованию?
  • Какие операции доступны между клиентскими приложениями и оконной системой?

решение1

Вот что мне удалось собрать на данный момент:

Приложения взаимодействуют с процессом WindowServer через некий частный API, процесс WindowServer фактически получает аппаратные события (мышь, клавиатура) и отправляет их клиентским приложениям. (Это все еще открытый вопрос: какой протокол они используют, если используют, используют ли они порты Mach и MIG или какой-то API на основе сокетов, не уверен).

Некоторая информация здесь:

https://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/OSX_Technology_Overview/GraphicsTechnologies/GraphicsTechnologies.html#//apple_ref/doc/uid/TP40001067-CH273-SW1

WindowServer — это Quartz Compositor. Обычно приложения используют Quartz2D API, который представлен в CoreGraphics API (функции CGXXX). Приложения создают CoreGraphics "Contexts" (CGContext) и рисуют там. Выталкивается ли контекст, когда он делается как большой bitmap, или операции отправляются на сервер, как в X11, — все еще остается открытым вопросом.

Существует ограниченный API, доступный для управления определенными аспектами процесса WindowServer, своего рода настройки конфигурации, которые обычно выполняются из приложения «Настройки», но нет никакой документации о том, как приложения на самом деле обмениваются графическими запросами или передают сообщения с сервера, за исключением предоставленных API Carbon/Cocoa.

решение2

Раздел «Что такое какао?»Руководство по основам какаосодержит множество замечательных иллюстраций архитектуры снизу вверх.

решение3

Лучший ресурс по внутренним компонентам OS X —Внутреннее устройство Mac OS X Амита Сингха. Он удивительно подробный, но, к сожалению, охватывает только OS X до 10.4. В Google books естьпредварительный просмотр.

Документация Apple для OS Xтакже хороший ресурс, и, очевидно, более современный.

решение4

В предыдущих версиях MacOS подъем выполнялся с помощью QuickDraw; в OS X его заменил Cocoa...

Но это не просто параллель X11. Например, X11 не включает аудио, а Cocoa включает.

Связанный контент