Uvod u operativni sustav Android

Operacijski sustav Android otvoreni je sustav. Mnogi ljudi kažu da je to Linux, ali to nije potpuno istina. Iako Android ima kernele koji su slični Linuxu, to je jedino što je slično. Danas ćemo se dublje pozabaviti unutrašnjostima Android operativnog sustava koji su procesi, okviri i druge slične strukture. Krenimo od samih osnova i pogledajmo unutarnji korijen Android operativnog sustava.

Nakon izdavanja iPhonea i Windows Lumia Series, odnosno telefona sa sustavom Microsoft Windows, Google je to želio učiniti. Ali željeli su nešto što bi moglo biti otvorenog koda. Glavni razlog tome bio je taj da je bilo tko mogao ukloniti ispravljanje pogrešaka, izmijeniti ga bilo koje promjene kako je želio. Tada je došla ideja Linuxa. Linux je potpuno otvoreni izvorni sistem i široko ga je prihvatio zajednica u cijelom svijetu. Jedan je od onih operativnih sustava koji se koristi čak i više nego Windows ili Mac OSX. Osim toga, Linux ima mogućnost pokrenuti gotovo sve druge stvari koje bi se mogle izvoditi na Mac ili Windows. Stoga je Google odlučio razviti operativni sustav za mobitel s istom osnovnom unutarnjom ljuskom kao i Linux, tako da je kompatibilan s gotovo svime, a vanjska ljuska bi se razvijala kao, kada i kako je potrebno.

Android operativni sustav kao projekt otvorenog koda (AOSP)

Android ima mogućnost slobodnog mijenjanja, izuma i implementacije vlastitih upravljačkih programa i značajki uređaja. Sada da govorim, postoji pet različitih slojeva Android operativnog sustava. Ide ovako:

Kao što vidite na gornjoj slici, prvi sloj je Application Framework, drugi je Binder IPC Proxies, treći se sastoji od Android System Services, četvrti je HAL ili puni oblik je Hardverska apstrakcija sloj, a zadnji kao Linux Kernel. Kao što sam već rekao, možete vidjeti da je jedini dio Linuxa od kojeg se sastoji Android operativni sustav Linux Kernel. Pogledajmo sada sve njih jednu po jednu.

Android Application Framework

Ovaj Okvir aplikacija koriste programeri aplikacija za Android. Ovaj dio Androida u najmanju ruku ima bilo što s hardverskim slojem. Android aplikacije programiraju se na jeziku Java. Nakon programiranja aplikacije, Android SDK alati pomažu u sastavljanju podataka i datoteka s resursima, kao što su XML datoteke, jar datoteke, manifestne datoteke i ostale slike i stvari u jedan jedinstveni arhivski paket s nastavkom '.apk'. Ova se apk datoteka može koristiti za instalaciju aplikacije samo jednim klikom na Android uređajima. Sada, budući da se Android operativni sustav ponaša poput Linux okruženja, ponašanje aplikacije isto je ovdje. Svaka se aplikacija smatra zasebnim korisnikom od druge i pokreće se u svom virtualnom stroju. Zbog toga se programirani kôd aplikacije izolira i sprječava da se zarazi od drugih, osim ako nije izričito navedeno. Svaka druga aplikacija ima svoj korisnički ID i svaki drugi proces ima svoj virtualni stroj.

Okvir aplikacija za Android funkcionira na načelu najmanje privilegije. Načelo najmanje privilegije znači da kad god treba pokrenuti novu aplikaciju, ali nema dostupne memorije, sustav Android automatski će napustiti staru aplikaciju koja nije potrebna za pokretanje u pozadini. Ovo je jedan od najboljih dijelova sigurnosti Android operativnog sustava. Ovaj princip omogućuje svakoj aplikaciji samo onaj pristup koji je potreban za obavljanje svog posla. Stoga aplikacija ne može dobiti dozvolu za ono što nije namijenjena. To zauzvrat stvara vrlo sigurno okruženje unutar samog operativnog sustava Android.

Binder IPC poznat je pod nazivom Binder Inter-Process Communication. Ovo sučelje programeru omogućuje izradu aplikacije za komunikaciju s drugim aplikacijama. Češće to nisu aplikacije koje komuniciraju, već procesi. Binder IPC pomaže istodobno pokrenuti više procesa istovremeno. Ta se implementacija veziva provodi kroz kernel operativnog sustava Android. Sad su postavljena pitanja zašto vezivo treba ostati u jezgri i zašto se ne može pokretati iz Linux IPC mehanizama? Glavni razlog za to je zato što vezivo izbjegava nepotrebnu raspodjelu prostora za razliku od drugih IPC mehanizama u Linux sustavu. Ako ste čuli za pojam 'magija u pythonu', onda bi to Binder IPC izgledao programeru aplikacija, budući da je od njih posve skriven, a on jednostavno djeluje, za razliku od okvira na visokoj razini gdje trebate to učiniti eksplicitno. To zapravo omogućuje okvir na visokoj razini za komunikaciju s uslugama operativnog sustava android.

Sistemske usluge operativnog sustava Android

Usluga je sastavljeni dio koda koji se dugo radi u pozadini android operativnog sustava bez davanja sučelja. Svaka aplikacija, možda korisnik ili sustav može pokrenuti uslugu, ali i dalje će se pokrenuti u pozadini, čak i ako je aplikacija zatvorena. Međutim, postoje dvije vrste usluga:

Počele usluge

Usluge koje započinju obično počinju kada ih aplikacija zatraži. Međutim, vrsta započete usluge obično čini samo jednu operaciju i ne vraća ništa.

Vezane usluge

Ograničene usluge nude sučelje odnosa klijenta i poslužitelja. Ograničena usluga traje dok se ne pokrene aplikacija prvog plana, a zatim se zaustavlja nakon što se aktivnost aplikacije uništi.

Sistemske usluge androida korisničkim aplikacijama pružaju potrebne informacije kako bi one pravilno funkcionirale. A ova komunikacija između sistemskih usluga i korisničkih aplikacija vrši se uz pomoć Binder IPC-a iz Kernel-a. Sad će to možda iznenaditi, ali nisu sve aplikacije na Androidu napisane na Javi. Neki od njih su napisani na C i C ++. One aplikacije koje trebaju biti u bliskom kontaktu s hardverom napisane su na C i C ++. Glavni razlog za to je taj što većinu vremena sistemske usluge trebaju biti u stalnom kontaktu s hardverom. Zbog toga je važno da sastavljeni dio koda bude izuzetno brz. A što se tiče hardverskog ubrzanja i visokih performansi, C je mnogo brži od Java ili bilo kojeg drugog jezika vani.

Hardverske usluge koje su u stalnoj upotrebi, na primjer: Senzori blizine, akcelerometar ili dodirni zaslon moraju biti napisani u C. Ostali hardver poput kamere ili zvuka uglavnom koristi JNI pozive. Ako ikad primijetite, dodirni ekrani uvijek će biti brži od pokretanja kamere ili reprodukcije pjesme putem glazbenog playera.

Prilikom stvaranja sistemske usluge, imajte na umu da se usluge obično pokreću u glavnom procesu, a ne stvara zasebni proces. Ukratko, ako će vaš kôd raditi neki CPU i GPU intenzivno raditi, na primjer, igre visoke definicije, tada biste trebali radije stvarati nove niti u istoj usluzi; inače će uvijek postojati velika mogućnost da se dijaloški okvir "App ne odazove".

Preporučeni tečajevi

  • Obuka za informatičku sigurnost
  • Kompletan tečaj Ruby on Rails
  • Profesionalni CSS trening
  • Program na HTML5 i CSS3

Sloj apstrakcije hardvera

HAL ili Hardware Abstraction Layer posebno je dizajniran za dobavljače. Programeri aplikacija ovdje nemaju malo ili gotovo ništa. Ovaj sloj pomaže umetanju funkcionalnosti bez ikakvih modifikacija u sustav. Svaki drugi sustav ima drugačije dizajniran HAL budući da je načinjen za uređaj. HAL se sastoji od dvije tipične strukture: modula i uređaja.

Struktura modula u HAL-u pohranjuje se kao zajednička knjižnica u .so formatu koji se sastoji od osnovnih metapodataka kao što su broj verzije, autor koji je dizajnirao modul i slične stvari. Struktura uređaja stvarni je hardver proizvoda. Slično je s modulom, ali struktura uređaja definira sveobuhvatniju verziju općih podataka o hardveru koji sadrže pokazivače i druge slične stvari koje su posebne za svaki hardver.

U Linuxu aplikacije komuniciraju s osnovnim hardverom putem sistemskih poziva. Ali u Android operativnom sustavu aplikacije komuniciraju s hardverom putem Java API-ja.

Linux Kernel

Kompiranje Linux kernela za operativni sustav Android slično je onome kada ga sastavljate za osnovni Linux operativni sustav. Jedina je razlika što je verzija Androida malo naprednija od verzije Linuxa. Glavni razlog je to što se android kernel sastoji od dodatnih značajki kao što su budilice, dvostruki dodir za otključavanje i druge slične značajke ugrađene u mobilni operativni uređaj. Značajke kao što su wakelock su važne jer će kernel raditi na prijenosnom uređaju i treba biti malo agresivniji u upravljanju memorijom i baterijama; za razliku od osnovnog Linuxa gdje upravljanje energijom nije problem. Ovi dodatni zahtjevi inducirani su u kernelu, a ne u sustavu, jer ove stvari ne bi trebale utjecati na ugrađene upravljačke programe.

Kad god čujete osobu kako kaže "svoj Linux", ona obično misli na kernel jer je to najosnovniji i dalje najvažniji dio bilo kojeg operativnog sustava. Glavni razlog zašto se android temelji na Linux kernelu je taj njegov otvoreni izvor. Svatko može nastaviti i mijenjati Linux kernel bez ikakvih ograničenja hardvera ili čak bilo kakvih problema s licencama.

Razlika između Linuxa i Androida

Dakle, sada smo napokon dosegli najbunjujuću fazu ovog bloga: Linux vs Android. Ljudi obično android smatraju distribucijom Linuxa, ali rekao bih da su u pravu samo 50%. Kad god se android operativni sustav pokrene, on učitava kernel kao i svaka druga distribucija Linuxa, ali ostatak softvera je potpuno drugačiji od onog u Linuxu. Linux aplikacije neće se izvoditi na androidu, niti obrnuto, ukoliko nisu sastavljene u chroot okruženju. Biblioteke prisutne u tipičnom Linux distro i Androidu potpuno su različite. U osnovi ne možete dobiti korijenski terminal u Androidu kao u slučaju Linuxa. To je glavni razlog zašto ljudi obično instaliraju Busybox, SuperSU i njegove binarne datoteke nakon ukorijenjenja kako bi imali detaljniji pristup naredbenog retka jezgri i ljusci. U Androidu nema zadane ljuske, ali možete je dobiti instaliranjem terminalnog emulatora iz Google play trgovine. Terminalni emulator izgleda ovako:

Ručno vrijeme za android radi na virtualnom stroju Dalvik. Ovaj Dalvik VM zapravo je tumač za programski jezik Java. Čitavo vrijeme rada Androida napisano je na Javi u Androidu, a budući da su sve aplikacije Androida napisane na Javi, postaje puno lakše i nesmetanije za pokretanje aplikacija u virtualnom okruženju. A budući da su sve aplikacije, pa čak i vrijeme izvođenja napisane na Javi, svakom programeru postaje mnogo lakše prilagoditi svaki pojedini zalogaj operacijskog sustava Android. Android je obično dizajniran kao operativni sustav za jednog korisnika (za razliku od lizalice i marshmallowa gdje može biti više korisnika.) Kako bih ovo pojednostavio, dopustite mi da ga stavim u ovaj oblik. Android aplikacije nisu ništa drugo doli Linux procesi na kraju i tako oni obično rade. A budući da sam gore rekao da svaka aplikacija ima svoj postupak, kernelu postaje lakše stvoriti zaseban UID za svaki postupak i upravljati aplikacijskim datotekama i memorijom bez dodatnih napora.

To je zapravo više od osnova koje sam gore spomenuo od operativnog sustava Android. Android ima osnovni proces koji je poznat kao "zigota" i koji se izvrsno ističe. Ovaj se postupak zapravo započinje naredbama za inicijalizaciju kada se android pokrene. Ovdje se neću baviti puno detaljima, ali mislim da su osnove Android operativnog sustava zapravo dovoljne da se počnete baviti androidom. Da biste dobili više informacija, zapravo možete posjetiti source.android.com i developers.android.com koja je službena web stranica s Googlea za svako ažuriranje na Androidu.

Preporučeni članci

Evo nekoliko članaka koji će vam pomoći da saznate više detalja o Android operativnom sustavu pa samo prođite vezu.

  1. HTML5 vs Flash - kako se razlikuju
  2. Top 8 korisnih aplikacija Office Suite za vaš Android
  3. Top 5 besplatnih Android emulatora za PC
  4. Android Intervju pitanja - Top 10 korisnih pitanja
  5. Karijere u razvoju Androida
  6. Najbolje 33 razlike iPhonea u odnosu na Android

Kategorija: