4 votes

Quelle est l'analogie du serveur X sur Android ?

Je connais bien le monde de bureau de l'Android et je suis en train de creuser pour, comment ça marche.

Je pense que, parce que de multiples processus (applications) peuvent interagir simultanément avec le bureau, un service central (processus) devrait exister pour collecter leurs demandes de changement et les unir dans une forme toujours cohérente (par exemple, si le contenu d'une fenêtre change alors qu'elle n'est pas visible, alors le changement devrait être invisible à l'écran - jusqu'à ce que cette fenêtre ne passe pas à l'avant). Seul ce processus a un accès direct à la mémoire tampon de l'écran (c'est-à-dire qu'il est le seul à pouvoir modifier directement les pixels).

Dans le monde Linux/Unix, c'est le serveur X qui s'en charge. Les processus (apps) interagissent avec le serveur X sur des sockets Unix.

Sous Windows, pour autant que je sache, il s'agit d'une fonctionnalité du noyau (il n'y a donc pas de processus spécifique pour cela), et les processus interagissent avec elle sur LPC (local procedure calls, mécanisme de communication espace utilisateur - espace noyau spécifique à Windows).

Sur le net, il existe une énorme masse de documentation détaillée sur l'interface au niveau de l'application, mais rien sur les éléments internes plus profonds.

Comment cela fonctionne-t-il sur Android ?

2voto

peterh Points 866

Pour résumer les réponses : la gestion de l'affichage est assurée par le Surface Flinger, qui est un processus de service lancé par les scripts init au démarrage.

Les applications interagissent avec le Surface Flinger par le biais de mécanismes IPC Linux/Android. Le commentaire ne précise pas comment. La préférence d'Androïdes est classeur et la mémoire partagée dans la plupart des cas. Binder utilise des fichiers de périphérique pour la communication entre les processus.

Surface Flinger communique avec le matériel par l'intermédiaire du HAL fourni par le fournisseur. Jusqu'à Android 8, HAL était un ensemble de librairies partagées dans le répertoire /lib/hw fournis par les vendeurs. Depuis Android 8, HAL est un ensemble de services système (également des processus lancés par l'initialisation). Les HALs hérités sous forme de bibliothèques partagées existent toujours.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X