Qual é a arquitetura do sistema de janelas do Mac OS X?

Qual é a arquitetura do sistema de janelas do Mac OS X?

Estou familiarizado com o funcionamento do sistema X11, onde os clientes se conectam por meio de um soquete ao processo do servidor e enviam operações ao servidor de janela para realizar determinadas operações em seu nome.

Mas não entendo (e não consegui encontrar bons documentos) descrevendo como um aplicativo GUI interage com o sistema de janelas no Mac OS X. Algumas das perguntas que tenho incluem:

  • Como um aplicativo recebe eventos do sistema de janelas?
  • O aplicativo precisa ser registrado no kernel ou em algum servidor de sistema de janelas?
  • Como o sistema de janelas solicita que um aplicativo atualize sua exibição?
  • Como um aplicativo aciona uma operação de nova exibição?
  • Existe um protocolo baseado em soquete ou algum outro sistema RPC para o sistema de janelas?
  • O sistema de janelas ou o aplicativo tem acesso direto ao hardware?
  • Quais são as operações disponíveis entre aplicativos cliente e o sistema de janelas?

Responder1

Isto é o que consegui reunir até agora:

Os aplicativos se comunicam por meio de algum tipo de API privada para o processo WindowServer, o processo WindowServer é aquele que realmente obtém eventos de hardware (mouse, teclado) e os despacha para os aplicativos clientes. (esta ainda é uma questão em aberto: qual protocolo eles usam, se houver, eles usam portas Mach e MIG, ou alguma API baseada em soquete, não tenho certeza).

Algumas informações estão aqui:

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

O WindowServer é o Compositor Quartz. Normalmente os aplicativos usam a API Quartz2D exposta na API CoreGraphics (funções CGXXX). Os aplicativos criam "Contextos" CoreGraphics (CGContext) e desenham lá. Se o contexto é enviado quando é feito como bitmap grande ou se as operações são enviadas para o servidor como no X11 ainda é uma questão em aberto.

Há uma API limitada exposta para controlar certos aspectos do processo WindowServer, o tipo de definições de configuração que normalmente são feitas no aplicativo Configurações, mas não há documentação sobre como os aplicativos realmente comunicam solicitações gráficas ou bombeiam mensagens do servidor, além de as APIs de Carbono/Cacau expostas.

Responder2

A seção "O que é cacau?" seção doGuia de fundamentos do cacautem um monte de ótimas ilustrações da arquitetura de baixo para cima.

Responder3

O melhor recurso para componentes internos do OS X éInternos do Mac OS X de Amit Singh. É surpreendentemente detalhado, mas infelizmente cobre apenas o OS X até 10.4. O Google Livros tem umvisualização.

Documentação da Apple para OS Xtambém é um bom recurso e obviamente está mais atualizado.

Responder4

Nas versões anteriores do MacOS, o levantamento era feito pelo QuickDraw; no OS X, que foi substituído pelo Cocoa...

Porém, ele não é simplesmente paralelo ao X11. Por exemplo, o X11 não inclui áudio, mas o Cocoa inclui.

informação relacionada