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
Android.stackexchange.com/a/16244 Android.stackexchange.com/a/221825
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").
1 votos
@peterh-ReinstateMonica En la pregunta enlazada por alecxs se menciona "Surface Flinger (Android's Display Server)" que es a mi entender la respuesta a tu pregunta. Ver para más detalles: source.Android.com/devices/graphics/
0 votos
@Robert 1) Enlazó una respuesta (que es imho NAA) 2) Sí, "Surface Flinger" ya es un rastro importante, pero hay todavía nada qué es. ¿Es un proceso? ¿Una biblioteca de Java? ¿Un módulo del kernel? ¿O qué? ¿Cómo interactúan los procesos (aplicaciones) con él?
1 votos
SurfaceFlinger es un
init
al menos en las últimas versiones de Android; un binario nativo y una biblioteca. Consulte/system/bin
,/system/lib
,pgrep -a surfaceflinger
,getprop init.svc.surfaceflinger
en su dispositivo. Algo relacionado: Android.stackexchange.com/a/221749/218526 . "¿Cómo interactúan los procesos (apps) con él?" es una cuestión puramente de desarrollo de ROM / HAL, no es adecuado aquí. En resumen, utilizan los mecanismos IPC de Android/Linux para la comunicación. Puede consultar la documentación oficial para más detalles.0 votos
@IrfanLatif ¡Gracias! Ya es una respuesta. Los detalles del mecanismo IPC de Android/Linux serían imho interesantes, pero creo que utiliza sockets unix (AFAIK sysv ipc no existe en Android).
0 votos
La preferencia de Android es Binder y la memoria compartida en la mayoría de los casos.