Vad är en kärna? Om du ägnar dig åt att läsa Android-forum, bloggar, inlägg eller hur du diskuterar på nätet, kommer du snart att höra folk prata om kärnan. En kärna är inte något unikt för Android - iOS och MacOS har en, Windows har en, BlackBerrys QNX har en, i själva verket har alla operativsystem på hög nivå en. Den vi är intresserad av är Linux, eftersom det är den som Android använder. Låt oss försöka bryta ner vad det är och vad det gör.
Android-enheter använder Linux-kärnan, vad varje telefon använder sin egen version av den. Linux-kärnhållare håller allt snyggt och tillgängligt, bidragsgivare (som Google) lägger till eller ändrar saker för att bättre tillgodose deras behov, och de människor som gör hårdvaran bidrar också, eftersom de måste utveckla hårdvarudrivrutiner för de delar de använder för kärnversion de använder. Det är därför det tar ett tag för oberoende Android-utvecklare och hackare att porta nya versioner till äldre enheter och få allt fungerat. Drivrutiner som är skrivna för att arbeta med en version av kärnan för en telefon kanske inte fungerar med en annan version av programvaran på samma telefon. Och det är viktigt, eftersom en av kärnans huvudfunktioner är att styra hårdvaran. Det är en hel del källkod, med fler alternativ när du bygger den än du kan föreställa dig, men i slutändan är det bara mellanhanden mellan hårdvaran och programvaran.
När programvara behöver hårdvaran för att göra någonting skickar den en begäran till kärnan. Och när vi säger något, menar vi någonting. Från skärmens ljusstyrka, till volymnivån, till att initiera ett samtal via radion, kontrolleras till slut det som dras på skärmen till slut av kärnan. Till exempel - när du trycker på sökknappen på telefonen ber du programvaran att öppna sökprogrammet. Vad som händer är att du rörde vid en viss punkt på digitaliseraren, som säger till programvaran att du har rört på skärmen vid dessa koordinater. Programvaran vet att när den specifika platsen berörs, ska sökdialogen öppnas. Kärnan är det som säger digitaliseraren att leta (eller lyssna, händelser "lyssnas" på) efter beröring, hjälper till att ta reda på var du rörde och berättar för systemet att du rörde den. När systemet i sin tur får en beröringshändelse vid en specifik punkt från kärnan (genom drivrutinen) vet det vad man ska rita på din skärm. Både hårdvaran och programvaran kommunicerar båda sätten med kärnan, och det är så din telefon vet när du ska göra något. Inmatning från ena sidan skickas som utgång till den andra, oavsett om du spelar Angry Birds eller ansluter till bilens Bluetooth.
Det låter komplicerat, och det är det. Men det är också ganska standard datorlogik - det finns en åtgärd av något slag som genereras för varje händelse, och beroende på vilken handling händer saker med den löpande programvaran. Utan kärnan för att acceptera och skicka information, skulle utvecklare behöva skriva kod för varje enskilt evenemang för varje hårdvara på din enhet. Med kärnan, allt de behöver göra är att kommunicera med den via Android-system-API: erna, och hårdvaruutvecklare behöver bara göra enhetshårdvaran kommunicera med kärnan. Det goda är att du inte behöver veta exakt hur eller varför kärnan gör vad den gör, bara att förstå att det är övergången från programvara till hårdvara ger dig ett ganska bra grepp om vad som händer under glaset.
Slags ger en helt ny syn på de stipendiater som stannar uppe hela natten för att arbeta med kärnor för din telefon, eller hur?