Hvad er en kerne? Hvis du bruger nogen tid på at læse Android-fora, blogs, how-to-indlæg eller online-diskussion, vil du snart høre folk tale om kernen. En kerne er ikke noget unikt for Android - iOS og MacOS har en, Windows har en, BlackBerrys QNX har en, faktisk har alle operativsystemer på højt niveau en. Den, vi er interesseret i, er Linux, da det er den, Android bruger. Lad os prøve at nedbryde, hvad det er, og hvad det gør.
Android-enheder bruger Linux-kernen, ved at enhver telefon bruger deres egen version af den. Linux-kernelvedligeholdere holder alt ryddig og tilgængeligt, bidragydere (som Google) tilføjer eller ændrer ting for bedre at imødekomme deres behov, og de mennesker, der får hardwaren, bidrager også, fordi de er nødt til at udvikle hardwaredrivere til de dele, de bruger til kerneversion, de bruger. Derfor tager det et stykke tid for uafhængige Android-udviklere og hackere at port nye versioner til ældre enheder og få alt til at fungere. Drivere, der er skrevet til at arbejde med en version af kernen til en telefon, arbejder muligvis ikke med en anden version af software på den samme telefon. Og det er vigtigt, fordi en af kernens hovedfunktioner er at kontrollere hardwaren. Det er en hel masse kildekode, med flere muligheder, mens du bygger den, end du kan forestille dig, men i sidste ende er det bare mellemmanden mellem hardware og software.
Når software har brug for hardwaren for at gøre noget, sender den en anmodning til kernen. Og når vi siger noget, mener vi noget. Fra skærmens lysstyrke, til lydstyrkeniveauet, til at starte et opkald gennem radioen, kontrolleres selv det, der tegnes på skærmen, i sidste ende af kernen. For eksempel - når du trykker på søgeknappen på din telefon, beder du softwaren om at åbne søgeprogrammet. Hvad der sker er, at du rørte ved et bestemt punkt på digitalisatoren, der fortæller den software, at du har rørt ved skærmen ved disse koordinater. Softwaren ved, at når det pågældende sted er berørt, skal søgedialogen åbnes. Kernen er det, der fortæller digitalisereren at kigge (eller lytte, begivenheder "lyttes" til) for berøring, hjælper med at finde ud af, hvor du rørte ved, og fortæller det system, du berørte den. Når systemet på sin side modtager en berøringshændelse på et bestemt punkt fra kernen (gennem driveren) ved det, hvad de skal tegne på din skærm. Både hardware og softwaren kommunikerer begge måder med kernen, og det er sådan, din telefon ved, hvornår man skal gøre noget. Input fra den ene side sendes som output til den anden, uanset om det er du spiller Angry Birds eller tilslutter til din bils Bluetooth.
Det lyder kompliceret, og det er det. Men det er også temmelig standard computerlogik - der er en handling, der er genereret til en hvilken som helst begivenhed, og afhængigt af denne handling sker der ting med den kørende software. Uden kernen til at acceptere og sende information, ville udviklere skulle skrive kode for hver enkelt begivenhed for hvert enkelt stykke hardware på din enhed. Med kernen er det eneste, de skal gøre, at kommunikere med det via Android-system-API'erne, og hardwareudviklere skal kun få enhedshardwaren til at kommunikere med kernen. Den gode ting er, at du ikke behøver at vide nøjagtigt, hvordan eller hvorfor kernen gør, hvad den gør, bare at forstå, at det er mellemrummet fra software til hardware giver dig et ret godt greb om, hvad der sker under glasset.
En slags giver et helt nyt syn på de stipendiater, der opholder sig hele natten for at arbejde på kerner til din telefon, ikke sandt?