Quali sono i principali cambiamenti che Android ha apportato al kernel di Linux?
La cosa interessante del design di Android è quanto poco abbiamo modificato il kernel. La maggior parte dei sistemi embedded su cui ho lavorato ha apportato drastici cambiamenti al kernel, solo per lasciare lo spazio utente da solo - per esempio, un kernel "realtime" pesantemente modificato ma X11 per una GUI.
Android è l'opposto: solo minime modifiche al kernel, ma uno spazio utente completamente diverso da quello di qualsiasi altro sistema Unix. Infatti, lo spazio utente di Android è così diverso da quello di Linux, che si può facilmente dire che Android non è in alcun modo un sistema Linux, tranne che per il kernel.
Ecco una lista concisa delle modifiche che abbiamo fatto al kernel Linux:
- ashmem (Android Shared Memory), un sistema di memoria condivisa basato su file.
- Binder, un sistema di comunicazione inter-processo (IPC) e chiamata di procedura remota (RPC).
- logger, un meccanismo di logging in-kernel ad alta velocità ottimizzato per le scritture.
- Paranoid Networking, un meccanismo per limitare l'I/O di rete a certi processi.
- pmem (Physical Memory), un driver per mappare grandi porzioni di memoria fisica nello spazio utente.
- Viking Killer, un OOM killer sostitutivo che implementa la logica di Android "kill least recently used process" in condizioni di bassa memoria.
- wakelocks, l'unica soluzione di gestione energetica di Android, in cui lo stato predefinito del dispositivo è il sonno ed è richiesta un'azione esplicita (tramite un wakelock) per impedirlo.
E, naturalmente, il solito assortimento di driver, porte per l'architettura ARM, e altro codice di basso livello associato necessario per supportare Android su un dato dispositivo.
Di questa lista, quasi tutti i punti sono stati implementati come driver di dispositivo con poche o nessuna modifica necessaria al codice del kernel. L'unico cambiamento significativo che riguarda il sottosistema è wakelocks.
(Per i curiosi, dalla lista di cui sopra, sono autore di ashmem, logger, e Paranoid Networking.)
Articoli simili
- Cos'è un kernel? Quali sono i vantaggi e gli svantaggi di installare kernel personalizzati sugli smartphone Android?
- Come fare il porting del kernel più recente su un dispositivo Android con il kernel esistente
- Chrome OS è davvero basato sul kernel Linux? Se sì, perché non può eseguire programmi Linux?
- Quali sono i principali cambiamenti che Android ha introdotto nel corso degli anni?