Android… Un nom prononcé par tous aujourd’hui. Android est partout, sur les smartphones, les tablettes, les TV, beaucoup de sites spécialisés en parlent, les gens également. Mais enfin, que savons-nous réellement d’Android ?
2. Noyau
Après cette petite introduction, entrons dans le vif du sujet : le noyau utilisé dans Android. Android utilise un noyau Linux 2.6 (3.0 pour les dernières versions) modifié.
Un des changements fondamentaux est le remplacement des IPC SysV. C’est un module qui permet les communications inter-processus. Ce module se voit remplacé par Binder, qui a été initialement développé pour BeOS. Binder est plus économique en ressources système, tout en assurant les mêmes fonctions.
Une autre modification importante concerne la gestion de la mémoire, nommée Ashmem (Android shared memory). C’est un sous-système proche de Shared Memory (SHM) défini par la norme POSIX, mais qui dispose d’une API plus simple. Le but de ce sous-système est de déléguer une partie de la gestion de la mémoire à l’utilisateur. De ce fait, la mémoire peut être partagée entre les processus en passant par Binder.
Système embarqué oblige, l’accès aux journaux système (logs) ne peut se faire comme sur un système classique. Google a donc intégré un logger dans le noyau. Celui-ci permet d’effectuer une surveillance via la commande logcat. Il est aussi possible de détourner le stdout et / ou le stderr des processus vers le journal système. Cela peut être très utile pour le développement d’applications. Pendant les phases de test sur le terminal, nous avons un accès en temps réel aux logs de l’application.
Google a également implémenté OOM (Out Of Memory). C’est une sorte de gestionnaire de tâches, il est aussi appelé Viking Killer. Il a pour rôle de tuer les tâches lorsque la mémoire vient à manquer. Les tâches à tuer sont définies par des quotas de mémoire suivant les classes de processus.
Ces modifications sont les principales effectuées, mais il y en a encore beaucoup d’autres, comme la gestion de la mise en veille, de l’alarme, la sécurisation de l’accès aux ressources réseau ou encore la fonction printk permettant de loguer en RAM les GPIO ou ADB pour l’USB.
Commenter 6 commentaires
Comme tu l'as fait remarquer, le sdk ne donne accès qu'au framework, mais il faut aussi savoir ce qu'est que le framework. Car dans Android, le framework désigne deux choses :
Le Framework, une partie de l'environnement d'execution
et le framework Android, qui est l'environnement de programmation (donc le sdk, souvent associé à eclipse).
Le noyau n'est pas accessible sauf si le bootloader du téléphone est débloqué ou que le fabriquant a mis à disposition ses outils concernant le kernel.
Nous sommes ici pour parler du dossier, et pour moi, d'avoir des retours pour parfaire mes prochains sujets.