Въведение в операционната система Android

Операционната система Android е система с отворен код. Много хора казват, че това е Linux, но това не е напълно вярно. Въпреки че Android има ядра, които са подобни на тези на Linux, това е единственото нещо, което е подобно. Днес ще разгледаме по-задълбочено вътрешностите на операционната система Android, която представлява процесите, рамката и други подобни структури. Така че, нека започнем от самите основи и да разгледаме вътрешния корен на операционната система Android.

След излизането на iPhone и Windows Lumia Series, т.е. телефоните, свързани с Microsoft Windows, Google искаше да направи същото. Но те искаха нещо, което може да бъде с отворен код. Основната причина за това беше, за да може всеки да отстрани грешки, да променя всички промени, както иска. Тогава дойде идеята за Linux. Linux е напълно отворена операционна система и е широко приета от общността по целия свят. Тя е една от онези операционни системи, която се използва дори повече от Windows или Mac OSX. Освен това, Linux има възможност да стартира почти всяко друго нещо, което може да се стартира на Mac или Windows. По този начин Google реши да разработи операционна система за мобилен телефон със същата основна вътрешна обвивка като тази на Linux, така че да е съвместима с почти всичко, а външната обвивка да бъде разработена както, кога, така и как се изисква.

Операционна система Android като проект с отворен код (AOSP)

Android има възможност свободно да модифицира, изобретява и внедрява собствените си драйвери и функции на устройството. Сега да говорим, има пет различни слоя на операционна система Android. Излиза по следния начин:

Както можете да видите на горното изображение, първият слой е Application Framework, вторият е Binder IPC Proxies, третият се състои от Android System Services, четвъртият е HAL или пълната форма е Hardware Abstraction Layer и последният като Linux Kernel. Както вече казах, можете да видите, че единствената част от Linux, от която се състои операционна система Android, е Linux Kernel. Сега нека да разгледаме всички тях един по един.

Android Application Framework

Тази рамка за приложения се използва от разработчиците на приложения за Android. Тази част на Android трябва да направи най-малкото нещо с хардуерния слой. Приложенията за Android се програмират на Java език. След програмирането на приложение, инструментите за SDK за Android помагат за компилирането на данни и файлове с ресурси, като XML файловете, файловете с jar, манифестните файлове и други изображения и неща в един единствен архивен пакет с разширение '.apk'. Този apk файл може да се използва за инсталиране на приложението само с едно кликване върху устройствата с Android. Сега, тъй като операционната система Android се държи като Linux среда, поведението на приложението също е същото. Всяко приложение се счита за отделен потребител от другото и работи в своя виртуална машина. Това прави програмирания код на приложението изолиран и също така предотвратява заразата му от другите, освен ако не е изрично посочено. Всяко друго приложение има свой USER идентификатор и всеки друг процес има своя виртуална машина.

Рамковата програма за приложения на Android работи на принципа на най-малкото привилегия. Принципът за най-малко привилегии означава, че всеки път, когато трябва да се стартира ново приложение, но няма налична памет, системата Android автоматично ще излезе от старото приложение, което не е необходимо да работи във фонов режим. Това е една от най-добрите части на сигурността на операционната система Android. Този принцип прави възможно всяко приложение да има само онзи достъп, който е необходим, за да върши своята работа. По този начин приложението не може да получи разрешение за това, което не е предназначено да направи. Това от своя страна създава много сигурна среда в самата операционна система Android.

Binder IPC е известен като Binder Inter-Process Communication. Този интерфейс позволява на програмист да направи приложение, за да комуникира с други приложения. По-често това не са приложенията, които комуникират, а процесите. Binder IPC помага да се стартират множество процеси едновременно на едновременно ниво. Това внедряване на свързващо средство се осъществява чрез ядрото на операционната система Android. Сега бяха повдигнати въпроси защо свързващото устройство трябва да остане в ядрото и защо не може да работи от Linux IPC механизмите? Основната причина за това е, че свързващото вещество избягва използването на ненужно разпределение на пространство за разлика от други IPC механизми в Linux системата. Ако сте чували за термина "магия в python", тогава това би изглеждало Binder IPC за разработчика на приложения, тъй като е напълно скрито от тях и изглежда, че работи, за разлика от рамката на високо ниво, където трябва да го накарате да го работи изрично. Това всъщност дава възможност на рамката на високо ниво да комуникира с услугите на операционната система android.

Системни услуги на операционна система Android

Услугата е компилиран парче код, който работи дълго време на фона на андроид операционна система, без да дава никакъв интерфейс. Всяко приложение, може да е потребител или система, може да стартира услуга, но тя ще продължи да работи във фонов режим, дори ако приложението е затворено. Има обаче два вида услуги:

Стартирани услуги

Стартираните услуги обикновено стартират, когато приложението го извика. Въпреки това, стартираният тип услуга обикновено прави само една операция и не връща нищо.

Обвързани услуги

Ограничените услуги предлагат интерфейс за връзка клиент-сървър. Обвързаната услуга работи, докато стартира приложението на преден план и след това се спира, след като дейността на приложението бъде унищожена.

Системните услуги на android предоставят необходимата информация на потребителските приложения, за да работят правилно. И тези комуникации между системните услуги и потребителските приложения се извършват с помощта на Binder IPC от ядрото. Сега може да изненада, но не всички приложения в Android са написани на Java. Някои от тях са написани на C и C ++. Тези приложения, които трябва да бъдат в близост с хардуера, са написани на C и C ++. Основната причина за това е, че през повечето време системните услуги трябва да са в постоянен контакт с хардуера. Това прави важно компилираното парче код да бъде изключително бързо. А когато става дума за хардуерно ускорение и висока производителност, C е много по-бърз от Java или който и да е друг език там.

Хардуерните услуги, които са в постоянна употреба, например: Сензорите за близост, акселерометърът или сензорният екран трябва да бъдат написани на C. Друг хардуер като Камерата или звукът използва предимно разговорите на JNI. По този начин, ако някога забележите, сензорните екрани винаги ще бъдат по-бързи от пускането на камера или пускането на песен чрез музикален плейър.

Когато създавате системна услуга, обърнете внимание, че услугите са склонни да се изпълняват в основния процес и той не създава отделен процес. Накратко, ако вашият код ще върши някаква интензивна работа на процесора и графичния процесор, например игри с висока разделителна способност, тогава трябва да предпочитате да създавате нови нишки в една и съща услуга; иначе винаги ще има голям шанс да имате диалогов прозорец „Приложение не отговаря“.

Препоръчителни курсове

  • Обучение за сертифициране по ИТ сигурност
  • Пълен курс на Ruby on Rails
  • Професионално CSS обучение
  • Програма на HTML5 и CSS3

Слой за абстракция на хардуер

HAL или Hardware Abstraction Layer е специално разработен за доставчици. Разработчиците на приложения тук нямат почти нищо. Този слой помага да се вмъкне функционалност, без да се правят модификации в системата. Всяка друга система има различно проектиран HAL, тъй като те са направени специфични за устройството. HAL се състои от две типични структури: Модул и Устройство.

Структурата на модула в HAL се съхранява като споделена библиотека в .so формат, който се състои от основните метаданни като номер на версията, автор, проектирал модула и подобни неща. Структурата на устройството е действителният хардуер на продукта. Подобно на тази на модула, но структурата на устройството определя по-обширна версия на общата хардуерна информация, която съдържа указатели и други подобни неща, които са специални за всеки хардуер.

В Linux приложенията комуникират с основния хардуер чрез системни повиквания. Но в операционна система Android приложенията общуват с хардуера чрез Java API.

Linux Kernel

Компилирането на Linux ядро ​​за операционна система Android е подобно на това при компилирането му за основна Linux операционна система. Единствената разлика е, че версията за Android е малко по-напреднала от тази на Linux. Основната причина е андроидното ядро ​​да се състои от допълнителни функции, като например walocks, двойно докосване за отключване и други подобни функции, вградени в мобилното операционно устройство. Функции като walock са важни, тъй като ядрото ще работи на преносимо устройство и трябва да бъде малко по-агресивно в управлението на паметта и батерията; за разлика от основния Linux, където управлението на енергията не е проблем. Тези допълнителни изисквания са индуцирани в ядрото, а не в системата, тъй като тези неща не трябва да засягат вградените драйвери.

Всеки път, когато чуете човек да казва „своя Linux“, той обикновено има предвид ядрото, тъй като то е най-основната все още най-важната част от всяка операционна система. Основната причина, поради която android се базира на Linux ядрото, е, че неговият отворен код. Всеки може да продължи напред и да модифицира ядрото на Linux без никакви хардуерни ограничения или дори проблеми с роялти.

Разлика между Linux срещу Android

Така че сега най-накрая стигнахме до най-объркващия етап на този блог: Linux срещу Android. Хората обикновено разглеждат андроида като дистрибуция на Linux, но бих казал, че те са само 50% правилни. Всеки път, когато операционната система android се зарежда, тя основно зарежда ядрото като всяка друга дистрибуция на Linux, но останалата част от софтуера е напълно различна от тази на Linux. Приложенията за Linux няма да се стартират на android, а също и обратно, освен ако не са компилирани в chroot среда. Библиотеките, присъстващи в типичен дистрибутор за Linux и Android, са напълно различни една от друга. По принцип не можете да получите достъп до главния терминал в Android, като този в Linux. Това е основната причина, поради която хората обикновено инсталират Busybox, SuperSU и неговите двоични файлове след вкореняване, така че да имат по-подробен достъп от командния ред до ядрото и черупката. В Android няма черупка по подразбиране, но можете да я получите, като инсталирате терминален емулатор от Google Play Store. Терминалният емулатор изглежда така:

Времето за работа на android работи на виртуална машина в Dalvik. Този Dalvik VM всъщност е преводач на езика за програмиране на Java. Цялото изпълнение на android е написано на Java в Android и тъй като всички приложения на android са написани на Java, става много по-лесно и гладко за приложенията да се стартират във виртуалната среда. И тъй като всички приложения и дори време на изпълнение са написани на Java, за всеки разработчик става много по-лесно да персонализира всеки един бит на операционната система Android. Обикновено андроидът е проектиран да бъде операционна система за един потребител (за разлика от близалката и ружа, където може да има множество потребители.) За да направя това по-просто, позволете ми да го поставя в тази форма. Приложенията за Android не са нищо друго освен Linux процеси в края и така те са склонни да работят. И тъй като по-горе заявих, че всяко приложение има свой собствен процес, става по-лесно ядрото да създаде отделен UID за всеки процес и да обработва файловете и паметта на приложението без допълнителни усилия.

Всъщност има нещо повече от основите на операционната система Android, които споменах по-горе. Android има основен процес, известен като „Зиготата“ и той отлично прави това, което прави. Този процес всъщност стартира с командите за инициализация, когато android се стартира. Тук няма да навлизам в много подробности, но мисля, че основите на операционната система Android всъщност са достатъчни, за да започнете работа с android. За да получите повече информация, всъщност можете да посетите source.android.com и developers.android.com, който е официалният уебсайт от google за всяка актуализация на Android.

Препоръчителни статии

Ето няколко статии, които ще ви помогнат да получите повече подробности за операционната система Android, така че просто преминете през линка.

  1. HTML5 срещу Flash - как са различни
  2. Топ 8 полезни приложения за Office Suite за вашия Android
  3. Топ 5 безплатни Android емулатори за компютър
  4. Въпроси за интервю за Android - Топ 10 полезни въпроса
  5. Кариери в Android Development
  6. Топ 33 разлики на iPhone срещу Android