Android Top teme

Android lekcija: Što je to kernel?


Ako ste redoviti čitatelj blogova/foruma/portala o Android tematici i svim mogućnostima koje "hackiranje" mobitela nudi, svakako ste se susreli i s pojmom – kernel.

U ovom tekstu ćemo ukratko pokušati objasniti značenje te riječi, ali i ostalih pojmova koji se vežu uz nju.

Iako smo u uvodu spomenuli Android, kernel svakako nije usko vezan uz taj operacijski sustav. Osim Androida, kernel imaju i Windowsi, BlackBerry OS, iOS, MacOS – u stvari svaki operacijski sustav više razine. No, u ovom tekstu ćemo se ipak bazirati na Androidovom Linuxu...

Općenito o kernelu i sigurnost


Koliko ste puta dodirnuli ekran svog mobitela? Vjerojatno bezbroj.

Za registraciju dodira svakog od tih bezbroj puta je zaslužan upravo kernel. On cijelo vrijeme rada mobitela motri što se događa s digitizerom, a u slučaju da je detektirao dodir dojavljuje sustavu da se on i dogodio. Nakon toga se se softverska komponenta OS-a brine za iscrtavanje sučelje koje se prikazuje zbog određenog dodira.

Kao što je vidljivo i iz gornjeg primjera, kernel je sastavna komponenta bez koje OS ne bi mogao raditi. Kernel je najniža razina operacijskog sustava, a u suštini predstavlja most između aplikacija i samih računskih operacija koje izvodi hardver uređaja. Zadužen je za upravljanje resursima sustava, za komunikaciju s hardverskim komponentama mobitela i cjelokupnu sigurnost OS-a.



Primjerice – pokretanjem neke Android aplikacije, kernel je zadužen za alociranje adresnog prostora RAM memorije i samim time omogućuje učitavanje aplikacije u memoriju i njezino pokretanje. Nakon pokretanja aplikacije, ona se može nalaziti isključivo u prostoru memorije koji joj je kernel dodijelio. Ovime kernel štiti cjelokupni integritet sustava i omogućuje sigurno izvođenje aplikacija koje imaju odgovarajuće dozvole.

Svi korisnici Android sustava su vjerojatno već nabrojeno puta sami dodijelili ove dozvole i to jednostavnim procesom, kao što je instalacija aplikacije.

U Android OS-u se prije same instalacije prikazuje lista dozvola koja određena aplikacija zahtjeva. Pritiskom OK, odnosno instaliraj, aplikacija se instalira uz omogućavanje pristupa svim dijelovima sustava koji su bili navedeni u listi. Dakle, instalacijom smo aplikaciji omogućili prolazak "kroz" kernel i komunikaciju s hardverskim komponentama mobitela.



Ipak, svjedoci smo pojave prvih virusa i crvi na Android OS-u, pa je pravo pitanje – kako oni mogu štetiti ako se kernel brine o sigurnosti?

Pa...programeri virusa/crva su donekle domišljati, pa su zaobišli sigurnost OS-a tako da im se aplikacije "nakače" na neke koje su već prije instalirane i koje imaju već dodijeljene dozvole na resurse koji su virusima potrebni. Na taj način imaju siguran prolaz do komponenti mobitela zbog kojeg i mogu raditi stvari koje nisu dobre. Zbog toga: čitajte dozvole prilikom instalacije aplikacija, a u slučaju ubrzanijeg razvoja malicioznih aplikacija, jamačno će i antivirusni programi postati hit aplikacije na Androidu.


Apstrakcija


Osim u sigurnosnom aspektu, kernel je izuzetno važan i programerima zbog toga što nudi značajno pojednostavljenje izrade samih aplikacija.

Kao što smo ranije spomenuli, sva komunikacija hardvera i softvera obavlja se upravo preko kernela, odnosno putem njegovog apstrakcijskog sloja.

Ovaj sloj ima "vidljive" samo sigurne pozive određenih funkcija kojima je moguće upravljati hardverom.

Uzmimo na primjer kameru. U potpuno pojednostavljenom slučaju, programer će u kodu svoje aplikacije iz dostupnog API-ja pozvati funkciju "fotografiraj" koja će zadatak fotografiranja slike obavljati jednako na svim modelima mobitela. Samim time programeri se ne moraju baviti specifičnostima određenog uređaja i karakteristikama kamere zahvaljujući apstrakcijskom sloju kernela.

Specifičnosti


Iako smo u uvodu rekli da ćemo se bazirati na Androidovom kernelu, gornji tekst se u principu odnosi na bilo koji OS i njemu pripadajući kernel. No ipak, reći ćemo i nekoliko stvari o samom Androidu.

Android koristi izvedenicu Linux kernela - što znači da kernel koji se nalazi na Android uređajima nije jednak onom na desktop računalima.

Tijekom razvoja Android sustava Google je dodao puno specifičnih stvari u sam kernel koji ga podosta razlikuju od desktop brata.

No, osim Googlea, svakako treba spomenuti i proizvođače mobitela koji ima potpunu slobodu mijenjati bilo koji dio kernela. Iako se oni ipak najviše bave izradom drivera koji omogućuju rad određenog hardverskog dijela mobitela. Tako je svakom novom iteracijom Android OS-a potrebno napraviti novi set drivera koji će omogućiti rad uređaja na novijem OS-u.

U slučaju da posjedujete stariji Android uređaj, koji je primjerice zapeo na Androidu 2.1, sada vam može postati jasnije zbog čega čak i custom ROM-ovi s novijim Androidom ne nude potpunu funkcionalnost uređaja. U custom ROM-u, umjesto proizvođača, zajednica developera mora sama napisati drivere koji rade na novijoj verziji OS-a, ili eventualno portati drivere s nekog drugog uređaja, a to u svakom slučaju predstavlja dosta težak zadatak.

Kao što se iz gornjeg teksta može i zaključiti, kernel je sastavni dio Androida. Olakšava život programerima aplikacija koji ne moraju programirati posebne aplikacije za nebrojeno puno uređaja, a niti posjedovati znanja kako i na koji način kernel radi određenu stvar – već samo pozvati neku od mnogobrojnih ugrađenih funkcija OS-a.

Također i olakšava život proizvođačima hardvera koji nakon izrade hardverske komponente moraju napisati drivere za određeni uređaj, a za samu komunikaciju s ostatkom mobitela se brine kernel.

Sve ovo dovodi do bržeg ritma izdavanja aplikacija, ali i samih novih mobitela, za što će brojni čitatelji reći da možda i nije dobra stvar, ali o toj temi neki drugi put.