¿Cuál es la arquitectura del sistema de ventanas de Mac OS X?

¿Cuál es la arquitectura del sistema de ventanas de Mac OS X?

Estoy familiarizado con cómo funciona el sistema X11, donde los clientes se conectan a través de un socket al proceso del servidor y envían operaciones al servidor de ventana para realizar ciertas operaciones en su nombre.

Pero no entiendo (y no pude encontrar buenos documentos) que describan cómo interactúa una aplicación GUI con el sistema de ventanas en Mac OS X. Algunas de las preguntas que tengo incluyen:

  • ¿Cómo recibe una aplicación eventos del sistema de ventanas?
  • ¿Es necesario que la aplicación se registre en el kernel o en algún servidor del sistema de ventanas?
  • ¿Cómo solicita el sistema de ventanas que una aplicación actualice su visualización?
  • ¿Cómo activa una aplicación una operación de volver a mostrar?
  • ¿Existe un protocolo basado en sockets o algún otro sistema RPC para el sistema de ventanas?
  • ¿El sistema de ventanas o la aplicación tiene acceso directo al hardware?
  • ¿Cuáles son las operaciones disponibles entre las aplicaciones cliente y el sistema de ventanas?

Respuesta1

Esto es lo que he podido recopilar hasta ahora:

Las aplicaciones se comunican a través de algún tipo de API privada con el proceso WindowServer, el proceso WindowServer es el que realmente recibe los eventos de hardware (ratón, teclado) y los envía a las aplicaciones cliente. (Esta sigue siendo una pregunta abierta: qué protocolo usan, si es que usan alguno, usan puertos Mach y MIG, o alguna API basada en Socket, no estoy seguro).

Alguna información está aquí:

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

El WindowServer es el Compositor Quartz. Normalmente, las aplicaciones utilizan la API Quartz2D que se expone en la API CoreGraphics (funciones CGXXX). Las aplicaciones crean "Contextos" de CoreGraphics (CGContext) y dibujan allí. Si el contexto se envía cuando se realiza como un mapa de bits grande o si las operaciones se envían al servidor como si estuvieran en X11 sigue siendo una cuestión abierta.

Hay una API limitada expuesta para controlar ciertos aspectos del proceso de WindowServer, el tipo de ajustes de configuración que generalmente se realizan desde la aplicación Configuración, pero no hay documentación sobre cómo las aplicaciones realmente comunican solicitudes gráficas o envían mensajes desde el servidor, aparte de las API de carbono/cacao expuestas.

Respuesta2

El "¿Qué es el Cacao?" sección de laGuía de fundamentos del cacaoTiene un montón de excelentes ilustraciones de la arquitectura de abajo hacia arriba.

Respuesta3

El mejor recurso para los aspectos internos de OS X esComponentes internos de Mac OS X de Amit Singh. Es sorprendentemente detallado, pero desafortunadamente sólo cubre OS X hasta 10.4. Google libros tiene unavance.

Documentación de Apple para OS XTambién es un buen recurso y obviamente está más actualizado.

Respuesta4

En versiones anteriores de MacOS, QuickDraw realizaba el levantamiento; en OS X, eso ha sido reemplazado por Cocoa...

Sin embargo, no es simplemente paralelo a X11. Por ejemplo, X11 no incluye audio, pero Cocoa sí.

información relacionada