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

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

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

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

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.

  • как изменить git-путь?
  • Почему приложения Mac никогда не закрываются?
  • Почему вино может запускать 64-битные программы в Linux, но не на Mac?
  • в zsh, как скрыть обратную косую черту в меню завершения
  • Как исправить зависание с помощью сглаживания sslv3?
  • Не удается получить SSH-доступ от хоста MacOS к гостю QEMU Sparc
  • stat на зашифрованном томе в osx занимает много времени
  • Обычно скрипт работает, но не с cron
  • Дарвинский планшет из интерпретатора в исполнении хеш-банга
  • Как перемещать файлы по размеру?
  • htop: использование Ctrl + n и Ctrl + p для перемещения между процессами
  • awk и система, а также печать и добавление в файл csv
  • Interesting Posts

    Tmux: показ сеансов в нижней строке

    Есть ли способ иметь регулярное выражение в ~ / .ssh / config

    Как сделать dnf для установки более старых версий программного обеспечения

    Именование названия цикла gstreamer?

    Какую файловую систему / файловую систему использовать для раздела / tmp

    как приложения взаимодействуют через сокеты

    Бареос: один пул с различными типами носителей

    Почему я не могу создать «hardlink» для файла из каталога «mount -bind» в той же файловой системе?

    Исправить яркость linux mint 17.2

    Сортировка одного столбца по возрастанию и по убыванию другого столбца

    по команде: Garbled time

    crontab дает только 2045 строк вывода вместо 6000 строк

    Как настроить XFCE для обработки быстрых клавиш \ hotkeys на key-release \ вверх, а не нажатия клавиш

    Показывать текстовый файл по одной странице за один раз, подождать 20 секунд, затем автоматически настроить

    Есть ли способ измерить прогресс ext4lazyinit?

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