Logo it.androidermagazine.com
Logo it.androidermagazine.com

Cos'è un kernel?

Anonim

Cos'è un kernel? Se passi del tempo a leggere forum, blog, post di istruzioni o discussioni online su Android, sentirai presto le persone parlare del kernel. Un kernel non è qualcosa di unico per Android: iOS e MacOS ne hanno uno, Windows ne ha uno, BlackBerry QNX ne ha uno, infatti tutti i sistemi operativi di alto livello ne hanno uno. Quello a cui siamo interessati è Linux, in quanto è quello utilizzato da Android. Proviamo a scomporre ciò che è e ciò che fa.

I dispositivi Android usano il kernel Linux, scommetto che ogni telefono ne usa la propria versione. I manutentori del kernel Linux mantengono tutto in ordine e disponibile, i collaboratori (come Google) aggiungono o modificano le cose per soddisfare meglio le loro esigenze e anche le persone che contribuiscono all'hardware, perché devono sviluppare driver hardware per le parti che stanno usando per versione del kernel che stanno utilizzando. Questo è il motivo per cui gli sviluppatori e gli hacker Android indipendenti impiegano un po 'di tempo per trasferire nuove versioni su dispositivi più vecchi e far funzionare tutto. I driver scritti per funzionare con una versione del kernel per un telefono potrebbero non funzionare con una versione diversa del software sullo stesso telefono. E questo è importante, perché una delle funzioni principali del kernel è controllare l'hardware. È un sacco di codice sorgente, con più opzioni mentre lo costruisci di quanto tu possa immaginare, ma alla fine è solo l'intermediario tra l'hardware e il software.

Quando il software ha bisogno che l'hardware faccia qualcosa, invia una richiesta al kernel. E quando diciamo qualcosa, intendiamo qualsiasi cosa. Dalla luminosità dello schermo, al livello del volume, all'avvio di una chiamata attraverso la radio, anche ciò che è disegnato sul display è controllato dal kernel. Ad esempio: quando si tocca il pulsante di ricerca sul telefono, si comunica al software di aprire l'applicazione di ricerca. Quello che succede è che hai toccato un certo punto sul digitalizzatore, che dice al software che hai toccato lo schermo a quelle coordinate. Il software sa che quando viene toccato quel particolare punto, la finestra di ricerca dovrebbe aprirsi. Il kernel è ciò che dice al digitalizzatore di cercare (o ascoltare, gli eventi vengono "ascoltati") per i tocchi, aiuta a capire dove hai toccato e dice al sistema che hai toccato. A sua volta, quando il sistema riceve un evento touch in un punto specifico dal kernel (attraverso il driver), sa cosa disegnare sullo schermo. Sia l'hardware che il software comunicano in entrambi i modi con il kernel, ed è così che il tuo telefono sa quando fare qualcosa. L'input da un lato viene inviato come output all'altro, sia che tu stia giocando Angry Birds o che ti colleghi al Bluetooth della tua auto.

Sembra complicato, e lo è. Ma è anche una logica del computer piuttosto standard: c'è un'azione di qualche tipo generata per ogni evento e, a seconda dell'azione, le cose accadono al software in esecuzione. Senza che il kernel accetti e invii informazioni, gli sviluppatori dovrebbero scrivere il codice per ogni singolo evento per ogni singolo componente hardware del dispositivo. Con il kernel, tutto ciò che devono fare è comunicare con esso tramite le API del sistema Android e gli sviluppatori hardware devono solo comunicare l'hardware del dispositivo con il kernel. La cosa buona è che non hai bisogno di sapere esattamente come o perché il kernel fa quello che fa, solo capire che è il passaggio dal software all'hardware ti dà una buona comprensione di ciò che sta accadendo sotto il vetro.

In qualche modo dà una prospettiva completamente nuova verso quei compagni che stanno svegli tutta la notte a lavorare su kernel per il tuo telefono, non è vero?