Logo nl.androidermagazine.com
Logo nl.androidermagazine.com

Wat is een kernel?

Anonim

Wat is een kernel? Als je tijd besteedt aan het lezen van Android-forums, blogs, how-to posts of online discussie, zul je snel mensen horen praten over de kernel. Een kernel is niet iets unieks voor Android - iOS en MacOS hebben er één, Windows heeft er één, BlackBerry's QNX heeft er één, in feite hebben alle besturingssystemen op hoog niveau er één. We zijn geïnteresseerd in Linux, omdat Android dit gebruikt. Laten we proberen af ​​te breken wat het is en wat het doet.

Android-apparaten gebruiken de Linux-kernel, wedden dat elke telefoon zijn eigen versie ervan gebruikt. Linux-kernelbeheerders houden alles netjes en beschikbaar, bijdragers (zoals Google) voegen dingen toe of wijzigen deze om beter aan hun behoeften te voldoen, en de mensen die de hardware leveren dragen ook bij, omdat ze hardwarestuurprogramma's moeten ontwikkelen voor de onderdelen die ze gebruiken voor de kernelversie die ze gebruiken. Daarom duurt het een tijdje voor onafhankelijke Android-ontwikkelaars en hackers om nieuwe versies naar oudere apparaten te porten en alles werkend te krijgen. Stuurprogramma's die zijn geschreven om met één versie van de kernel voor een telefoon te werken, werken mogelijk niet met een andere softwareversie op dezelfde telefoon. En dat is belangrijk, omdat een van de belangrijkste functies van de kernel is om de hardware te besturen. Het is heel veel broncode, met meer opties tijdens het bouwen dan je je kunt voorstellen, maar uiteindelijk is het gewoon de tussenpersoon tussen de hardware en de software.

Wanneer software de hardware nodig heeft om iets te doen, stuurt het een verzoek naar de kernel. En als we iets zeggen, bedoelen we alles. Van de helderheid van het scherm tot het volumeniveau, tot het initiëren van een oproep via de radio, zelfs wat op het display wordt getekend, wordt uiteindelijk door de kernel geregeld. Als u bijvoorbeeld op de zoekknop op uw telefoon tikt, vertelt u de software om de zoekapplicatie te openen. Wat er gebeurt, is dat je een bepaald punt op de digitizer hebt aangeraakt, wat de software vertelt dat je het scherm op die coördinaten hebt aangeraakt. De software weet dat wanneer die specifieke plek wordt aangeraakt, het zoekvenster wordt geopend. De kernel is wat de digitizer vertelt om te zoeken (of te luisteren, naar gebeurtenissen wordt "geluisterd") voor aanrakingen, helpt te achterhalen waar u hebt aangeraakt en vertelt het systeem dat u het hebt aangeraakt. Op zijn beurt weet het systeem wanneer het een aanraakgebeurtenis op een specifiek punt van de kernel (via de driver) ontvangt, wat het op uw scherm moet tekenen. Zowel de hardware als de software communiceren beide kanten op met de kernel, en zo weet je telefoon wanneer hij iets moet doen. Input van de ene kant wordt verzonden als output naar de andere kant, of je nu Angry Birds speelt of verbinding maakt met de Bluetooth van je auto.

Het klinkt ingewikkeld, en dat is het ook. Maar het is ook vrij standaard computerlogica - er wordt een soort actie gegenereerd voor elke gebeurtenis, en afhankelijk van die actie gebeuren er dingen met de lopende software. Zonder de kernel om informatie te accepteren en te verzenden, zouden ontwikkelaars code moeten schrijven voor elke afzonderlijke gebeurtenis voor elk afzonderlijk stuk hardware in uw apparaat. Met de kernel hoeven ze er alleen maar mee te communiceren via de Android-systeem-API's, en hardware-ontwikkelaars hoeven alleen de hardware van het apparaat met de kernel te laten communiceren. Het goede is dat je niet precies hoeft te weten hoe of waarom de kernel doet wat het doet, alleen maar begrijpen dat het de overgang is tussen software en hardware geeft je een vrij goed begrip van wat er onder het glas gebeurt.

Soort geeft een geheel nieuwe kijk op die kerels die de hele nacht opblijven om aan kernels voor je telefoon te werken, nietwaar?