Úvod do operačného systému Android

Operačný systém Android je systém s otvoreným zdrojom. Mnoho ľudí hovorí, že je to Linux, ale to nie je úplne pravda. Hoci Android má jadrá podobné jadrám Linuxu, je to jediná vec, ktorá je podobná. Dnes sa podrobnejšie pozrieme na vnútornú časť operačného systému Android, ktorý predstavuje procesy, rámec a ďalšie podobné štruktúry. Začnime teda od samotných základov a pozrime sa na vnútorný koreň operačného systému Android.

Po vydaní telefónov iPhone a Windows Lumia Series, tj telefónov súvisiacich so systémom Microsoft Windows, Google chcel urobiť to isté. Chceli však niečo, čo by mohlo byť otvoreným zdrojom. Hlavným dôvodom bolo to, že to mohol niekto odladiť, upraviť akékoľvek zmeny, ako chceli. Potom prišla myšlienka Linuxu. Linux je plne open-source operačný systém a je všeobecne akceptovaný komunitou po celom svete. Je to jeden z tých operačných systémov, ktorý sa používa ešte viac ako Windows alebo Mac OSX. Okrem toho má Linux schopnosť spúšťať takmer všetky ostatné veci, ktoré by sa dali spustiť na počítačoch Mac alebo Windows. Preto sa spoločnosť Google rozhodla vyvinúť operačný systém pre mobilný telefón s rovnakým základným vnútorným panelom ako v systéme Linux, takže je kompatibilný s takmer všetkým a vonkajší obal by sa vyvinul tak, ako je to potrebné, kedy a ako je to potrebné.

Operačný systém Android ako projekt s otvoreným zdrojom (AOSP)

Android má možnosť voľne upravovať, vymýšľať a implementovať naše vlastné ovládače a funkcie zariadení. Teraz sa hovorí o piatich rôznych vrstvách operačného systému Android. Vyzerá to takto:

Ako vidíte na obrázku vyššie, prvá vrstva je aplikačný rámec, druhou je Binder IPC Proxies, tretia pozostáva zo systémových služieb Android, štvrtá je HAL alebo celá forma je hardvérová abstrakčná vrstva a posledná byť jadrom Linuxu. Teraz, ako som už povedal, vidíte, že jediná časť operačného systému Linux, z ktorej pozostáva operačný systém Android, je jadro Linux. Teraz sa pozrime na všetky z nich jeden po druhom.

Aplikačný rámec pre Android

Túto aplikáciu používajú vývojári aplikácií pre Android. Táto časť systému Android má prinajmenšom čo robiť s hardvérovou vrstvou. Aplikácie pre Android sú programované v jazyku Java. Po programovaní aplikácie pomáhajú nástroje Android SDK zostaviť údaje a súbory zdrojov, ako sú napríklad súbory XML, súbory jar, súbory manifestov a ďalšie obrázky a veci, do jedného archívneho balíka s príponou „.apk“. Tento súbor APK možno použiť na inštaláciu aplikácie jediným kliknutím na zariadenia Android. Teraz, keď sa operačný systém Android správa ako prostredie Linux, je tu aj správanie aplikácie rovnaké. Každá aplikácia sa považuje za samostatného používateľa od druhej a beží vo vlastnom virtuálnom počítači. Vďaka tomu je naprogramovaný kód aplikácie izolovaný a tiež to zabráni tomu, aby bol infikovaný od ostatných, pokiaľ to nie je výslovne uvedené. Každá iná aplikácia má svoje vlastné USER ID a každý ďalší proces má svoj vlastný virtuálny stroj.

Aplikačný rámec pre Android funguje na princípe najmenšej výhody. Princíp najmenších výhod znamená, že vždy, keď je potrebné spustiť novú aplikáciu, ale nie je k dispozícii žiadna pamäť, systém Android automaticky ukončí starú aplikáciu, ktorú nie je potrebné spúšťať na pozadí. Toto je jedna z najlepších častí zabezpečenia operačného systému Android. Táto zásada umožňuje, aby každá aplikácia mala iba taký prístup, ktorý je potrebný na vykonávanie jej práce. Aplikácia teda nemôže získať povolenie na to, čo nie je určené. To zasa vytvára veľmi bezpečné prostredie v samotnom operačnom systéme Android.

Binder IPC je známy ako Binder Inter-Process Communication. Toto rozhranie umožňuje programátorovi vytvoriť aplikáciu na komunikáciu s inými aplikáciami. Častejšie to nie sú aplikácie, ktoré komunikujú, sú to procesy. Binder IPC pomáha spustiť viacero procesov súčasne na súčasnej úrovni. Táto implementácia spojiva je získavaná prostredníctvom jadra operačného systému Android. Teraz sa objavili otázky, prečo musí spojivo zostať v jadre a prečo nemôže bežať z Linux IPC mechanizmov? Hlavným dôvodom je to, že spojivo sa vyhýba použitiu zbytočného pridelenia priestoru na rozdiel od iných mechanizmov IPC v systéme Linux. Ak ste už počuli o výraze „mágia v pythone“, potom by Binder IPC vyzeral vývojárovi aplikácie, pretože je pred nimi úplne skrytý a zdá sa, že na rozdiel od rámca na vysokej úrovni funguje jednoducho je potrebné, aby to fungovalo explicitne. Toto vlastne umožňuje rámcu vysokej úrovne komunikovať so službami operačného systému Android.

Systémové služby operačného systému Android

Služba je kompilovaný kus kódu, ktorý beží dlhú dobu na pozadí operačného systému Android bez poskytnutia akéhokoľvek rozhrania. Službu môže spustiť ľubovoľná aplikácia, či už ide o používateľa alebo systém, ale stále bude bežať na pozadí aj po zatvorení aplikácie. Existujú však dva druhy služieb:

Spustené služby

Spustené služby sa zvyčajne spustia, keď si to aplikácia vyžaduje. Typ začatej služby však spravidla vykonáva iba jednu operáciu a nevracia nič.

Viazané služby

Ohraničené služby ponúkajú rozhranie vzťahov medzi klientom a serverom. Viazaná služba sa spúšťa až do spustenia aplikácie v popredí a potom sa zastaví, keď sa zruší aplikačná aktivita.

Systémové služby systému Android poskytujú používateľom potrebné informácie, aby mohli správne fungovať. A táto komunikácia medzi systémovými službami a užívateľskými aplikáciami sa uskutočňuje pomocou Binder IPC z jadra. Teraz to môže prekvapiť, ale nie všetky aplikácie v systéme Android sú napísané v jazyku Java. Niektoré z nich sú napísané v C a C ++. Aplikácie, ktoré musia byť v priamom kontakte s hardvérom, sú napísané v C a C ++. Hlavným dôvodom je to, že väčšinu času musia byť systémové služby neustále v kontakte s hardvérom. Preto je dôležité, aby bol kompilovaný kus kódu extrémne rýchly. A pokiaľ ide o hardvérovú akceleráciu a vysoký výkon, C je omnoho rýchlejšie ako Java alebo akýkoľvek iný jazyk.

Hardvérové ​​služby, ktoré sa neustále používajú, napríklad: snímače priblíženia, akcelerometer alebo dotyková obrazovka, musia byť napísané v jazyku C. Iný hardvér, napríklad fotoaparát alebo zvuk, väčšinou využíva hovory JNI. Ak si teda niekedy všimnete, dotykové obrazovky budú vždy rýchlejšie ako spustenie fotoaparátu alebo hranie piesní pomocou hudobného prehrávača.

Pri vytváraní systémovej služby poznamenajte, že služby majú tendenciu bežať v hlavnom procese a nevytvára samostatný proces. Stručne povedané, ak váš kód bude vykonávať prácu náročnú na procesor a GPU, napríklad na hry s vysokým rozlíšením, mali by ste uprednostniť vytvorenie nových vlákien v tej istej službe; v opačnom prípade bude vždy vysoká šanca na dialógové okno „Aplikácia neodpovedá“.

Odporúčané kurzy

  • Školenie o certifikácii zabezpečenia IT
  • Kompletný kurz Ruby on Rails
  • Profesionálne školenie CSS
  • Programujte na HTML5 a CSS3

Hardvérová abstrakčná vrstva

Vrstva HAL alebo Hardware Abstraction Layer je špeciálne navrhnutá pre dodávateľov. Vývojári aplikácií tu nemajú čo robiť alebo majú takmer nič. Táto vrstva pomáha vkladať funkcie bez akýchkoľvek úprav systému. Každý iný systém má inak navrhnutú HAL, pretože sú vyrobené pre konkrétne zariadenie. HAL pozostáva z dvoch typických štruktúr: modulu a zariadenia.

Štruktúra modulu v HAL je uložená ako zdieľaná knižnica vo formáte .so, ktorý pozostáva zo základných metadát, ako je číslo verzie, autor, ktorý navrhol modul a podobné veci. Štruktúra zariadenia je skutočný hardvér produktu. Podobne ako v prípade modulu, ale štruktúra zariadenia definuje komplexnejšiu verziu všeobecných informácií o hardvéri, ktorá obsahuje ukazovatele a ďalšie podobné veci, ktoré sú špecifické pre každý hardvér.

V systéme Linux aplikácie komunikujú so základným hardvérom prostredníctvom systémových volaní. V operačnom systéme Android však aplikácie komunikujú s hardvérom prostredníctvom rozhrania Java API.

Linuxové jadro

Kompilácia jadra systému Linux pre operačný systém Android je podobná ako kompilácia jadra pre operačný systém Linux. Jediný rozdiel spočíva v tom, že verzia systému Android je o niečo vyspelejšia ako verzia systému Linux. Hlavným dôvodom, prečo je jadro systému Android, sú ďalšie funkcie, ako sú wakeloky, odomknutie dvojitým klepnutím a ďalšie podobné funkcie zabudované do mobilného operačného zariadenia. Funkcie ako wakelock sú dôležité, pretože jadro bude pracovať na prenosnom zariadení a musí byť trochu agresívnejšie v správe pamäte a batérie; na rozdiel od základného Linuxu, kde nie je problém so správou energie. Tieto dodatočné požiadavky sú vyvolané skôr v jadre ako v systéme, pretože tieto veci by nemali mať vplyv na zabudované ovládače.

Kedykoľvek budete počuť osobu, ktorá hovorí „jej Linux“, zvyčajne to znamená jadro, pretože je to najzákladnejšia stále najdôležitejšia súčasť operačného systému. Hlavným dôvodom, prečo je android založený na jadre Linuxu, je jeho otvorený zdroj. Ktokoľvek môže pokračovať a upravovať jadro systému Linux bez obmedzenia hardvéru alebo problémov s licenčnými poplatkami.

Rozdiel medzi systémom Linux a Android

Takže teraz sme konečne dosiahli naj mätúcejšiu fázu tohto blogu: Linux verzus Android. Ľudia zvyčajne považujú android za distribúciu Linuxu, ale povedal by som, že majú iba 50% pravdu. Kedykoľvek sa operačný systém Android spustí, v podstate načíta jadro ako akákoľvek iná distribúcia systému Linux, ale zvyšok softvéru je úplne odlišný od systému Linux. Linuxové aplikácie sa nebudú spúšťať v systéme Android a naopak, ak nie sú zostavené v prostredí chroot. Knižnice prítomné v typickom distro Linuxu a Android sú od seba úplne odlišné. V podstate nemôžete získať prístup ku koreňovému terminálu v systéme Android ako v prípade systému Linux. Toto je hlavný dôvod, prečo ľudia zvyčajne inštalujú Busybox, SuperSU a jeho binárne súbory po zakorenení, aby mali podrobnejší prístup k jadru a shellu cez príkazový riadok. V systéme Android neexistuje žiadna predvolená schránka, môžete ju však získať nainštalovaním emulátora terminálov z obchodu Google Play. Emulátor terminálu vyzerá takto:

Aplikácia runtime pre Android funguje na Dalvik Virtual Machine. Tento Dalvik VM je v skutočnosti tlmočníkom programovacieho jazyka Java. Celá runtime platforma pre Android je napísaná v jazyku Java v systéme Android a keďže všetky aplikácie systému Android sú napísané v jazyku Java, pre aplikácie bežiace vo virtuálnom prostredí je oveľa jednoduchšie a hladšie. A keďže všetky aplikácie a dokonca aj modul runtime je napísaný v jazyku Java, pre vývojárov je omnoho ľahšie prispôsobiť si každý druhý bit operačného systému Android. Android bol zvyčajne navrhnutý tak, aby bol operačným systémom pre jedného používateľa (na rozdiel od lízatka a ibišteka, kde môže byť viac používateľov.) Aby som to skutočne zjednodušil, dovoľte mi ho uviesť v tejto podobe. Aplikácie pre Android nie sú na konci nič iné ako procesy v systéme Linux a takto fungujú. A keďže som uviedol vyššie, že každá aplikácia má svoj vlastný proces, pre jadro je jednoduchšie vytvoriť samostatný identifikátor UID pre každý proces a spracovávať súbory aplikácií a pamäť bez dodatočného úsilia.

V skutočnosti je toho viac ako základy operačného systému Android, ktoré som spomenul vyššie. Android má základný proces, ktorý je známy ako „Zygote“ a vyniká tým, čo robí. Tento proces sa v skutočnosti začína inicializačnými príkazmi, keď sa systém Android spustí. Nebudem sa tu zaoberať podrobnosťami, ale myslím si, že základy operačného systému Android sú pre vás skutočne dostatočné na to, aby ste mohli začať s Androidom. Ak chcete získať viac informácií, môžete v skutočnosti navštíviť stránku source.android.com a developers.android.com, ktorá je oficiálnou webovou stránkou spoločnosti Google, ktorá slúži na všetky aktualizácie systému Android.

Odporúčané články

Tu je niekoľko článkov, ktoré vám pomôžu získať viac podrobností o operačnom systéme Android, stačí prejsť odkazom.

  1. HTML5 vs Flash - ako sa líšia
  2. Top 8 užitočných aplikácií balíka Office pre váš Android
  3. Top 5 zadarmo emulátory Android pre PC
  4. Otázky na rozhovor s Androidom - 10 najdôležitejších užitočných otázok
  5. Kariéra vo vývoji systému Android
  6. Top 33 Rozdiely medzi iPhone a Android

Kategórie: