Il existe des différences entre Android et Linux : 1. Les applications Android sont développées en utilisant JAVA et peuvent s'exécuter sur le système Android via la machine virtuelle JAVA ; tandis que les applications Linux sont développées en utilisant "C/C++" et peuvent s'exécuter sur le système Android en sous forme de code machine sur le système noyau. 2. Il existe des différences dans le logiciel pilote sous-jacent entre les deux.
L'environnement d'exploitation de ce tutoriel : système CentOS 6, ordinateur Dell G3.
En tant que systèmes d'exploitation courants actuels, Android et Linux sont largement utilisés dans les domaines des produits de consommation et du contrôle industriel. On dit que le système Android est né du système Linux, alors Android est-il un type de Linux ? Parlons maintenant des similitudes et des différences entre les systèmes Android et Linux.
1. Ce que les deux ont en commun
Android est un système basé sur le noyau Linux. Les services système de base des systèmes Android et Linux reposent tous sur le noyau Linux, tels que la sécurité, la gestion du noyau, la gestion des processus, la pile réseau, le modèle de pilote, etc. Le noyau Linux sert également de couche d'abstraction entre le matériel et les logiciels des deux. Il cache des détails matériels spécifiques et fournit des services unifiés pour le développement d'applications de couche supérieure
2. système et Android En apparence, ce sont deux systèmes d'exploitation différents, mais Android reste essentiellement un système Linux, mais Google l'a adapté et personnalisé.
De plus, par rapport aux systèmes Linux, Android exécute une machine virtuelle Java (JVM) appelée Dalvik (renommée ART après la version 4.4) sur son noyau Linux. Par conséquent, les applications Android développées avec JAVA peuvent être virtualisées via JAVA. système. Les applications Linux sont développées en C/C++ et peuvent s'exécuter sur le système noyau sous forme de code machine. Les différences de structure système entre les deux sont illustrées dans la figure.
3. Différences entre les logiciels pilotes sous-jacents Linux et Android
En plus des pilotes de base communs fournis par le noyau Linux, Android ajoute également son propre pilote de noyau propriétaire, comme indiqué. Pilote, pilote Bluetooth, pilote d'appareil photo, pilote de carte mémoire, pilote Binder IPC, etc.
De plus, afin de protéger les droits de propriété intellectuelle des fabricants de matériel, le système Android ajoute une couche HAL, qui peut extraire la partie d'implémentation spécifique du pilote et l'envoyer à HAL pour implémentation, évitant ainsi le risque d'open source. pilotes matériels, le pilote Android est donc divisé en deux parties, une partie est écrite dans le noyau et l'autre partie est écrite dans la couche HAL. En plus de développer le pilote sous-jacent, Android doit également encapsuler le pilote dans une interface de couche JNI selon les règles JNI afin que l'application (programme JAVA) puisse appeler le pilote du noyau via JNI. Prenons l'exemple du pilote d'affichage Framebuffer, comme le montre la figure.Modèle de pilote d'affichage du système Linux
Modèle de pilote d'affichage du système Android
(1) Système Linux
: Le pilote Framebuffer doit uniquement être compilé dans le noyau Linux, et les lectures et write sont mis de côté, ioctl et d'autres interfaces peuvent être appelées par l'application de l'ordinateur hôte.(2) Système Android : le pilote Framebuffer compile d'abord le pilote pour des opérations simples de lecture et d'écriture du registre matériel dans le noyau, puis écrit le pilote pour l'implémentation matérielle spécifique dans la couche HAL et l'encapsule en tant qu'interface JNI selon aux spécifications JNI, peut être appelé par l'application de l'ordinateur hôte.
4. La différence entre les logiciels de couche d'application Linux et Android
Mais les applications Android sont écrites en langage Java et ne peuvent pas appeler directement l'interface système implémentée en langage C, tandis que dans le système Linux, le langage C peut être utilisé pour appeler l'interface système avec laquelle communiquer Le noyau communique, il existe donc un concept appelé JNI dans le système Android, qui est utilisé pour réaliser l'interaction d'informations entre les programmes Java et C/C++.
(1) Comment les applications Android accèdent au pilote du noyau Android :
APP—>JNI—>Pilote du noyau Android
APP—> Pilote du noyau Linux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!