Bionic (Software)
Bionic ist eine Programmbibliothek des Android-Betriebssystems, die den Funktionsumfang der C-Standard-Bibliothek, der Bibliothek für mathematische Funktionen libm, der Bibliothek zum dynamischen Linken libdl und weiteren Funktionsumfang bereitstellt. Bionic unterliegt der BSD-Lizenz und wird von der Open Handset Alliance weiterentwickelt. Der Name Bionic ist eine Anspielung auf den heterogenen Ursprung des genutzten Quellcodes.[2] EntwicklungszieleMit Bionic sollte eine einfache, effiziente, BSD-lizenzierte C-Bibliothek für das Android-System erstellt werden. Das Entwicklungs-Motto lautete keep it really simple.[2] Android-Systeme sind häufig batteriebetrieben, verfügten über wenig Haupt- und Massenspeicher und nutzten niedrig getaktete Prozessoren. Durch die BSD-Lizenzierung entfallen Copyleft-Restriktionen, dadurch vereinfacht sich die Entwicklung proprietärer Bestandteile des Android-Systems. Populäre, häufig genutzte Erweiterungen der GNU-C-Bibliothek, sowie der BSD-C-Bibliotheken wurden in Bionic übernommen. Als Betriebssystem-Kern ist ausschließlich Linux vorgesehen, eine Binär-Kompatibilität beispielsweise mit der GNU-C-Bibliothek ist nicht vorgesehen. Unterschiede zu POSIXZiel der Entwicklung von Bionic war eine weitgehende Kompatibilität zu POSIX und dem C11-Standard der Programmiersprache C.
In der Android-Version Oreo aus dem Jahr 2018 sind dennoch etwa 70 POSIX-Funktionen der libc nicht enthalten. Ursache für dieses Auslassen von Funktionen ist u. a., dass bestimmte Funktionalität in Android nicht genutzt werden, so nutzt Android beispielsweise keine passwd- und group-Datenbanken, wodurch Zugriffsfunktionen wie Einige Funktionalitäten wurde absichtlich nicht POSIX-konform gestaltet, so wurde etwa auf Unterstützung des printf-Formats Unterstützte PlattformenEs werden die Plattformen x86, x86-64, Armv7-a und ARM64 unterstützt. Bis zum Android Native Development Kit (NDK) r17 wurde ARMv5, MIPS und MIPS64 unterstützt.[4] Eine experimentelle SH-4 Unterstützung wurde kommerziell nie eingesetzt und ist inzwischen eingestellt. BestandteileTeile der libc wie etwa stdio stammen aus OpenBSD, der DNS-Resolver aus NetBSD, der Quellcode der libm für mathematische Funktionen entspricht in weiten Teilen der FreeBSD-Version, wurde aber von mehreren System-on-a-Chip-Herstellern durch Assembler-Implementierungen optimiert.[2] Die Header-Dateien zum Zugriff auf Linux-Systemaufrufe werden automatisch aus den Header-Dateien des Linux-Quellcodes generiert, sämtlicher als Copyright-relevant angesehener Inhalt wird bei der Generierung entfernt.[2] Die Unterstützung für POSIX-Threads (libpthread) sowie die Implementierung zum dynamischen Linken (libdl) wurden vollständig neu entwickelt. Funktionalitäten, die auf POSIX-Systemen in den Bibliotheken libpthread, libresolv und librt bereitgestellt werden, sind bei Bionic direkt in der libc implementiert. WeblinksEinzelnachweise
|
Portal di Ensiklopedia Dunia