Introducere în sistemul de operare Android

Sistemul de operare Android este un sistem open-source. Mulți oameni spun că este Linux, dar acest lucru nu este pe deplin adevărat. Deși Android are nuclee care sunt similare cu cele ale Linux, acesta este singurul lucru care este similar. Astăzi, vom analiza mai profund aspectele interioare ale Sistemului de operare Android care este procesele, cadrul și alte structuri similare. Așadar, să începem de la elementele de bază și să aruncăm o privire până la rădăcina interioară a sistemului de operare Android.

După lansarea iPhone și Windows Lumia Series, adică telefoanele Microsoft Windows, Google a vrut să facă același lucru. Dar doreau ceva care ar putea fi open source. Motivul principal din spatele acestui lucru a fost acela ca oricine să-l poată depana, să-l modifice orice modificări după cum dorea. Apoi a venit ideea de Linux. Linux este un sistem de operare complet deschis și este acceptat pe scară largă de comunitatea din întreaga lume. Este unul dintre acele sisteme de operare care este folosit chiar mai mult decât Windows sau Mac OSX. În plus, Linux are capacitatea de a rula aproape orice alt lucru care ar putea fi rulat fie pe Mac, fie pe Windows. Astfel, Google a decis să dezvolte un sistem de operare pentru un telefon mobil cu același shell intern de bază ca cel al Linux, astfel încât să fie compatibil cu aproape tot, iar shell-ul exterior să fie dezvoltat așa cum, când și cum este necesar.

Sistem de operare Android ca proiect open source (AOSP)

Android are capacitatea de a modifica, inventa și implementa în mod liber driverele și funcțiile proprii de dispozitiv. Acum să vorbim despre, există cinci straturi diferite ale unui sistem de operare Android. Se merge astfel:

După cum puteți vedea în imaginea de mai sus, primul strat este Framework Application, al doilea fiind Proxy-urile Binder IPC, al treilea este format din Android System Services, al patrulea este HAL sau formularul complet fiind Hardware Abstraction Layer, iar ultimul fiind nucleul Linux. Acum, așa cum am spus anterior, puteți vedea că singura parte a Linux din care este format un sistem de operare Android este Linux Kernel. Acum să aruncăm o privire la toate una câte una.

Cadrul de aplicații Android

Acest cadru de aplicații este utilizat de dezvoltatorii de aplicații pentru Android. Această parte a Android are cel puțin de făcut orice cu stratul hardware. Aplicațiile Android sunt programate în limbaj Java. După programarea unei aplicații, instrumentele SDK Android vă ajută să compilați datele și fișierele de resurse, cum ar fi fișierele XML, fișierele jar, fișierele manifeste și alte imagini și lucruri într-un singur pachet de arhivă cu o extensie '.apk'. Acest fișier apk poate fi utilizat pentru a instala aplicația cu un singur clic pe dispozitivele Android. Acum, din moment ce sistemul de operare Android se comportă ca un mediu Linux, comportamentul aplicației este același și aici. Fiecare aplicație este considerată ca un utilizator separat de cealaltă și rulează în mașina sa virtuală. Acest lucru face ca codul programat al aplicației să fie izolat și, de asemenea, îl împiedică să se infecteze de la alții, dacă nu este specificat explicit. Fiecare altă aplicație are propriul ID utilizator și fiecare alt proces are mașina sa virtuală.

Cadrul de aplicații Android funcționează pe principiul celui mai mic privilegiu. Principiul minim privilegiu înseamnă că, de fiecare dată când o aplicație nouă trebuie să ruleze, dar nu există o memorie disponibilă, sistemul Android va renunța automat la vechea aplicație care nu este necesară pentru a rula în fundal. Aceasta este una dintre cele mai bune părți ale securității sistemului de operare Android. Acest principiu face posibil ca fiecare aplicație să aibă doar acel acces care este necesar pentru a-și face munca. Astfel, o aplicație nu poate obține permisiunea pentru ceea ce nu este intenționat să facă. La rândul său, acest lucru creează un mediu foarte sigur în cadrul sistemului de operare Android în sine.

IP Binder este cunoscut sub numele de Binder Inter-Process Communication. Această interfață permite unui programator să facă o aplicație să comunice cu alte aplicații. Mai des, nu aplicațiile comunică, ci procesele. IP Binder ajută la rularea mai multor procese simultan la un nivel concurent. Această implementare a liantului este furnizată prin Kernel din sistemul de operare Android. Acum s-au ridicat întrebări de ce este necesar ca liantul să rămână în kernel și de ce nu poate să funcționeze din mecanismele IPC Linux? Motivul principal pentru aceasta se datorează faptului că liantul evită să folosească alocarea inutilă a spațiului spre deosebire de alte mecanisme IPC din sistemul Linux. Dacă ați auzit de termenul „magie în python”, atunci ar arăta un IPC Binder pentru un dezvoltator de aplicații, deoarece este total ascuns de ele și pare să funcționeze pur și simplu, spre deosebire de cadrul la nivel înalt unde trebuie să-l faci să funcționeze explicit. Acest lucru permite cadrului la nivel înalt să comunice cu serviciile sistemului de operare Android.

Servicii de sistem ale sistemului de operare Android

Un serviciu este o bucată de cod compilată care rulează mult timp pe fundalul unui sistem de operare Android fără a oferi nicio interfață. Orice aplicație, poate fi un utilizator sau un sistem poate porni un serviciu, dar va continua să funcționeze în fundal, chiar dacă aplicația este închisă. Cu toate acestea, există două tipuri de servicii:

Servicii începute

Serviciile începute încep de obicei atunci când o aplicație o solicită. Cu toate acestea, un tip de serviciu pornit face de obicei doar o singură operație și nu returnează nimic.

Servicii legate

Serviciile delimitate oferă o interfață de relație client-server. Serviciul legat rulează până când rulează aplicația prim-plan și apoi este oprit odată ce distrugerea activității aplicației.

Serviciile de sistem ale Android oferă informații necesare aplicațiilor utilizatorului pentru ca acestea să funcționeze corect. Iar aceste comunicări între serviciile de sistem și aplicațiile pentru utilizatori se realizează cu ajutorul IP Binder de la Kernel. Acum este posibil să se surprindă, dar nu toate aplicațiile dintr-un Android sunt scrise în Java. Unele dintre ele sunt scrise în C și C ++. Acele aplicații care trebuie să fie în contact aproape cu hardware-ul sunt scrise în C și C ++. Motivul principal pentru acest lucru se datorează faptului că de cele mai multe ori serviciile de sistem trebuie să fie în contact constant cu hardware-ul. Acest lucru face important ca bucata de cod compilată să fie extrem de rapidă. Iar când vine vorba de accelerare hardware și performanțe ridicate, C este mult mai rapid decât Java sau orice altă limbă de acolo.

Serviciile hardware care sunt în continuă utilizare, de exemplu: senzori de proximitate, accelerometru sau ecranul tactil trebuie să fie scrise în C. Un alt hardware, cum ar fi Camera sau sunetul, utilizează în mare parte apelurile JNI. Astfel, dacă observați vreodată, ecranele tactile vor fi întotdeauna mai rapide decât lansarea unei camere sau redarea unei melodii prin intermediul unui player muzical.

Când creați un serviciu de sistem, rețineți că serviciile tind să fie rulate în procesul principal și că nu creează un proces separat. Pe scurt, dacă codul dvs. va efectua unele lucrări intensive pentru procesoare și GPU, de exemplu, jocuri de înaltă definiție, atunci ar trebui să preferați crearea de noi thread-uri în același serviciu; altfel, va exista întotdeauna o șansă mare de a avea caseta de dialog „Aplicația nu răspunde”.

Cursuri recomandate

  • Pregătire certificare securitate IT
  • Curs complet Ruby on Rails
  • Pregătire profesională CSS
  • Program pe HTML5 și CSS3

Strat de abstractizare hardware

HAL sau Abstraction Hardware Layer este conceput special pentru furnizori. Dezvoltatorii de aplicații nu prea au ce să facă aici. Acest strat ajută la inserarea funcționalității fără a avea modificări în sistem. Fiecare alt sistem are un HAL conceput în mod diferit, deoarece sunt făcute specifice dispozitivului. HAL este format din două structuri tipice: modul și dispozitiv.

Structura modulului în HAL este stocată ca o bibliotecă partajată în format .so, care constă din metadatele de bază, cum ar fi numărul versiunii, autorul care a proiectat modulul și alte chestii similare. Structura dispozitivului este hardware-ul real al produsului. Similar cu cel al modulului, însă structura dispozitivului definește o versiune mai cuprinzătoare a informațiilor generice despre hardware care conține indicatoare și alte chestii similare, care sunt speciale pentru fiecare hardware.

În Linux, aplicațiile comunică cu hardware-ul de bază prin apeluri de sistem. Dar într-un sistem de operare Android, aplicațiile comunică cu hardware-ul prin intermediul API-urilor Java.

Linux Kernel

Compilarea unui nucleu Linux pentru un sistem de operare Android este similară cu cea a compilării pentru un sistem de operare Linux de bază. Singura diferență este că versiunea pentru Android este ceva mai avansată decât cea a Linux. Motivul principal este nucleul Android constă în funcții suplimentare, cum ar fi wakelocks, dublu atingere pentru a debloca și alte funcții similare încorporate în dispozitivul de operare mobil. Caracteristici precum wakelock sunt importante, deoarece kernel-ul va funcționa pe un dispozitiv portabil și trebuie să fie ceva mai agresiv în gestionarea memoriei și a bateriei; spre deosebire de Linux de bază, în care managementul energiei nu este o problemă. Aceste cerințe suplimentare sunt induse în kernel și nu în sistem, deoarece aceste lucruri nu ar trebui să afecteze driverele încorporate.

Ori de câte ori auziți o persoană care spune „Linux-ul” ei, înseamnă de obicei nucleul, deoarece este cea mai de bază, încă cea mai importantă parte a oricărui sistem de operare. Principalul motiv pentru care Android se bazează pe kernel Linux este că sursa sa deschisă. Oricine poate merge înainte și modifica kernel-ul Linux fără nicio limită hardware sau chiar probleme legate de drepturile de autor.

Diferența dintre Linux și Android

Așa că acum am ajuns în sfârșit la cea mai confuză etapă a acestui blog: Linux vs Android. Oamenii consideră de obicei Android-ul ca o distribuție Linux, dar aș spune că au doar 50% dreptate. Ori de câte ori sistemul de operare Android începe, acesta încarcă practic nucleul ca orice altă distribuție Linux, dar restul software-ului este total diferit de cel al Linux. Aplicațiile Linux nu vor rula pe Android și, de asemenea, invers, dacă nu sunt compilate într-un mediu chroot. Bibliotecile prezente într-o distro tipică Linux și Android sunt total diferite între ele. Practic, nu puteți accesa terminalul rădăcină în Android ca acela în cazul Linux. Acesta este principalul motiv pentru care oamenii instalează de obicei Busybox, SuperSU și binarele sale după rădăcină, astfel încât să aibă un acces mai detaliat al liniei de comandă la kernel și shell. Nu există nicio coajă implicită în Android, dar puteți obține unul instalând un emulator terminal din google play store. Terminalul Emulator arată astfel:

Runtime-ul Android funcționează pe o mașină virtuală Dalvik. Acest VM Dalvik este de fapt un interpret pentru limbajul de programare Java. Întreaga durată de rulare a androidului este scrisă în Java în Android și, din moment ce toate aplicațiile android sunt scrise în Java, devine mult mai ușor și ușor pentru aplicațiile să ruleze în mediul virtual. Și având în vedere că toate aplicațiile și chiar timpul de rulare sunt scrise în Java, devine mai ușor pentru orice dezvoltator să personalizeze fiecare biți al sistemului de operare Android. Android-ul a fost de obicei proiectat pentru a fi un singur sistem de operare cu un singur utilizator (spre deosebire de acadea și marshmallow, unde pot exista mai mulți utilizatori.) Pentru a simplifica acest lucru, permiteți-mi să o pun în această formă. Aplicațiile Android nu sunt altceva decât procesele Linux la final și așa au tendința să funcționeze. Și din moment ce am afirmat mai sus că fiecare aplicație are propriul proces, devine mai ușor pentru kernel să creeze un UID separat pentru fiecare proces și să gestioneze fișierele de aplicație și memoria fără niciun efort suplimentar.

Există, de fapt, mai multe lucruri decât elementele de bază ale sistemului de operare Android pe care le-am menționat mai sus. Android are un proces de bază care este cunoscut sub numele de "Zygote" și excelează la ceea ce face. Acest proces începe de fapt cu comenzile de inițializare atunci când Android pornește. Nu voi intra în detalii foarte multe aici, dar cred că elementele de bază ale sistemului de operare Android sunt suficiente pentru a începe cu Android. Pentru a obține mai multe informații, puteți vizita efectiv sursele.android.com și dezvoltatorii.android.com, care este site-ul oficial de la google pentru orice actualizare de pe Android.

Articole recomandate

Iată câteva articole care vă vor ajuta să obțineți mai multe detalii despre sistemul de operare Android, așa că treceți doar prin link.

  1. HTML5 vs Flash - Cum sunt diferite
  2. Top 8 aplicații utile pentru suita Office pentru Android
  3. Top 5 Emulatoare Android gratuite pentru computer
  4. Întrebări cu interviuri Android - Top 10 Întrebări utile
  5. Cariere în dezvoltarea Android
  6. Top 33 Diferențe de iPhone față de Android