4 votos

¿Cuál es la analogía del Servidor X en Android?

Conozco bien el mundo del escritorio de Android y actualmente estoy indagando para saber cómo funciona.

Creo que, debido a que múltiples procesos (apps) pueden interactuar simultáneamente con el escritorio, debería existir algún servicio (proceso) central para recoger sus peticiones de cambio y unirlas en una forma siempre consistente (por ejemplo, si el contenido de una ventana cambia mientras no está visible, entonces el cambio debería ser invisible en la pantalla - hasta que esa ventana no pase al frente). Sólo este proceso tiene acceso directo al frame buffer de la pantalla (es decir, sólo él puede cambiar directamente los píxeles).

En el mundo Linux/Unix, esto lo hace el servidor X. Los procesos (aplicaciones) interactúan con el Servidor X en sockets Unix.

En Windows, hasta donde yo sé, es una característica del kernel (por lo tanto, no hay un proceso específico para ello), y los procesos interactúan con él en LPC (llamadas a procedimientos locales, mecanismo de comunicación espacio de usuario-espacio del kernel específico de Windows).

En la red hay una gran cantidad de documentación detallada sobre la interfaz a nivel de la aplicación, pero nada sobre los aspectos internos más profundos.

¿Cómo funciona en Android?

0 votos

0 votos

@alecxs Primer enlace: Creo que en su mayoría no tiene relación con mi pregunta, y seguramente no la responde. Segundo enlace: Creo que system_server es probablemente lo que estoy buscando, aunque no está claro, cómo se accede al hardware de la pantalla, y cómo los procesos (aplicaciones) interactúan con ella.

0 votos

@alecxs Lo siento pero si crees que esta respuesta tiene algo que ver con esta pregunta, probablemente no entiendas esta pregunta. Por cierto, no creo que esta respuesta sea una respuesta útil para esta pregunta. Muchas gracias, pero sé que un kernel no es una "plataforma" (el OP probablemente entiende el conjunto de bibliotecas Java en "plataforma").

2voto

peterh Puntos 151

Resumiendo las respuestas: el manejo de la pantalla ocurre por el Surface Flinger, que es un proceso de servicio iniciado por los scripts init en el arranque.

Las aplicaciones interactúan con el Surface Flinger a través de los mecanismos IPC de Linux/Android. El comentario no detalló, cómo. La preferencia de los Androids es carpeta y la memoria compartida en la mayoría de los casos. Binder utiliza archivos de dispositivo para la comunicación de los procesos.

Surface Flinger se comunica con el hardware a través de la HAL proporcionada por el proveedor. Hasta Android 8, HAL era un conjunto de librerías compartidas en /lib/hw , proporcionado por los vendedores. Desde Android 8, la HAL es un conjunto de servicios del sistema (también procesos iniciados por la inicialización). Las HAL heredadas en forma de bibliotecas compartidas siguen existiendo.

2 votos

SurfaceFlinger se comunica con el HAL del proveedor, no con el hardware.

0 votos

¡@IrfanLatif Tyvm!

1 votos

"HAL" es un conjunto de librerías compartidas en /lib/hw " . No. Las HALs binderizadas introducidas en Android 8 no son bibliotecas sino que se ejecutan como demonios nativos.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X