Что такое архитектура оконной системы 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.

  • Перевод флагов GNU ps в стандартные флаги
  • Удалить каталог в ftp
  • Удалите 2 и 3 строки в текстовом файле, но не 1
  • Не удается получить SSH-доступ от хоста MacOS к гостю QEMU Sparc
  • Нужна рука с grep + regex
  • collectd создает / home папку на моем mac, и я не могу удалить его
  • восстановление файлов с HSF + USB External HD, тестирование на CentOS 7 для диагностики
  • Почему некоторые приложения перестают работать, когда разрешения изменяются в / usr / bin?
  • Как вы создаете пользователя без пароля?
  • Как запустить tnftpd без root на OS X?
  • Где я должен положить бесхозный лог-файл
  • Interesting Posts

    Что не так с моей карточкой горячих клавиш?

    sed и многострочная замена

    Как установить свойства протокола Интернета с помощью терминала?

    Правильная настройка операционной системы на зашифрованном диске LUKS с алгоритмом non-aes для дистрибутива на основе yum (CentOS)

    Systemd: как создать скрипт, который выполняется перед любым другим

    что такое фоновый процесс?

    Ограничение использования ЦП и памяти для программ C, Java на системном уровне

    Начать sh в указанной директории из inittab

    определить, существуют ли IP-адреса в списке A в списке диапазонов IP в списке B

    Почему обновление пакета yum заменяет мои файлы конфигурации yum-cron?

    Вывод PID сервера Rails с помощью ps aux | grep – перерывы при вставке в псевдоним?

    Помощь в поиске файлов для шаблонов регулярных выражений, рекурсивно, со специализированным выпуском

    Подписание загрузчика GRUB

    Как получить список для ввода в кавычки

    Команда Unix bash Sed Комбинация по одному файлу

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