Heim > Artikel > Betrieb und Instandhaltung > Gibt es einen Unterschied zwischen Android und Linux?
Es gibt Unterschiede zwischen Android und Linux: 1. Android-Anwendungen werden mit JAVA entwickelt und können auf dem Android-System über die virtuelle JAVA-Maschine ausgeführt werden, während Linux-Anwendungen mit „C/C++“ entwickelt werden und auf dem Android-System ausgeführt werden können die Form des Maschinencodes auf dem Kernelsystem. 2. Es gibt Unterschiede in der zugrunde liegenden Treibersoftware zwischen den beiden.
Die Betriebsumgebung dieses Tutorials: CentOS 6-System, Dell G3-Computer.
Als aktuelle Mainstream-Betriebssysteme werden Android und Linux sowohl in Verbraucherprodukten als auch in industriellen Steuerungsbereichen häufig verwendet. Es wird gesagt, dass das Android-System aus dem Linux-System hervorgegangen ist. Ist Android also eine Art Linux? Lassen Sie uns nun über die Gemeinsamkeiten und Unterschiede zwischen Android- und Linux-Systemen sprechen.
1. Was die beiden gemeinsam haben
Android ist ein System, das auf dem Linux-Kernel basiert. Die Kernsystemdienste von Android- und Linux-Systemen basieren alle auf dem Linux-Kernel, z. B. Sicherheit, Kernelverwaltung, Prozessverwaltung, Netzwerkstapel, Treibermodell usw. Der Linux-Kernel dient auch als Abstraktionsschicht zwischen der Hardware und der Software der beiden. Er verbirgt spezifische Hardwaredetails und bietet einheitliche Dienste für die Anwendungsentwicklung der oberen Ebene System und Android Oberflächlich betrachtet handelt es sich um zwei verschiedene Betriebssysteme, aber Android ist im Wesentlichen immer noch ein Linux-System, aber Google hat es maßgeschneidert und angepasst.
Um die geistigen Eigentumsrechte der Hardwarehersteller zu schützen, fügt das Android-System außerdem eine HAL-Schicht hinzu, die den spezifischen Implementierungsteil des Treibers extrahieren und zur Implementierung an HAL senden kann, wodurch das Risiko von Open Source vermieden wird Hardwaretreiber, also ist der Android-Treiber in zwei Teile unterteilt, ein Teil wird in den Kernel geschrieben und der andere Teil wird in die HAL-Schicht geschrieben.
Zusätzlich zur Entwicklung des zugrunde liegenden Treibers muss Android den Treiber auch gemäß den JNI-Regeln in eine JNI-Layer-Schnittstelle kapseln, damit die Anwendung (JAVA-Programm) den Kernel-Treiber über JNI aufrufen kann. Nehmen Sie als Beispiel den Anzeigetreiber Framebuffer, wie in der Abbildung gezeigt.
Anzeigetreibermodell des Linux-SystemsAnzeigetreibermodell des Android-Systems
(1) Linux-System: Der Framebuffer-Treiber muss nur in den Linux-Kernel kompiliert und die entsprechenden Lese- und Schreibvorgänge ausgeführt werden Schreiben wird beiseite gelegt, ioctl und andere Schnittstellen können von der Host-Computeranwendung aufgerufen werden. (2) Android-System
: Der Framebuffer-Treiber kompiliert zunächst den Treiber für einfache Lese- und Schreibvorgänge für Hardwareregister in den Kernel, schreibt dann den Treiber für die spezifische Hardwareimplementierung in die HAL-Schicht und kapselt ihn entsprechend als JNI-Schnittstelle gemäß den JNI-Spezifikationen, kann vom Host-Computer-Anwendungsprogramm aufgerufen werden.4. Der Unterschied zwischen Linux- und Android-Anwendungsschichtsoftware
Aber Android-Anwendungen sind in Java-Sprache geschrieben und können die in C-Sprache implementierte Systemschnittstelle nicht direkt aufrufen, während im Linux-System die C-Sprache zum Aufrufen verwendet werden kann Die Systemschnittstelle für die Kommunikation Der Kernel kommuniziert, daher gibt es im Android-System ein Konzept namens JNI, mit dem die Informationsinteraktion zwischen Java- und C/C++-Programmen realisiert wird.(1) Wie Android-Anwendungen auf den Android-Kernel-Treiber zugreifen:
APP –>JNI –>Android-Kernel-Treiber
APP –>Hardware Access Service –>Android-Kernel-Treiber (2) So greifen Linux-Anwendungen auf Linux-Treiber zu Video-Tutorial"
Das obige ist der detaillierte Inhalt vonGibt es einen Unterschied zwischen Android und Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!