Android e Linux

Android è un sistema operativo (ma anche una piattaforma) per dispositivi mobili sviluppato da Google.

La presentazione ufficiale del “robottino verde” (simbolo di Android) avvenne il 5 novembre 2007 dalla neonata OHA (Open Handset Alliance), un consorzio di aziende del settore Hi Tech che include Google, produttori di smartphone come HTC e Samsung, operatori di telefonia mobile come Sprint Nextel e T-Mobile, e produttori di microprocessori come Qualcomm e Texas Instruments Incorporated. Il primo dispositivo equipaggiato con Android che venne lanciato sul mercato fu l’HTC Dream, il 22 ottobre del 2008.

In realtà Android è basato sul kernel di Linux; però non viene considerato un un sistema Unix-like o una distribuzione GNU/Linux, bensì una distribuzione embedded Linux, dato che la quasi totalità delle utilità GNU è sostituita da software specifico e rimane quindi solo un kernel Linux ottimizzato per il mondo mobile.

Quanto del kernel di Linux è rimasto nel sistema Android? Robert Love – web engineer in Google ed ex sviluppatore Android – ha dato una risposta su Quora:

La cosa interessante del design di Android è quanto poco abbiamo modificato il kernel. La maggior parte dei sistemi embedded sui quali ho lavorato ha apportato modifiche drastiche nel kernel, soltanto per isolare l’user-space – ad esempio, un kernel “realtime” fortemente modificato ma X11 per l’interfaccia grafica.

Android è il contrario: soltanto modifiche minime al kernel, ma un user-space totalmente diverso da quello di qualsiasi altro sistema Unix. Infatti, l’user-space di Android è completamente differente da quello stock di Linux tanto che si potrebbe affermare che Android non sia un sistema Linux fatta eccezione per il kernel.

Ecco una lista concreta dei cambiamenti che abbiamo apportato al kernel Linux:

  • ashmem (Android Shared Memory), un sistema di memoria condivisa basato su file;
  • Binder, un sistema di comunicazione interprocesso (IPC) e di chiamata a procedura remota (RPC);
  • logger, un rapido meccanismo di logging in-kernel ottimizzato per le scritture;
  • Paranoid Networking, un meccanismo per limitare l’I/O di rete a determinati processi;
  • pmem (Physical Memory), un driver per mappare ampie zone di memoria fisica nell’user-space;
  • Viking Killer, un sostituto di OOM killer che implementa la logica di Android “uccidi il processo utilizzato meno di recente” in condizioni di memoria libera carente;
  • wawelocks, la soluzione unica di gestione energetica di Android, nella quale lo stato predefinito del device è “sleep” ed è necessaria un’azione esplicita (tramite un wakelock) per evitarlo.

E ovviamente il solito assortimento di drivers, i porting per l’architettura ARM ed altro codice a basso livello necessario per supportare Android su qualsiasi device preposto. 

Quasi tutti i punti di questa lista sono stati implementati come driver di periferica, con modifiche al codice core del kernel minime o inesistenti. L’unico cambiamento relativo al sottosistema riguarda i wakelocks.

Lo sviluppo di Android passa attraverso l’Android Open Source Project, un progetto di tipo software libero ad esclusione di diversi firmware non-liberi inclusi per i produttori di dispositivi e delle cosiddette “Apps”. È distribuito sotto i termini della licenza libera Apache 2.0 riservandosi di non-includere software coperto da licenze copyleft.

Ad aprile 2017 Android è il sistema operativo per dispositivi mobili più diffuso al mondo, con una fetta di mercato attestatasi a quota 62,94% sul totale, seguito da iOS con il 33,9%. Nello stesso mese supera anche il marketshare come OS più utilizzato per navigare in rete, superando di fatto il sistema operativo Windows che, fino ad allora, aveva il più alto marketshare al mondo.

Questo post è stato visto 239 volte!

Posted on dicembre 1, 2017 at 9:45 am by amauro · Permalink
In: Android, Cellulari, Linux

Leave a Reply