Uvod v operacijski sistem Android

Operacijski sistem Android je odprtokodni sistem. Mnogi pravijo, da gre za Linux, vendar to ni povsem res. Čeprav ima Android jedra, ki so podobna Linuxu, je to edino, kar je podobno. Danes si bomo podrobneje ogledali notranjosti operacijskega sistema Android, ki so procesi, okvir in druge podobne strukture. Začnimo torej že od samih osnov in poglejmo do notranjega korena operacijskega sistema Android.

Po izdaji iPhone in Windows Lumia Series, tj telefonov, povezanih z Microsoft Windows, je Google želel storiti enako. Želeli pa so nekaj, kar bi lahko bilo odprtokodno. Glavni razlog za to je bil, da bi lahko kdor koli odkril napake, mu lahko spreminjal kakršne koli spremembe. Potem je prišla ideja o Linuxu. Linux je popolnoma odprtokodni operacijski sistem in ga široko sprejema skupnost po vsem svetu. Je eden tistih operacijskih sistemov, ki se uporablja še bolj kot Windows ali Mac OSX. Poleg tega ima Linux zmožnost zagnati skoraj vse druge stvari, ki jih je mogoče zagnati na Mac ali Windows. Tako se je Google odločil, da bo razvil operacijski sistem za mobilni telefon z enako osnovno notranjo lupino kot pri Linuxu, tako da je združljiv s skoraj vsem, zunanja lupina pa bi bila razvita kot, kdaj in tudi kako je potrebno.

Operacijski sistem Android kot projekt odprtega koda (AOSP)

Android ima možnost svobodnega spreminjanja, izumljanja in izvajanja lastnih gonilnikov naprav in funkcij. Zdaj je treba govoriti o petih različnih plasteh operacijskega sistema Android. Sledi:

Kot lahko vidite na zgornji sliki, je prvi sloj Application Framework, drugi je Binder IPC Proxies, tretji je sestavljen iz sistemskih storitev Android, četrti je HAL ali v celotnem obrazcu je Hardware Abstraction Layer in zadnji ker je Linux jedro. Kot sem že povedal, lahko vidite, da je edini del Linuxa, ki ga sestavlja operacijski sistem Android, Linux jedro. Zdaj pa si oglejmo vse po vrsti.

Android Application Framework

Ta programski okvir uporabljajo razvijalci aplikacij za Android. Ta del Androida ima vsaj nekaj s strojno plastjo. Aplikacije za Android so programirane v jeziku Java. Po programiranju aplikacije orodja Android SDK pomagajo pri zbiranju podatkov in datotek z viri, kot so datoteke XML, datoteke z jarki, datoteke manifestov in druge slike in stvari v en sam arhivski paket s pripono '.apk'. To apk datoteko lahko uporabite za namestitev aplikacije s samo enim klikom na naprave Android. Ker se operacijski sistem Android obnaša kot okolje Linux, je tudi tu vedenje aplikacij enako. Vsaka aplikacija velja za ločenega uporabnika od druge in deluje v svojem navideznem stroju. Zaradi tega je programirana koda aplikacije izolirana in tudi preprečuje, da bi se okužil od drugih, razen če je to izrecno navedeno. Vsaka druga aplikacija ima svoj USER ID in vsak drugi postopek ima svoj virtualni stroj.

Okvir aplikacij za Android deluje na načelu najmanj ugodnosti. Načelo najnižjih privilegijev pomeni, da vsakič, ko je treba zagnati novo aplikacijo, vendar ni na voljo pomnilnika, bo sistem Android samodejno zapustil staro aplikacijo, ki je ni potrebno zagnati v ozadju. To je eden najboljših delov varnosti operacijskega sistema Android. To načelo omogoča, da ima vsaka aplikacija samo tisti dostop, ki je potreben za svoje delo. Aplikacija torej ne more dobiti dovoljenja za tisto, kar ni namenjeno. To pa ustvarja zelo varno okolje znotraj samega operacijskega sistema Android.

Binder IPC je znan kot Binder medprocesna komunikacija. Ta vmesnik programerju omogoča, da vloži aplikacijo za komunikacijo z drugimi aplikacijami. Pogosteje ne komunicirajo aplikacije, ampak procesi. Binder IPC pomaga zagnati več procesov hkrati na hkratni ravni. Izvedba veziva se izvaja prek jedra operacijskega sistema Android. Zdaj so se pojavila vprašanja, zakaj mora vezivo ostati v jedru in zakaj ne more teči iz mehanizmov IPC Linuxa? Glavni razlog za to je, ker se vezivo izogne ​​uporabi nepotrebne dodelitve prostora za razliko od drugih mehanizmov IPC v sistemu Linux. Če ste že slišali za izraz "magija v pythonu", bi to razvijalcu aplikacij zdelo Binder IPC, saj je pred njimi popolnoma skrit in preprosto deluje, za razliko od ogrodja na visoki ravni, kjer morate to izrecno izvesti. To dejansko omogoča, da okvir na visoki ravni komunicira s storitvami operacijskega sistema android.

Sistemske storitve operacijskega sistema Android

Storitev je sestavljen del kode, ki dolgo deluje v ozadju androidnega operacijskega sistema, ne da bi dajal noben vmesnik. Vsaka aplikacija, morda uporabnik ali sistem, lahko začne storitev, vendar bo še naprej delovala v ozadju, tudi če je aplikacija zaprta. Vendar obstajata dve vrsti storitev:

Začete storitve

Storitve, ki se začnejo, se običajno začnejo, ko jih pokliče aplikacija. Vendar pa zagnana vrsta storitve ponavadi opravi samo eno operacijo in ne vrne ničesar.

Povezane storitve

Omejene storitve ponujajo vmesnik za povezavo med strankami in strežnikom. Povezana storitev teče, dokler se aplikacija aplikacije foreground ne zažene, nato pa se ustavi, ko je aktivnost aplikacije uničena.

Sistemske storitve android zagotavljajo potrebne informacije uporabniškim aplikacijam, da lahko pravilno delujejo. In te komunikacije med sistemskimi storitvami in uporabniškimi aplikacijami potekajo s pomočjo Binder IPC iz jedra. Zdaj bo morda presenetilo, vendar niso vse aplikacije v sistemu Android napisane na Javi. Nekatere od njih so napisane v C in C ++. Tiste aplikacije, ki morajo biti v tesnem stiku s strojno opremo, so napisane v C in C ++. Glavni razlog za to je, ker morajo biti sistemske storitve večino časa v stalnem stiku s strojno opremo. Zaradi tega je pomembno, da je sestavljeni del kode izjemno hiter. Ko gre za pospeševanje strojne opreme in visoke zmogljivosti, je C veliko hitrejši kot Java ali kateri koli drug jezik tam.

Storitve strojne opreme, ki so v stalni uporabi, na primer: Senzorji bližine, merilnik pospeška ali zaslon na dotik morajo biti napisani v C. Druga strojna oprema, na primer Kamera ali zvok, večinoma uporablja klice JNI. Če kdaj opazite, bodo zasloni na dotik vedno hitrejši kot zagon kamere ali predvajanje skladbe prek glasbenega predvajalnika.

Ko ustvarjate sistemsko storitev, upoštevajte, da se storitve ponavadi izvajajo v glavnem procesu in ne ustvari ločenega procesa. Skratka, če bo vaša koda opravila nekaj intenzivnega dela CPU in GPU, na primer igre visoke ločljivosti, potem raje ustvarite nove niti v isti storitvi; V nasprotnem primeru bo vedno velika možnost, da se odpre pogovorno okno "App se ne odziva".

Priporočeni tečaji

  • Izobraževanje o varnosti IT
  • Popolni tečaj Ruby on Rails
  • Strokovno CSS usposabljanje
  • Program na HTML5 in CSS3

Layer Abstraction Hardware

HAL ali Hardware Abstraction Layer je zasnovan posebej za prodajalce. Razvijalci aplikacij imajo tukaj malo ali skoraj ničesar. Ta plast pomaga vstaviti funkcionalnost brez sprememb v sistemu. Vsak drugi sistem ima drugače zasnovan HAL, saj je narejen za napravo. HAL je sestavljen iz dveh značilnih struktur: Modula in Naprave.

Struktura modula v HAL je shranjena kot knjižnica v skupni rabi v .so formatu, ki je sestavljen iz osnovnih metapodatkov, kot so številka različice, avtor, ki je modul oblikoval in podobne stvari. Struktura naprave je dejanska strojna oprema izdelka. Podobno kot v modulu, vendar struktura naprave določa bolj obsežno različico splošnih informacij o strojni opremi, ki vsebuje kazalce in druge podobne stvari, ki so posebne za vsako strojno opremo.

V Linuxu aplikacije komunicirajo z osnovno strojno opremo prek sistemskih klicev. Toda v operacijskem sistemu Android aplikacije komunicirajo s strojno opremo prek Java API-jev.

Linux Kernel

Sestavljanje Linuxovega jedra za operacijski sistem Android je podobno kot pri sestavljanju osnovnega operacijskega sistema Linux. Razlika je le v tem, da je različica Android malo naprednejša od različice Linuxa. Glavni vzrok za to je, da je androidno jedro sestavljeno iz dodatnih funkcij, kot so budilke, dvakrat tapnite za odklepanje in druge podobne funkcije, vgrajene v mobilno operacijsko napravo. Funkcije, kot je wakelock, so pomembne, ker bo jedro delovalo na prenosni napravi in ​​mora biti nekoliko bolj agresivno pri upravljanju pomnilnika in baterije; za razliko od osnovnega Linuxa, kjer upravljanje z energijo ni problem. Te dodatne zahteve so v jedru in ne v sistemu, ker te stvari ne bi smele vplivati ​​na vgrajene gonilnike.

Kadar koli slišite osebo, ki pravi "svoj Linux", ponavadi pomeni jedro, saj je najbolj osnovni še vedno najpomembnejši del katerega koli operacijskega sistema. Glavni razlog, zakaj android temelji na Linuxovem jedru, je njegov odprtokodni vir. Vsakdo lahko nadaljuje in spremeni jedro Linuxa brez omejitev strojne opreme ali celo kakršnih koli težav z licenčninami.

Razlika med Linuxom in Androidom

Zdaj smo končno dosegli najbolj zmedeno fazo tega bloga: Linux proti Androidu. Ljudje android običajno obravnavajo kot distribucijo Linuxa, vendar bi rekel, da imajo le 50% prav. Kadar koli se operacijski sistem android zažene, v bistvu naloži jedro kot katera koli druga distribucija Linuxa, preostala programska oprema pa je popolnoma drugačna kot pri Linuxu. Aplikacije za Linux se ne bodo izvajale na androidu in tudi obratno, razen če so sestavljene v chroot okolju. Knjižnice, ki so značilne za distribucijo Linux in Android, se med seboj popolnoma razlikujejo. V bistvu ne morete dobiti dostopa do korenskega terminala v Androidu, kot v primeru Linuxa. To je glavni razlog, zakaj ljudje po ukoreninjenju običajno namestijo Busybox, SuperSU in njegove binarne datoteke, tako da imajo podrobnejši dostop do jedra in lupine v ukazni vrstici. Pri Androidu ni privzete lupine, vendar jo lahko dobite tako, da v google play store namestite terminalski emulator. Terminalni emulator izgleda tako:

Runtime android deluje na virtualnem stroju Dalvik. Ta Dalvik VM je pravzaprav tolmač za programski jezik Java. Celoten čas delovanja Android je napisan na Javi v Androidu, in ker so vse aplikacije androida napisane na Javi, postane aplikacija veliko lažja in gladka za zagon v virtualnem okolju. In ker so vse aplikacije in celo čas izvajanja zapisani v Javi, vsakemu razvijalcu postane veliko lažje, da prilagodi vsak drug delček operacijskega sistema Android. Android je bil ponavadi zasnovan kot en sam uporabniški operacijski sistem (za razliko od lizike in marshmallow, kjer je lahko več uporabnikov.) Da bi to poenostavil, naj to postavim v to obliko. Programi za Android niso na koncu nič drugega kot procesi Linuxa in tako ponavadi delujejo. In ker sem že zgoraj povedal, da ima vsaka aplikacija svoj postopek, jedro lažje ustvari ločen UID za vsak postopek in brez dodatnih naporov ravna z datotekami in pomnilnikom aplikacij.

To je dejansko več kot osnove operacijskega sistema Android, ki sem jih omenil zgoraj. Android ima osrednji postopek, znan kot "zigota", in se odlikuje od tega, kar počne. Ta postopek se dejansko začne z inicializacijskimi ukazi, ko se zažene android. Tu se ne bom spuščala v podrobnosti, vendar mislim, da so osnove operacijskega sistema Android pravzaprav dovolj, da začnete uporabljati android. Če želite dobiti več informacij, lahko dejansko obiščete source.android.com in developers.android.com, ki je uradno spletno mesto google za vsako posodobitev za Android.

Priporočeni članki

Tukaj je nekaj člankov, ki vam bodo pomagali do podrobnosti o operacijskem sistemu Android, zato samo pojdite po povezavi.

  1. HTML5 vs Flash - kako se razlikujejo
  2. Najboljših 8 uporabnih aplikacij Office Suite za vaš Android
  3. Top 5 brezplačnih Android emulatorjev za PC
  4. Android Intervju Vprašanja - Top 10 koristnih vprašanj
  5. Kariera v razvoju Android
  6. Najboljših 33 razlik med iPhone in Android