Qual è la differenza tra il kernel Linux e il kernel Android?


Risposte:


7

Le differenze cambiano da versione a versione (sia Linux che Android) e il kernel esatto è diverso per ogni dispositivo. Un kernel per Android è un kernel Linux tradizionale, con driver aggiuntivi per il dispositivo specifico e altre funzionalità aggiuntive, come una migliore gestione dell'alimentazione o un supporto grafico più veloce.

Molte funzioni del kernel Android vengono successivamente aggiunte a upstream Linux dopo che la comunità open source le ha accettate (e forse modificate), ma altre non vengono mai aggiornate a monte, perché non sono accettabili per gli sviluppatori del kernel Linux, o perché " applicabile solo ad Android o hardware specifico.


3
La maggior parte dei driver per hardware specifico Android è stata accettata nel kernel mainline; ma alcune funzionalità, come il blocco della scia che ha causato un'enorme controversia qualche tempo fa, rimane problematica perché mainline e lo sviluppatore del kernel Android non sono d'accordo sul fatto che sia una buona idea.
Lie Ryan,

"Un kernel per Android è un kernel Linux tradizionale, con driver aggiuntivi per il dispositivo specifico e altre funzionalità aggiuntive, come una migliore gestione dell'alimentazione o un supporto grafico più veloce", quindi sono principalmente driver? Nessun codice sorgente è cambiato?
Guerlando OCs

@GuerlandoOCs Non sono sicuro di cosa pensi siano i driver se non una modifica del codice sorgente, ma a prescindere, l '"altra funzionalità aggiuntiva" che ho citato è piuttosto grande in questi giorni. Ci sono molte modifiche al codice sorgente.
Dan Hulme,

@DanHulme sono i patch di modifica del codice sorgente o solo il codice è stato cambiato manualmente? Come posso vedere le cose che sono cambiate? Ho letto che puoi patch il tuo kernel Linux per essere compatibile con Android, ma dove sono quelle patch in modo che io possa leggerle?
Guerlando OCs

5

Oltre alle differenze specifiche del dispositivo e al blocco della sveglia menzionati da Dan Hulme e Lie Ryan, Android ha rimosso le funzionalità IPC di System V (code di messaggi, segmenti di memoria condivisa, semafori) che potrebbero causare perdite di risorse ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Questo probabilmente è solo una questione di configurazione della build del kernel. Anche l'IPC preferito di Android, chiamato Binder, ha del supporto nel kernel che, per quanto ne so, non è incluso nei kernel standard di Linux.


4

Penso che questa sorgente Android sia un'ottima documentazione per comprenderla.

Ed ecco un elenco di modifiche apportate dal kernel mainline per il kernel Android 4.14.

Le più grandi funzionalità includono:

  • 19,8% Energy Aware Scheduling (kernel / sched)
  • 13,8% di rete (net / netfilter)
  • 13,5% Sdcardfs (fs / sdcardfs)
  • 9.4% USB (driver / usb)
  • 7,2% SoC (arch / arm64, arch / x86)
  • 6,2% f2fs (fs / f2fs - backport dall'upstream)
  • 6.1% Input (driver / input / misc)
  • 5.4% Debugger FIQ (driver / stadiazione / android / fiq_debugger)
  • Emulatore di pesce rosso 3,6% (driver / piattaforma / pesce rosso)
  • 3,4% Verity (driver / md)
  • 11,6% Altro

Differenze rispetto a LTS

Rispetto a LTS (4.14.0), il kernel comune di Android ha 355 modifiche, 32266 inserzioni e 1546 cancellazioni (a partire da febbraio 2018).

inserisci qui la descrizione dell'immagine


Non capisco perché le persone votino ??? Ho scritto la risposta, in 5 secondi ho ottenuto il downvote !! Bello
chankruze il

+1 per la tua risposta. I downvoter drive-by fanno schifo.
iBug

+1. Il tuo è il migliore tra gli altri.
Irfan Latif,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.