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

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

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

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

  • Переименовать каталог на основе даты файла в каталоге
  • Привязать непривилегированное приложение к привилегированному порту в Mac OS X
  • Используйте `/ etc / paths` или` / etc / paths.d` для добавления элементов в PATH в macOS Sierra?
  • Попытка cp пути с пробелами не работает при написании сценария, но повторение и вставка выполняется успешно?
  • Лучший способ работы / отображения дерева изображений, отсортированных по размеру
  • Выход stat на OSX
  • Как я могу установить команду `ll` в Mac OS X?
  • Поиск источника и источника копирования для плоской цели
  • 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 - лучшая ОС в мире.