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

Operační systém Android je systém s otevřeným zdrojovým kódem. Mnoho lidí říká, že je to Linux, ale to není úplně pravda. Ačkoli Android má jádra podobná jádru Linuxu, to je jediná věc, která je podobná. Dnes se podrobněji podíváme na vnitřky operačního systému Android, kterým jsou procesy, rámec a další podobné struktury. Začněme tedy od samotných základů a podívejme se na vnitřní kořen operačního systému Android.

Po vydání iPhone a Windows Lumia Series, tj. Telefonů souvisejících s Microsoft Windows, Google chtěl udělat totéž. Chtěli však něco, co by mohlo být open source. Hlavním důvodem bylo to, že to kdokoli mohl odladit, upravit ho, jak chce. Pak přišla myšlenka na Linux. Linux je plně open-source operační systém a je široce přijímán komunitou po celém světě. Je to jeden z těch operačních systémů, který se používá ještě více než Windows nebo Mac OSX. Kromě toho má Linux schopnost spouštět téměř všechny ostatní věci, které by mohly být spuštěny na počítačích Mac nebo Windows. Google se proto rozhodl vyvinout operační systém pro mobilní telefon se stejným základním vnitřním obalem jako v systému Linux, takže je kompatibilní s téměř vším a vnější skořepina by se vyvinula tak, kdy a jak je to nutné.

Operační systém Android jako projekt s otevřeným zdrojovým kódem (AOSP)

Android má schopnost volně upravovat, vynalézat a implementovat vlastní ovladače zařízení a funkce. Nyní mluvíme o pěti různých vrstvách operačního systému Android. Je to následující:

Jak vidíte na obrázku výše, první vrstva je aplikační framework, druhou je Binder IPC proxy, třetí tvoří Systémové služby Android, čtvrtá je HAL nebo celá forma je hardwarová abstrakční vrstva a poslední být linuxovým jádrem. Nyní, jak jsem již řekl, vidíte, že jedinou součástí Linuxu, z níž se skládá operační systém Android, je jádro Linux. Nyní se podívejme na všechny z nich jeden po druhém.

Aplikační rámec pro Android

Tento aplikační rámec používají vývojáři aplikací pro Android. Tato část Androidu má přinejmenším co dělat s hardwarovou vrstvou. Aplikace pro Android jsou programovány v jazyce Java. Po naprogramování aplikace pomáhají nástroje Android SDK kompilovat data a soubory prostředků, jako jsou soubory XML, soubory jar, soubory manifestů a další obrázky a věci, do jediného archivního balíčku s příponou „.apk“. Tento soubor APK lze použít k instalaci aplikace jediným kliknutím na zařízení Android. Nyní, protože se operační systém Android chová jako prostředí Linux, je zde chování aplikace také stejné. Každá aplikace je považována za samostatného uživatele od druhé a běží ve vlastním virtuálním počítači. Díky tomu je naprogramovaný kód aplikace izolován a také to zabraňuje infikování od ostatních, pokud není výslovně uvedeno. Každá jiná aplikace má své vlastní USER ID a každý další proces má svůj vlastní virtuální stroj.

Aplikační rámec pro Android funguje na principu nejmenšího oprávnění. Princip nejmenších oprávnění znamená, že pokaždé, když je třeba spustit novou aplikaci, ale není k dispozici žádná paměť, systém Android automaticky ukončí starou aplikaci, kterou není nutné spouštět na pozadí. Toto je jedna z nejlepších součástí zabezpečení operačního systému Android. Tento princip umožňuje, aby každá aplikace měla pouze ten přístup, který je nezbytný pro její práci. Aplikace tedy nemůže získat povolení k tomu, co není zamýšleno. To zase vytváří velmi zabezpečené prostředí v samotném operačním systému Android.

Binder IPC je známý jako Binder Inter-Process Communication. Toto rozhraní umožňuje programátorovi vytvořit aplikaci pro komunikaci s jinými aplikacemi. Častěji to nejsou aplikace, které komunikují, jsou to procesy. Binder IPC pomáhá spouštět více procesů současně na souběžné úrovni. Tato implementace pořadače pochází z jádra operačního systému Android. Nyní byly položeny otázky, proč musí pojivo zůstat v jádře a proč nemůže běžet z mechanismů Linux IPC? Hlavním důvodem je to, že pořadač se vyhýbá zbytečnému přidělování prostoru na rozdíl od jiných mechanismů IPC v systému Linux. Pokud jste slyšeli o termínu „magie v pythonu“, pak by Binder IPC vypadal vývojáři aplikací, protože je před nimi úplně skrytý a zdá se, že na rozdíl od rámce na vysoké úrovni funguje jednoduše je třeba, aby to fungovalo explicitně. Ve skutečnosti to umožňuje rozhraní vysoké úrovně komunikovat se 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, který běží dlouhou dobu na pozadí operačního systému Android, aniž by poskytoval jakékoli rozhraní. Službu může spustit jakákoli aplikace, ať už je to uživatel nebo systém, ale stále bude spuštěna na pozadí, i když je aplikace zavřená. Existují však dva typy služeb:

Zahájené služby

Spuštěné služby se obvykle spustí, když si to aplikace vyžádá. Typ spuštěné služby však obvykle provádí pouze jednu operaci a nevrací nic.

Vázané služby

Vázané služby nabízejí relační rozhraní klient-server. Vázaná služba běží, dokud se nespustí aplikace v popředí, a poté se zastaví, jakmile je aktivita aplikace zničena.

Systémové služby systému Android poskytují uživatelským aplikacím potřebné informace, aby mohly správně fungovat. A tato komunikace mezi systémovými službami a uživatelskými aplikacemi se provádí pomocí Binder IPC z jádra. Nyní to může překvapit, ale ne všechny aplikace v Androidu jsou psány v Javě. Některé z nich jsou psány v C a C ++. Aplikace, které musí být v přímém kontaktu s hardwarem, jsou psány v C a C ++. Hlavním důvodem je to, že po většinu času musí být systémové služby v neustálém kontaktu s hardwarem. Proto je důležité, aby byl kompilovaný kus kódu extrémně rychlý. A pokud jde o hardwarovou akceleraci a vysoký výkon, je C mnohem rychlejší než Java nebo jakýkoli jiný jazyk.

Hardwarové služby, které jsou neustále používány, například: Senzory přiblížení, akcelerometr nebo dotyková obrazovka, musí být zapsány v C. Další hardware, jako je Kamera nebo zvuk, většinou využívá volání JNI. Pokud si tedy někdy všimnete, dotykové obrazovky budou vždy rychlejší než spuštění fotoaparátu nebo přehrání skladby pomocí hudebního přehrávače.

Při vytváření systémové služby si všimněte, že služby mají tendenci běžet v hlavním procesu a nevytváří samostatný proces. Stručně řečeno, pokud váš kód bude vykonávat nějakou náročnou práci na CPU a GPU, například hry s vysokým rozlišením, měli byste raději vytvořit nová vlákna ve stejné službě; jinak bude vždy vysoká šance na dialogové okno „Aplikace neodpovídá“.

Doporučené kurzy

  • Školení o certifikaci zabezpečení IT
  • Kompletní kurz Ruby on Rails
  • Profesionální školení CSS
  • Programujte na HTML5 a CSS3

Hardware Abstrction Layer

Vrstva HAL nebo Hardware Abstraction Layer je speciálně navržena pro dodavatele. Vývojáři aplikací zde nemají co dělat. Tato vrstva pomáhá vložit funkčnost bez jakýchkoli úprav systému. Každý jiný systém má odlišně navrženou HAL, protože jsou vyrobeny pro konkrétní zařízení. HAL se skládá ze dvou typických struktur: modulu a zařízení.

Struktura modulu v HAL je uložena jako sdílená knihovna ve formátu .so, který se skládá ze základních metadat, jako je číslo verze, autor, který modul navrhl, a podobné materiály. Struktura zařízení je skutečným hardwarem produktu. Podobně jako u modulu, ale struktura zařízení definuje komplexnější verzi obecných informací o hardwaru, která obsahuje ukazatele a další podobné věci, které jsou specifické pro každý hardware.

V Linuxu aplikace komunikují se základním hardwarem prostřednictvím systémových volání. V operačním systému Android ale aplikace komunikují s hardwarem prostřednictvím rozhraní Java API.

Linuxové jádro

Kompilace jádra Linuxu pro operační systém Android je podobná jako kompilace jádra pro základní operační systém Linux. Jediným rozdílem je, že verze pro Android je o něco vyspělejší než verze pro Linux. Hlavním důvodem je, že jádro androidu se skládá z dalších funkcí, jako jsou wakeloky, odemknutí dvojitým klepnutím a další podobné funkce zabudované do mobilního ovládacího zařízení. Funkce jako wakelock jsou důležité, protože jádro bude pracovat na přenosném zařízení a musí být o něco agresivnější ve správě paměti a baterie; na rozdíl od základního Linuxu, kde správa energie není problém. Tyto další požadavky jsou vyvolávány spíše v jádru než v systému, protože tyto věci by neměly mít vliv na vestavěné ovladače.

Kdykoli uslyšíte někoho, kdo říká „jeho Linux“, obvykle to znamená jádro, protože je to nejzákladnější a stále nejdůležitější část operačního systému. Hlavním důvodem, proč je android založen na linuxovém jádru, je jeho otevřený zdroj. Kdokoli může pokračovat a upravovat linuxové jádro bez jakéhokoli hardwarového omezení nebo bez jakýchkoli problémů s licencí.

Rozdíl mezi Linuxem a Androidem

Takže nyní jsme konečně dosáhli nejasné fáze tohoto blogu: Linux vs Android. Lidé obvykle považují android za distribuci Linuxu, ale řekl bych, že mají pouze 50% pravdu. Kdykoli se operační systém Android spustí, v zásadě načte jádro jako jakákoli jiná distribuce Linuxu, ale zbytek softwaru je úplně odlišný od Linuxu. Linuxové aplikace nebudou fungovat na Androidu a naopak, pokud nejsou kompilovány v chrootovém prostředí. Knihovny přítomné v typickém distro Linuxu a Androidu se od sebe naprosto liší. V podstatě nemůžete získat přístup ke kořenovému terminálu v systému Android, jako je tomu v případě Linuxu. To je hlavní důvod, proč lidé obvykle instalují Busybox, SuperSU a jeho binární soubory po zakořenění, aby měli podrobnější přístup k jádru a shellu z příkazového řádku. V systému Android neexistuje žádná výchozí skořepina, ale jednu můžete získat instalací emulátoru terminálu z obchodu Google Play. Emulátor terminálu vypadá takto:

Runtime Android pracuje na Dalvik Virtual Machine. Tento Dalvik VM je ve skutečnosti interpretem programovacího jazyka Java. Celý runtime android je psán v Javě v Androidu a protože všechny aplikace androidu jsou psány v Javě, stává se pro aplikace běžet ve virtuálním prostředí mnohem jednodušší a hladší. A protože všechny aplikace a dokonce i runtime jsou psány v Javě, je pro každého vývojáře mnohem snazší přizpůsobit si každý druhý bit operačního systému Android. Android byl obvykle navržen jako operační systém pro jednoho uživatele (na rozdíl od lízátka a marshmallow, kde může být více uživatelů.) Abych to skutečně zjednodušil, dovolte mi to vložit do této podoby. Aplikace pro Android nejsou na konci nic jiného než procesy v systému Linux a takto fungují. A protože jsem uvedl výše, že každá aplikace má svůj vlastní proces, je pro jádro snazší vytvořit samostatný UID pro každý proces a zpracovávat soubory aplikace a paměť bez dalšího úsilí.

Ve skutečnosti je toho více než základy operačního systému Android, které jsem zmínil výše. Android má základní proces známý jako „Zygote“ a vyniká tím, co dělá. Tento proces se ve skutečnosti spustí s inicializačními příkazy, když se systém Android spustí. Nebudu se zde zabývat podrobnostmi, ale myslím, že základy operačního systému Android jsou pro vás dostačující, abyste mohli začít s Androidem. Chcete-li získat více informací, můžete ve skutečnosti navštívit stránky source.android.com a developers.android.com, která je oficiální webovou stránkou společnosti Google pro každou aktualizaci Androidu.

Doporučené články

Zde je několik článků, které vám pomohou získat více podrobností o operačním systému Android, takže stačí projít odkaz.

  1. HTML5 vs Flash - jak se liší
  2. 8 nejlepších užitečných aplikací sady Office pro Android
  3. Top 5 emulátorů Android pro PC zdarma
  4. Dotazy na rozhovor s Androidem - 10 nejlepších užitečných otázek
  5. Kariéra ve vývoji Androidu
  6. Top 33 Rozdíly mezi iPhone a Android

Kategorie: