Sunteți pe pagina 1din 12

1

Proiect comunicatii mobile


Arhitectura sistemului Android









PANDELE STEFAN TC 42 B

2

1. Introducere
Android este o platforma software i un sistem de operare pentru dispozitive i
telefoane mobile bazat pe nucleul Linux, dezvoltat iniial de compania Google, iar mai
trziu de consoriul comercial Open Handset Alliance. Android permite dezvoltatorilor s
scrie cod gestionat n limbajul Java, controlnd dispozitivul prin intermediul bibliotecilor Java
dezvoltate de Google. Aplicaiile scrise n C i n alte limbaje pot fi compilate n cod
main ARMi executate, dar acest model de dezvoltare nu este sprijinit oficial de ctre
Google.
Lansarea platformei Android la 5 noiembrie 2007 a fost anunat prin fondarea Open
Handset Alliance, un consoriu de 48 de companii de hardware, software i
de telecomunicaii, consacrat dezvoltrii de standarde deschise pentru dispozitive
mobile. Google a lansat cea mai mare parte a codului Android sub licena Apache, o licen
de tip free-software i open source.
Versiuni Android:
Cupcake (1.5, Aprilie 2009)
Donat (1.6, Septembrie 2009)
Eclair (2.x, Octombrie 2009-Ianuarie 2010)
Froyo (2.2.x, Mai 2010 - Noiembrie 2011), 2.6.32, Nexus One
Gingerbread (2.3.x, Decembrie 2010 - Septembrie 2011)
Honeycomb (3.x, Februarie 2011-Februarie 2012)
Ice Cream Sandwich (4.0.x, Octombrie 2011-Martie 2012)
Jelly Bean (planificat pentru al treilea trimestru 2012)
Key Lime Pie (2013)

Sistemul Android poate fi folosit pentru:
Aplicatii framework, permite refolosirea i nlocuirea de componentelor soft
Telefonie GSM, dependenta de hardware
Masina virtula Dalvik, optimizata speciala pentru dispozitive mobile
Bluetooth, EDGE, 3G, si WiFi, dependente de hardware
Web-browser integrat, bazat pe WebKit open source
Camera, GPS, busola si accelerometru , dependente de hardware
SQLite, pentru stocarea de date
Suport media, cuprinde formatele obisnuite audio, video si imaginilor. Cuprinde formatele
(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
Optimizari grafice,
2D bazata pe o librarie de grafica 2D performanta
3D bazata pe libraria OpenGL ES (1.0), optional poate cuprinde si accelerare
hardware
Mediu de dezvoltare, include emulatoare de dipozitive, unelete pentru debug si plug-in
pentru Eclipse IDE

3

2. Arhitectura sistemului Android
Componentele hardware ale unui smartphone



Microprocesor:
Arhitectura RISC(Reduced Instruction Set Computing) de tip ARM(Advance RISC
Machine)
Instructiuni simple (nu are virgula mobile)
Consum redus de energie Scalarea vitezei in functie de necesitati
Exemple: Qualcomm MSM 8260nSnapdragon 1.2 GHz dual-core processor;
SamsungHummingbird 1 GHz ARM Cortex-A8 processor
Coprocesoare Audio/Video:
Procesoare specializate pe encodare si decodare audio/video
Capacitate de encodare/decodare HD 1080p H.264
Exemple:GeForce Ultra Low Power GPU(in cipsetul Nvidia Tegra) PowerVR SGX535
GPU(in iPhone 4)

Memoria RAM:
SDRAM (Synchronus Dynamic Random AccesMemory)
DDR1/DDR2(Double Data Rate)
Capacitate:32MB-1GB
4


Memoria ROM:
Spatiu special read-only
Contine imaginea initiala a SO-ului
Persista in urma unui Hard Reset

Android este un sistem de operare open source dezvoltat de Google bazat pe kernel-ul
Linux 2.6. Kernel-ul Linux a fost ales datorita driverelor existente, memoriei i
managementului proceselor, mpreun cu alte servicii de baza pentru sistemul de operare. Pe
lng nucleul Linux diferite biblioteci s-au adugat la platforma pentru a sprijini o
funcionalitate mai mare. Multe dintre aceste biblioteci provin din proiecte open source. Cu
toate acestea, echipa Android a creat propria biblioteca C pentru a rezolva de exemplu
problemele legate de licenta. De asemenea, ei au dezvoltat propriul motor de execuie Java,
optimizat pentru resursele limitate disponibile pe o platform mobil, numit Dalvik Virtual
Machine. In final a fost creat si cadrul de aplicare, pentru a asigura afisarea librariilor intr-un
mod cat mai clar pentru utilizatori.
In continuare vom evidenia diferenele majore dintre un sistem standard de operare
Linux i Android.

1. UX: Stratul UX al Android este mult mai avansat dect Linux. Este optimizat pentru
touch screen si expune un set foarte bogat de API-uri pe care un dezvoltator le poate utiliza cu
uurin. Linux pe de alt parte, are o multitudine de diferite biblioteci UI sau o mare varietate
de platforme i avnd n vedere c este conceput ca un sistem de operare de baz, lasa
integrarea UX la alegerea dezvoltatorului.
2. Suport pentru protocoale de conectivitate: Android are un manager de conectivitate
dezvoltat, care include conexiuni wireless prin diverse protocoale. Acest lucru este perfect
integrat att la nivelul serviciilor cat i UI i este uor s se extind.
3. Comunitatea de dezvoltatori: Android are un SDK i un proces de publicare bine
stabilit pentru noi aplicaii.
4. Java: Android are un JVM optimizat (Dalvik VM), care permite unui programator
Java sa scrie aplicaii care funcioneaz eficient pe acesta. Linux pe de alt parte, susine o
multitudine de limbaje de programare, dar nu are un JVM la fel de bine optimizat ca cel al
Android-ului.
5. Telefonie integrata: Android contine GSM, CDMA, LTE si de asemenea poate
asigura apeluri VoIP.

Librarii de baza:

Toate aceste librarii sunt scrise in C/C++:
Surface Manager:
o Este responsabil cu compunea diferitelor ferestre si afisarea acestora pe eran;
o Poate compune diferite ferestre ce sunt detinute de diferite aplicatii, ce ruleaza in
procese diferite, toate fiind actualizate in momente diferite;
5

o Se asigura ca pixeli sunt afisati pe eran atunci cand trebuie.
Principalele 2 librarii grafice sunt : OpenGL|ES si SGL
Aceste 2 librarii pot fi combinate astfel incat sa poata fi folosite in aceeasi aplicatie:
OpenGL ES este o librarie 3D:
Conine o implementare software care poate fi folosi accelerarea hardware dac
dispozitivul are ataat un cip de procesare 3D. SGL este o librarie pentru desene/afisare
2D
o Aceasta este libraria cea mai utilizat pentru afisare.
MediaFramework
o Se bazeaz pe PacketVideo's OpenCORE, poate nregistra i utiliza majoritatea
formatelor de date audio i video;
o Cuprinde toate codecurile ce alcatuiesc experienta media MPEG4, H.264, MP3,
AAC, AMR, JPG si PNG.
Fonturi (FreeType)
o Curpinde fonturie folosite.
SSL
SQLite
o Libraria folosit pentru a stoca date.
WebKit
o Motor open source folosit pentru navigarea web, acelasi browser se este folosit
de Safari(apple);
o Optimizat pentru o functionare foarte bun pe ecrane mici pentru telefoane
mobile.
Libc
o Sistemul de biblioteci standard C .


3. Kernel
Arhitectura se bazeaz pe Kernel Linux 2.6. Acesta este folosit pentru interfa dintre
componenta software i componenta hardware. Dac dorii s utilizai platform Android pe
un nou dispozitiv hardware n prima etap trebuie s instalai Linux i s montai toi driverii.
Este folosit Linux deoarece ofer un mediu stabil, cu driveri deja existeni:
Exist driveri pentru:
Afiaj
Camer
Memoria Flash
Binder(IPC)
Tastatur
WiFi
Audio
De asemenea ofer:
Gestionarea memoriei;
6

Gestionarea proceselor;
Securitate modelului;
Gestiunea retelelor;
Infrastructura de baz a sistemului de baz robust si garantat de-a lungul timpului.
Linux Kernel 2.6 aduce nou: driver-ul alarm, ashmem (Android shared memory
driver), binder driver (Inter-Process Communication Interface), gestiune consum, low
memory killer, kernel debugger, logger.

Driver-ul alarm implementeaz timere pentru a trezi device-urile din sleep.

Ashmem permite aplicaiilor s partajeze memoria i s o gestioneze la nivel de kernel.

Binder driver asigur comunicarea ntre procese. Un serviciu nregistrat ca un serviciu
IPC nu trebuie s se gndeasc la alte thread-uri, pentru c binder-ul le va monitoriza i
gestiona. Totodata asigur si sincronizare ntre procese.

Gestiunea consumului este peste Linux Power Management (PM) si implementeaz o
politic mai agresiv.


4. Maina virtual Dalvik
Dalvik este o main virtual care a fost creat pentru platforma Android. Este numit
dup un sat din Islanda i a fost scris prima oar de Dan Bornstein. Spre deosebire de
majoritatea mainilor virtuale care sunt pe baz de stiv, arhitectura Dalvik este pe baz de
registre. Este optimizat s foloseasc mai puin spaiu.
Caracteristicile tuturor sistemelor mobile sunt memoriile RAM mici, procesor cu
performane sczute, memorie flash lent, i durat de via limitat a bateriei. Prin urmare, a
fost nevoie de o main virtual care poate oferi performane mai bune cu resurse limitate. i
aa a aprut Dalvik, proiectat s mearg pe Linux kernel, ce permite pre-procesare pentru
execuia mai rapid a aplicaiilor, proceduri de securitate a ID-ului utilizatorului i
comunicare ntre procese. Dalvik funcioneaz pe ARM-uri cu resurse limitate, este o
arhitectur a procesorului de 32 bit, bazat pe o arhitectur cu set redus de instruciuni,
dezvoltat de ARM.
Procesoarele ARM( Advanced Risc Machines) sunt folosite datorit arhitecturii simple,
ce le face utilizabile pe dispozitive cu putere sczut, cum sunt telefoanele mobile.
Arhitectura
Dalvik este arhitectur bazat pe regitri, ceea c o face mai rapid i mai eficient
pentru a rul codul aplicaiei. Trebuie s foloseasc codul byte Dalvik, n favoarea celui byte
Java.

7

Formatul fiierelor .dex
Executabilele Dalvik sunt compilate de main virtual Dalvik, i sunt comprimate
ntr-un singur fiier de tip pachet android .apk( Android Package).
Fiierele .dex pot fi create automat translatand aplicaii compilate, scrise n Java.
Fiierul .dex este mprit n diferite seciuni, fiecare din ele fiind de un tip particular.




Anatomia fiierului .dex
8


Conversia din .jar in .dex


5. Sistemul de fiiere

YAFFS este primul sistem de fiiere NAND optimizat petru memoria flash.
Memoria flash are un timp de acces mic i este rezistent la ocuri
Tipuri de memorie flash:
NOR densitate mic, ofer scrieri ncete i citiri rapide
NAND cost mic, denistate mare i ofer scrieri rapide i citiri ncete

Dispozitivele mobile folosesc NAND pentru stocare i NOR pentru
cod i execuie. Noile sisteme Android folosesc ext4 - dispozitivele folosisc un flash ce apare
pentru procesor ca un card SD, kernel-ul tradndu-l ca i un block device.
9


Limitri

tergerea blocurilor

cnd dorim tergerea oricrei memorii, trebuie ters tot blocul ce o conine
NAND ofer accesarea oricrei date, dar nu ofer acelai acces pentru rescriere sau
tergere
Rezolvare: marcarea segmentelor ca dirty, iar cnd tot blocul este dirty se terge
complet

Uzura memoriei

exist un numr limitat de cicli terge-scrie
Rezolvare: tehnici de scriere uniform sau BBM (Bad Block Management) - verificare
scrieri i remaparea sectoarelor defecte.


YAFFS

Yet Another Flash File System, Folosit cu succes pe Linux, WinCE, pSOS, eCos,
ThreadX.




10

Caracteristici:

1. Jurnalizare: foloseste log-uri pentru recuperare

2. Garbage collection: optimizat; executat cnd spaiul liber devine foarte mic se alege
blocul cu ceva pagini murdare, iar paginile bune se mut pe alt bloc.
3. Cerine mici de memorie
4. Flexibilitate: folosete o definiie general a flash-urilor NAND, putnd fi configurat
i customizat pentru alte memorii flash.
5. Portabil, dezvoltat pentru Linux, dar modular i uor de modificat pentru alte sisteme.
6. Robust, este bine testat i folosit n multe produse.
7. Suport POSIX prin directoare, link-uri simbolice i hard.


YAFFS EXT3

Caracteristici:

1. Accesibilitate fiiere: sistemele de fiiere pentru discuri sunt optimizate pentru cutri;
device-urile ce folosesc memoria flash nu au latene la cutare i pot accesa fiiere
random.
2. Blocarea tergerii: uor s tergi un fiier de pe disc; consumator de timp pentru flash
de aceea ar trebui fcut cnd device-ul este idle.
3. Tehnici mpotriva uzurii: numai memoria flash are de a face cu o astfel de problem


6. Gestiunea bateriei

Folosete arhitectura ACPI din Linux, dar difer abordarea folosit
ncearc intrarea n suspend to RAM automat (starea ACPI S3) cnd se poate
pentru a conserva energie.
Are propria extensie Linux (PowerManager). Modulul are drivere pentru controlul
perifericelor (display i backlight, lumina tastaturii) accesate prin primitive WakeLocks.
PowerManager monitorizeaz viaa bateriei i statusul device-ului. Coordoneaz
circuitul de ncrcare i se ocup de nchiderea device-ului cnd bateria ajunge la un pas
critic.

Wake lock

11

Dac se ine un wakelock partial, CPU va continua s ruleze, chiar dac utilizatorul
vrea s pun device-ul n sleep.

Arhitectura




Gestiunea bateriei pentru Linux

Este necesar reducerea consumului energetic datorit creterii cerinei de putere din
partea calculatoarelor i a laptop-urilor.
APM (Advanced Power Management) sau ACPI (Advanced Configuration and Power
Interface):
scalarea voltajelor
activare sleep-mode
dezactivarea memoriei cache
Folosete "runtime PM" n versiunele foarte noi de kernel, pentru a face shutdown la
device-uri atunci cand acestea nu sunt folosite.
Folosete CPU idle pentru a trece procesorul ntr-o stare de consum redus.











12

7. Dezvoltarea de aplicatii

Pentru a putea dezvolta o aplicatie proprie trebuie sa ne impartim munca in 4 etape
principale:
Activitatea in sine (Activity)
Reprezinta de ferestrele principale de utilizare, de exemplu pentru gestiunea
unei adrese de mail avem: lista de mailuri, vizualizarea unui mail individual,
un eran de compunere a unui mail nou.

InternReceiver
Poate fi folosit pentru a genera mesaje de instiintare atunci cand se schimba un
status sau parametri de utilizare (nivel retea...)
Poate porni aplicatii in momentul in care exista evenimente ce necesita acele
aplicatii. De exemplu atunci cand suna telefonun, se cocteaza la retea sau orice
alt moment de timp.

Serviciu (Service)
Reprezinta un task, ce nu are o interfata propiu-zisa
In general este de o durata mai mare, apare atunci cand dorim sa pornim o
melodie (folosind o aplicatie adecvata) si dupa aceea dorim si sa navigm pe
internet => aplicatia media player este translatata intr-un serviciu ce va
function pe fundal
ContentProvider

S-ar putea să vă placă și