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

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

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

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

  • Сохранение владельца / группы по предоставленным OS X акциям CIFS
  • Glob для подстановки подкаталогов
  • Рассчитать дату с 1125 дней назад на не-GNU-системах?
  • Ошибка установки (установка системы) - Kali Linux
  • Команда Mac OS для разрешения имен хостов, таких как «getent» в Linux
  • Необходимо набирать весь путь для выполнения приложения в OSX
  • Автоматическое завершение терминала OSX bash - нечетное поведение на двойной вкладке
  • Не может rm-файл, потому что он не существует?
  • 5 Solutions collect form web for “Что такое архитектура оконной системы Mac OS X?”

    Это то, что я смог собрать до сих пор:

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

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

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

    WindowServer – это кварцевый композитор. Обычно приложения используют API Quartz2D, который отображается в API CoreGraphics (функции CGXXX). Приложения создают CoreGraphics «Контексты» (CGContext) и рисуют там. Является ли контекст нажатым, когда он выполняется как большой битмап, или если операции отправляются на сервер, как на X11, остается открытым вопросом.

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

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

    Лучшим ресурсом для внутренних элементов OS X является Amit Singh Mac OS X Internals . Он поразительно детализирован, но, к сожалению, охватывает только OS X до 10.4. В книгах Google есть предварительный просмотр .

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

    XQuartz – это проект с открытым исходным кодом X Window X Window System, который работает в Mac OS X. Их вики-разработчики и список рассылки помогут вам в решении ваших вопросов, похоже, вам нужен кто-то, кто глубоко вовлечен в проект, чтобы ответить на эти вопросы.

    В предыдущих версиях MacOS подъем выполнялся QuickDraw; в OS X, который был заменен Cocoa …

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

    Linux и Unix - лучшая ОС в мире.