Introduktion til Android-operativsystem

Android-operativsystemet er et open source-system. Mange mennesker siger, at det er Linux, men det er ikke helt sandt. Selvom Android har kerner, der ligner Linux, er det det eneste, der ligner. I dag vil vi undersøge indersiden af ​​Android-operativsystemet, som er processerne, rammen og andre lignende strukturer. Så lad os komme i gang helt fra det grundlæggende og kigge indtil den indre rod af Android-operativsystemet.

Efter frigivelsen af ​​iPhone og Windows Lumia Series, dvs. de Microsoft Windows-relaterede telefoner, ønskede Google at gøre det samme. Men de ønskede noget, der kunne være open source. Hovedårsagen bag dette var, så enhver kunne debugge den, ændre den eventuelle ændringer, som de ville. Så kom ideen om Linux. Linux er et fuldstændigt open source-operativsystem, og det accepteres bredt af samfundet over hele verden. Det er et af disse operativsystemer, der bruges endnu mere end Windows eller Mac OSX. Desuden har Linux kapacitet til at køre næsten alle andre ting, der kan køres på enten Mac eller Windows. Således besluttede Google at udvikle et operativsystem til en mobiltelefon med den samme grundlæggende indre shell som Linux, så det er kompatibelt med næsten alt, og det ydre skal udvikles som, hvornår og hvordan det kræves.

Android-operativsystem som et Open Source-projekt (AOSP)

Android har muligheden for frit at ændre, opfinde og implementere vores egne enhedsdrivere og funktioner. Nu at tale om, der er fem forskellige lag af et Android-operativsystem. Det går som følger:

Som du kan se på ovenstående billede, er det første lag Application Framework, hvor det andet er Binder IPC Proxies, det tredje består af Android System Services, det fjerde er HAL eller den fulde form er Hardware Abstraction Layer og den sidste at være Linux-kernen. Som jeg sagde tidligere, kan du se, at den eneste del af Linux, som et Android-operativsystem består af, er Linux-kernen. Lad os nu kigge på dem alle ad gangen.

Android-applikationsramme

Denne appramme bruges af appudviklere til Android. Denne del af Android har i det mindste at gøre noget med hardwarelaget. Android-applikationer er programmeret på Java-sprog. Efter programmering af en app hjælper Android SDK-værktøjer med at samle dataene og ressourcefilerne, såsom XML-filer, jar-filer, manifestfiler og andre billeder og ting i en enkelt arkivpakke med en '.apk'-udvidelse. Denne apk-fil kan bruges til at installere appen med blot et enkelt klik på Android-enhederne. Eftersom Android-operativsystemet opfører sig som et Linux-miljø, er appens opførsel også den samme her. Hver app betragtes som en separat bruger fra den anden og kører i sin egen virtuelle maskine. Dette gør appens programmerede kode isoleret og forhindrer også, at den smittes fra andre, medmindre det udtrykkeligt er angivet. Hver anden app har sit eget BRUGER-ID, og ​​hver anden proces har sin egen virtuelle maskine.

Rammen for Android-applikationer fungerer efter princippet om mindst mulig privilegium. Least Privilege Princip betyder, at når en ny app skal køre, men der ikke er nogen tilgængelig hukommelse, vil Android-systemet automatisk lukke det gamle program, som ikke er nødvendigt for at køre i baggrunden. Dette er en af ​​de bedste dele af Android-operativsystemets sikkerhed. Dette princip gør det muligt, at hver app kun har den adgang, der kræves for at udføre sit arbejde. Således kan en app ikke få tilladelse til, hvad der ikke er beregnet til at gøre. Dette skaber igen et meget sikkert miljø inden for selve Android-operativsystemet.

Binder IPC er kendt som Binder inter-process kommunikation. Denne grænseflade giver en programmerer mulighed for at oprette et program til at kommunikere med andre applikationer. Oftere er det ikke applikationerne, der kommunikerer, det er processerne. Binder IPC hjælper med at køre flere processer på samme tid på et samtidig niveau. Denne bindemiddelimplementering kommer fra kernen i Android-operativsystemet. Nu er der blevet stillet spørgsmål til, hvorfor skal bindemidlet forblive i kernen, og hvorfor kan det ikke køre fra Linux IPC-mekanismerne? Den vigtigste årsag hertil er fordi bindemidlet undgår at bruge unødvendig allokering af plads i modsætning til andre IPC-mekanismer i Linux-systemet. Hvis du har hørt om udtrykket 'magi i python', er det sådan, en Binder IPC ville se ud for en applikationsudvikler, da det er helt skjult for dem, og det ser ud til at fungere i modsætning til rammerne på højt niveau skal du få det til at fungere eksplicit. Dette muliggør faktisk på højt niveau rammer at kommunikere med android-operativsystemtjenester.

Systemtjenester i Android-operativsystem

En tjeneste er et samlet stykke kode, der kører i lang tid på baggrund af et Android-operativsystem uden at give nogen grænseflade. Enhver applikation, det kan være en bruger eller et system, kan starte en tjeneste, men den vil fortsat køre i baggrunden, selvom applikationen er lukket. Der er dog to typer tjenester:

Startede tjenester

Startede tjenester starter normalt, når en applikation kræver det. Imidlertid udfører en startet tjenestetype normalt kun en enkelt handling og returnerer ikke noget.

Bundne tjenester

Afgrænsede tjenester tilbyder en interface mellem klient og server. Bound service kører, indtil forgrundsapplikationen kører, og derefter stoppes den, når applikationsaktiviteten er ødelagt.

Systemtjenesterne i Android leverer nødvendige oplysninger til brugerapplikationerne, så de fungerer korrekt. Og denne kommunikation mellem systemtjenesterne og brugerapplikationerne sker ved hjælp af Binder IPC fra kernen. Nu kan det overraske, men ikke alle applikationer i en Android er skrevet i Java. Nogle af dem er skrevet i C og C ++. De applikationer, der skal være i tæt kontakt med hardware, er skrevet i C og C ++. Hovedårsagen til dette er fordi det meste af tiden systemtjenester skal være i konstant kontakt med hardware. Dette gør det vigtigt, at det samlede kode er ekstremt hurtigt. Og når det kommer til hardwareacceleration og høj ydeevne, er C meget hurtigere end Java eller noget andet sprog derude.

Hardwaretjenester, der er i konstant brug, f.eks. Til: Nærhedssensorer, accelerometer eller berøringsskærmen skal skrives i C. Anden hardware som kameraet eller lyden bruger for det meste JNI-opkald. Så hvis du nogensinde bemærker, vil berøringsskærmbillederne altid være hurtigere end at starte et kamera eller spille en sang via en musikafspiller.

Når du opretter en systemtjeneste, skal du notere, at tjenester har en tendens til at køre i hovedprocessen, og at den ikke opretter en separat proces. Kort sagt, hvis din kode vil udføre noget CPU- og GPU-intensivt arbejde, for eksempel High definition-spil, skal du foretrække at oprette nye tråde i den samme service; ellers er der altid en stor chance for at få dialogboksen "App svarer ikke".

Anbefalede kurser

  • IT-sikkerhedscertificeringstræning
  • Komplet Ruby on Rails-kursus
  • Professionel CSS-træning
  • Program på HTML5 og CSS3

Hardwareabstraktionslag

HAL eller hardwareabstraktionslag er specifikt designet til leverandører. App-udviklere har lidt eller næsten intet at gøre her. Dette lag hjælper med at indsætte funktionalitet uden at have ændringer i systemet. Hvert andet system har en anderledes designet HAL, da de er lavet enhedsspecifikke. HAL består af to typiske strukturer: Modul og enhed.

Modulstrukturen i HAL gemmes som et delt bibliotek i .so-format, der består af de grundlæggende metadata, såsom versionnummer, forfatter, der har designet modulet og lignende ting. Enhedsstrukturen er produktets egentlige hardware. I lighed med modulet, men enhedsstrukturen definerer en mere omfattende version af den generiske hardwareinformation, som indeholder pegere og andre lignende ting, der er specielle for enhver hardware.

I Linux kommunikerer applikationer med den underliggende hardware gennem systemopkald. Men i et Android-operativsystem kommunikerer applikationerne med hardwaren via Java API'er.

Linux-kerne

Kompilering af en Linux-kerne til et Android-operativsystem svarer til den, der kompileres til et grundlæggende Linux-operativsystem. Den eneste forskel er, at Android-versionen er lidt mere avanceret end Linux. Den vigtigste grund til at være Android-kernen består af yderligere funktioner såsom wakelocks, dobbelttryk for at låse op og andre lignende funktioner, der er integreret i den mobile betjeningsenhed. Funktioner såsom wakelock er vigtige, da kernen vil arbejde på en bærbar enhed, og den skal være lidt mere aggressiv i hukommelse og batteristyring; i modsætning til det grundlæggende Linux, hvor energiledelse ikke er et problem. Disse yderligere krav induceres i kernen snarere end i systemet, da disse ting ikke bør påvirke de indbyggede drivere.

Hver gang du hører en person, der siger 'sin Linux', betyder de normalt kernen, da den stadig er den mest basale del af ethvert operativsystem. Hovedårsagen til, at Android er baseret på Linux-kerne, er, at dens open source. Alle kan gå foran og ændre Linux-kernen uden hardwarebegrænsning eller endda nogen royalty-problemer.

Forskel mellem Linux vs Android

Så nu er vi endelig nået den mest forvirrende fase af denne blog: Linux vs Android. Folk betragter normalt Android som en Linux-distribution, men jeg vil sige, at de kun har 50% ret. Hver gang Android-operativsystemet starter, indlæser det dybest set kernen som enhver anden Linux-distribution, men resten af ​​softwaren er helt anderledes end Linux. Linux-applikationer kører ikke på Android og også omvendt, medmindre de er samlet i et chroot-miljø. Bibliotekerne, der findes i en Linux-distro og Android, er helt forskellige fra hinanden. Grundlæggende kan du ikke få adgang til rodterminalen i Android som den i tilfælde af Linux. Dette er den vigtigste grund til, at folk normalt installerer Busybox, SuperSU og dets binære filer efter rodning, så de har en mere detaljeret kommandolinjeadgang til kernen og shell. Der er ingen standard shell i Android, men du kan få en ved at installere en terminalemulator fra google play store. Terminalemulator ser sådan ud:

Android-runtime fungerer på en Dalvik Virtual Machine. Denne Dalvik VM er faktisk en tolk til Java-programmeringssprog. Hele Android-runtime er skrevet i Java i Android, og da alle applikationer af Android er skrevet i Java, bliver det meget lettere og glat for applikationerne at køre i det virtuelle miljø. Og da alle applikationer og endda runtime er skrevet i Java, bliver det meget lettere for enhver udvikler at tilpasse hver eneste anden bit af Android-operativsystemet. Android var normalt designet til at være et enkelt brugers operativsystem (i modsætning til slikkepind og skumfidus, hvor der kan være flere brugere.) For at gøre dette enklere, lad mig det anføre i denne form. Android-applikationer er intet andet end Linux-processer i slutningen, og det er sådan, de har tendens til at arbejde. Og da jeg har sagt ovenfor, at hver app har sin egen proces, bliver det lettere for kernen at oprette en separat UID til hver proces og håndtere applikationsfiler og hukommelse uden nogen ekstra indsats.

Der er faktisk mere ved dette end Android-operativsystemets grundlæggende, som jeg har nævnt ovenfor. Android har en kerneproces, der er kendt som 'Zygote', og den udmærker sig, hvad den gør. Denne proces starter faktisk med initialiseringskommandoer, når Android starter. Jeg vil ikke gå meget i detaljer her, men jeg synes, at grundlæggende om Android-operativsystemet faktisk er nok til, at du kommer i gang med Android. For at få mere information kan du faktisk besøge source.android.com og udviklere.android.com, som er det officielle websted fra google for enhver opdatering på Android.

Anbefalede artikler

Her er nogle artikler, der hjælper dig med at få flere detaljer om Android-operativsystemet, så bare gå gennem linket.

  1. HTML5 vs Flash - hvordan de er forskellige
  2. Top 8 nyttige Office Suite-applikationer til din Android
  3. Top 5 gratis Android-emulatorer til pc
  4. Spørgsmål til Android-interview - Top 10 nyttige spørgsmål
  5. Karrierer inden for Android-udvikling
  6. Top 33 forskelle mellem iPhone og Android

Kategori: