Android

Fonctionnement

Démarrage

Comme tout système Linux, au démarrage le bootLoader charge le kernel et lance le processus init. Le père de tous les processus.

Ensuite un certain nombre de daemons sont lancés :


Puis le processus init lance le processus zygote. Le processus zygote est le service le plus important. Le processus zygote :

Ensuite le processus init lance le processus runtime qui va à son tour lancer le Service Manager ( "DNS" permettant d'enregistrer et de récupérer des références vers des services) et enregistre ce Service Manager comme le Context Manager par défaut.




Une fois tous cela de fait, le processus runtime, envoie une requête au processus zygote lui demandant de lancer le System Service. Zygote va forker une nouvelle instance de Dalvik VM pour le processus System Service et démarrer le service.
Le System service va lancer à son tour l'Audio Flinger et le surface Flinger qui vont ensuite s'enregistrer au près du Service Manager


Le System Manager lance ensuite les services d'Android. Ces services une fois lancés vont s'enregistrer au près du Service Manager (en bleu), qui fait office de proxy avec le Service Manager (en vert) faisant partie des librairies C/C++.

Une fois tous les services chargés, le système est prêt. Des applications utilisateur peuvent être lancées.


Intéraction





L'application utilisateur récupère Location Manager Service en utilisant le Context Manager. Ensuite le Location Manager interroge le GpsLocationProvider qui lui même interroge en utilisant JNI (Java Native Interface) la librairie C/C++ GpsLocationProvider qui va charger la librairie dynamique libgps.so.