Какво е ядрото? Ако прекарвате каквото и да е време в четене на форуми, блогове, публикации с инструкции или онлайн дискусии за Android, скоро ще чуете хората да говорят за ядрото. Ядрото не е нещо уникално за Android - iOS и MacOS имат такъв, Windows има такъв, QNX на BlackBerry има такъв, всъщност всички операционни системи на високо ниво имат такъв. Тази, която ни интересува, е Linux, тъй като тя е тази, която Android използва. Нека се опитаме да разбием какво е и какво прави.
Устройствата с Android използват ядрото на Linux, залагайте, че всеки телефон използва своя собствена версия на него. Поддръжниците на ядрото на Linux поддържат всичко подредено и достъпно, сътрудниците (като Google) добавят или променят нещата, за да отговорят по-добре на техните нужди, а хората, които правят хардуера, също да допринесат, защото те трябва да разработят хардуерни драйвери за частите, които използват за версия на ядрото, което използват. Ето защо отнема известно време независимите разработчици и хакери на Android да приставят нови версии на по-стари устройства и да работят всичко. Драйверите, написани да работят с една версия на ядрото за телефон, може да не работят с различна версия на софтуера на същия телефон. И това е важно, защото една от основните функции на ядрото е да контролира хардуера. Това е много изходен код, с повече опции, докато го изграждате, отколкото можете да си представите, но в крайна сметка това е само посредникът между хардуера и софтуера.
Когато софтуерът се нуждае от хардуера, за да направи нещо, той изпраща заявка до ядрото. И когато казваме нещо, имаме предвид всичко. От яркостта на екрана, до нивото на силата на звука, до иницииране на разговор през радиото, дори това, което е изтеглено на дисплея, в крайна сметка се контролира от ядрото. Например - когато докоснете бутона за търсене на телефона си, казвате на софтуера да отвори приложението за търсене. Случва се, че сте докоснали определена точка на дигитайзера, която казва на софтуера, че сте докоснали екрана по тези координати. Софтуерът знае, че когато се докосне точно това място, диалоговият прозорец за търсене се очаква да се отвори. Ядрото е това, което казва на дигитайзера да търси (или слуша, събития се "слушат") за докосвания, помага да разбере къде сте докоснали и казва на системата, която сте го докоснали. От своя страна, когато системата получи докосване в определена точка от ядрото (чрез драйвера), тя знае какво да нарисува на вашия екран. И хардуерът, и софтуерът комуникират по два начина с ядрото и така вашият телефон знае кога да направи нещо. Входът от едната страна се изпраща като изход от другата, независимо дали играете Angry Birds или се свързвате с Bluetooth на колата си.
Звучи сложно и е така. Но това е и доста стандартна компютърна логика - има някакво действие, генерирано за всяко събитие и в зависимост от това действие се случват нещата с работещия софтуер. Без ядрото да приема и изпраща информация, разработчиците ще трябва да напишат код за всяко едно събитие за всеки отделен хардуер на вашето устройство. С ядрото, всичко, което трябва да правят, е да комуникират с него чрез API на системната система на Android, а хардуерните разработчици трябва само да направят хардуера на устройството да комуникира с ядрото. Хубавото е, че не е нужно да знаете точно как или защо ядрото прави това, което прави, само разбирането, че това е преминаването между софтуер и хардуер, ви дава доста добро разбиране на случващото се под стъклото.
По някакъв начин дава напълно нов поглед към онези, които стоят по цяла нощ, за да работят върху ядра за вашия телефон, нали?