+ All Categories
Home > Documents > Cursul 13

Cursul 13

Date post: 14-Jan-2016
Category:
Upload: judson
View: 17 times
Download: 1 times
Share this document with a friend
Description:
Cursul 13. 13 Androi d. Suport curs 13. Analysis of Dalvik-VM http://imsciences.edu.pk/serg/wp-content/uploads/2010/10/1st_Analysis-of-Dalvik-VM.pdf A Survey on Android vs. Linux http://handycodeworks.com/wp-content/uploads/2011/02/linux_versus_android.pdf. - PowerPoint PPT Presentation
51
Cursul 13 13 Android
Transcript
Page 1: Cursul 13

Cursul 13

13Android

Page 2: Cursul 13

Suport curs 13

• Analysis of Dalvik-VMo http://imsciences.edu.pk/serg/wp-content/uploads/

2010/10/1st_Analysis-of-Dalvik-VM.pdf

• A Survey on Android vs. Linuxo http://handycodeworks.com/wp-content/uploads/2011/02/

linux_versus_android.pdf

Page 3: Cursul 13

Dispozitivele mobile cuceresc lumea

Page 4: Cursul 13

Toata lumea are macar unul…

Page 5: Cursul 13

Toata lumea are macar unul…

Page 6: Cursul 13

Cine conduce pe cine?

Page 7: Cursul 13

Raspuns

• Oamenii conduc masinile– Scriu sisteme de operare– Programe– …

Page 8: Cursul 13

Cum arata un sistem de operare pentru dispozitive mobile?

• Stim cum arata on SO pentru desktop/server

• Care sunt diferentele hardware intre dispozitivele mobile si servere?

Page 9: Cursul 13

Hardware dispozitive mobile

• Procesoare ARM (in loc de x86)

• Memorie limitata

• Consumul de energie conteaza enorm

• Storage flash (in loc de HDD)

• User Interface – conteaza!

• Mobilitate: acces la Internet?

Page 10: Cursul 13

Android

• Sistem de operare Open source pentru sisteme mobile• Dezvoltat de Google pe kernelul de Linux, versiunea 2.6• De ce Linux?

o Drivereo Gestiune procese și memorieo Suport rețeao Alte servicii

• Au fost adăugateo Biblioteci C propriio Mediu de rulare JAVA (Dalvik Virtual Machine)o Framework pentru aplicații

Page 11: Cursul 13

Arhitectura

Page 12: Cursul 13

Arhitectura (2)

• Suportă doar x86 și ARM• x86

o MIDs (Mobile Internet Device) – desktop/laptop/server• ARM

o telefoane mobileo Nokia, Research in Motion (RIM), Apple, HTC and Samsungo Supremația ARM in dispozitivele mobile (98%)o Consumul de energie – principalul factor de design

Page 13: Cursul 13

ARM vs x86

• Marea diferență între x86 și ARM este arhitectura setului de instrucțiunio X86 – CISC (Complex Instruction Set Computer)o ARM – RISC (Reduced Instruction Set Computer)

• Consum mic de energieo ARM7100

72mW la 14 MIPS 33mW idle 33uW standby

o Atom 10W pentru MIDso Medfield lansat pe piata acum (comparabil cu ARM la consum de energie)

Page 14: Cursul 13

Android Kernel

• Driver alarmao implementează timere pentru a trezi device-urile din sleep

• Ashmemo permite aplicațiilor să partajeze memoria și să o gestioneze la nivel de

kernel• Binder driver

o comunicare între procese• Gestiunea consumului

o peste Linux Power Management (PM)o implementează o politică mai agresivă

Page 15: Cursul 13

BIONIC

• Biblioteca C standard din Android• De ce?

o Google nu a vrut LGPL in userspaceo GNU C nu este bună pentru a lucra în sistemele integrate unde

există mari constrângeri de memorie• Caracteristici:

o BSD C + codul sursă Androido Dimensiune micăo Viteză

Page 16: Cursul 13

BIONIC – Suport C++

• Nu implementează suport pentru excepții (nu aruncă și nici nu pasează mai departe)o excepțiile adaugă overhead la nivelul apelului de funcțiio în plus ele sunt implementate în JAVA, limbajul folosit pentru

dezvoltarea aplicațiilor

• Nu există suport pentru C++ STL (Standard Template Library)

Page 17: Cursul 13

BIONIC – Thread-uri

• GNU C oferă NPTL (Native POSIX Thread Library), dar acestea au nevoie de memorie și spațiu pe disc.

• Android vine cu o implementare proprie a pthreadso mutex, rwlocks, variabile de condiție sunt implementate folosind

kernel futexeso nu există pthread_cancel() - thread-urile se pot termina, dar nu pot

fi omorâte de alteleo nu există pthread_atfork() 

folosită de thread-urile ce apelează fork() primește ca parametri funcții ce se vor executa înainte de fork(), dar

și după în copil sau părinte

Page 18: Cursul 13

BIONIC – General

• Zonă de memorie partajată pentru configurărio Ex: configurările DNS nu se fac în /etc/resolv.confo valorile pot fi accesate/modificate prin property_get() și

property_set()

• Nu există openlog() sau syslog()o __libc_android_log_print()

• Nu există AIO (Asynchronous I/O)

• Propriul sistem de gestionare a utilizatoriloro nu există /etc/passwd, getpwent()o android_filesystem_config.h – 25 conturi

Page 19: Cursul 13

Dalvik Virtual Machine

• Nokia, Motorola și Samsung includ o versiune optimizată de JAVA Virtual Machine, Java 2, Micro Edition (J2ME)

• Constrângerio CPU înceto cu puțin RAMo cu un SO fără swapo pe un dispozitiv cu baterie

• Aplicațiile Android rulează propriul proces, cu instanța de DVM separată.o DVM execută Dalvik Executable(.dex), format optimizat cu privire la

spațiul ocupat

• Se bazează pe nucleul Linux pentru funcționalități precum threading și gestiunea memoriei

Page 20: Cursul 13

DVM – Formatul DEX (1)

• JAVAo codul sursă compilat în java bytecode, salvat într-un fișier .classo .class rulat în JVM

• Androido codul sursă compilat și rezultatul salvat în fișierul .classo folosind instrumentul ‘dx’ se face conversia de la .class la .dexo .dex se execută în DVM

Page 21: Cursul 13

DVM – Formatul DEX (2)

Page 22: Cursul 13

DVM – Formatul DEX (3)

Page 23: Cursul 13

DVM – Concluzii

• Memorieo folosire .dex partajate de procese

• Redundanță și spațiuo agregare .class într-un singur fișier .dex

• Verificare byte-codeo este un proces încet, însă a fost optimizat printr-o pre-verficiare

• Exista compilator JIT (Just-In-Time) de la versiunea Android 2.2o foarte rapid, optimizând codul în scurt timpo folosește puțin RAM - 100k

Page 24: Cursul 13

Dispozitive de stocare

Page 25: Cursul 13

Memoria flash

• Memoria flash are un timp de acces mic și este rezistentă la șocuri

Doua tipuri de memorie flash:

o NOR – densitate mică, oferă scrieri încete și citiri rapideo Citire si programare la nivel de octeto Stergere/reprogramare la nivel de block (64,128 sau 256KB)

o NAND – cost mic, densitate mare și oferă scrieri rapide și citiri înceteo O pagina are 512, 2048 sau 4096B.o Un block contine 32-128 de pagini – 16KB pana la 512KBo Citire si programare la nivel de paginao Stergere la nivel de block

• Dispozitivele mobile folosesc NAND pentru stocare și NOR pentru cod și execuție

• Dispozitivele mobile folosesc NAND pentru stocare și NOR pentru cod și execuție

Page 26: Cursul 13

Caracteristicile memoriei Flash

• Nu exista “seek”• Citirile aleatoare sunt la fel de eficiente ca si cele contigue

• Rescrierea blocuriloro când dorim rescrierea/ștergerea oricărei memorii, trebuie șters tot

blocul ce o conțineo Solutie: tinem minte dirty pages, stergem cand tot block-ul e dirty

Page 27: Cursul 13

Caracteristicile memoriei Flash

• Uzura memorieio există un număr limitat de cicli șterge-scrie (100.000-1 milion)o Rezolvare:

tehnici de scriere uniformă BBM (Bad Block Management) - verificare scrieri și

remaparea sectoarelor defecte

• Perturbarea la citireo Celulele de langa celula citita isi pot schimba valoarea in timp

daca nu sunt rescrise (la cateva sute de mii de citiri).o Rezolvare: tine minte nr. de citiri si rescrie preventiv celulele

adiacente

Page 28: Cursul 13

Sistemul de fișiere

• YAFFS, primul sistem de fișiere optimizat petru memoria flash NAND

• Noile sisteme Android folosesc ext4o dispozitivele folosesc un flash ce apare pentru procesor ca un card

SD, kernel-ul tratându-l ca și un block device

Page 29: Cursul 13

YAFFS (1)

• Yet Another Flash File System

• Folosit cu succes pe Linux, WinCE, pSOS, eCos, ThreadX

Page 30: Cursul 13

YAFFS - Caracteristici

• Jurnalizareo folosire log-uri pentru recuperare

• Garbage collectiono optimizato executat când spațiul liber devine foarte mic – se alege blocul cu ceva

pagini murdare, iar paginile bune se mută pe alt bloc• Cerințe mici de memorie• Flexibilitate

o folosește o definiție generală a flash-urilor NAND, putând fi configurat și customizat pentru alte memorii flash

• Portabilo dezvoltat pentru Linux, dar modular și ușor de modificat pentru alte

sisteme• Robust

o bine testat și folosit în multe produse• Suport POSIX

o directoare, link-uri simbolice și hard

Page 31: Cursul 13

YAFFS vs. EXT3

• Accesibilitate fișiereo sisteme de fișiere pentru discuri sunt optimizate pentru căutărio device-urile ce folosesc memoria flash nu au latențe la căutare și

pot accesa fișiere random

• Blocarea ștergeriio ușor să ștergi un fișier de pe disco consumator de timp pentru flash de aceea ar trebui făcută când

device-ul este idle

• Tehnici împotriva uzuriio numai memoria flash are de a face cu o astfel de problemă

Page 32: Cursul 13

Reducerea consumului de energie

Page 33: Cursul 13

Gestiunea bateriei - Linux

• Este necesar reducerea consumului energetic datorită creșterii cerinței de putere din partea calculatoarelor și a laptop-urilor.

• APM (Advanced Power Management) sau ACPI (Advanced Configuration and Power Interface)o scalarea voltajeloro activare sleep-modeo dezactivarea memoriei cache

• Folosește "runtime PM" în versiunele foarte noi de kernel, pentru a face shutdown la device-uri atunci cand acestea nu sunt folosite

• Folosește CPU idle pentru a trece procesorul într-o stare de consum redusă

Page 34: Cursul 13

Gestiunea bateriei - Android

• Folosește arhitectura ACPI din Linux, dar diferă abordarea folosită

• Încearcă intrarea în suspend to RAM automat (starea ACPI S3) "când se poate" pentru a conserva energie

• Propria extensie Linux (PowerManager)

• Modulul are drivere pentru controlul perifericelor (display și backlight, lumina tastaturii) accesate prin primitive WakeLocks

• PowerManager monitorizează viața bateriei și statusul device-ului

• Coordonează circuitul de încărcare și se ocupă de închiderea device-ului când bateria ajunge la un pas critic

Page 35: Cursul 13

Gestiunea bateriei – Wake Lock

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

Flag CPU Ecran Tastatura

PARTIAL_WAKE_LOCK On* Off Off

SCREEN_DIM_WAKE_LOCK On Dim Off

SCREEN_BRIGHT_WAKE_LOCK On Bright Off

FULL_WAKE_LOCK On Bright Bright

Page 36: Cursul 13

Gestiunea bateriei - Arhitectura

Page 37: Cursul 13

Retea

Page 38: Cursul 13

Acces la Internet de pe mobil

3G celltower

Page 39: Cursul 13

Acces la Internet de pe mobil3G celltower

Page 40: Cursul 13

Acces la Internet de pe mobil3G celltower

Page 41: Cursul 13

Acces la Internet de pe mobil3G celltower

Offload to WiFi

Page 42: Cursul 13

Acces la Internet de pe mobil3G celltower

All ongoing TCP connections die

Page 43: Cursul 13

Cuvinte cheie

• Android• Google• BIONIC• ARM• x86• Dalvik Virtual Machine• DEX

• YAFFS• NOR, NAND• APM, ACPI• PowerManager• WakeLocks

Page 44: Cursul 13

Intrebari

• Cate calorii trebuie sa manance cainele pe zi pentru a nu se ingrasa?

• Cum rezolvam problema conectivitatii unui dispozitiv mobil?

Page 45: Cursul 13

MPTCP Connection Management

SYN

MP_CAPABLE

X

Page 46: Cursul 13

MPTCP Connection Management

SYN/ACK MP_CAPABLE Y

Page 47: Cursul 13

MPTCP Connection ManagementSUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 48: Cursul 13

MPTCP Connection Management

SYN JOIN Y

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 49: Cursul 13

MPTCP Connection Management

SYN/ACK

JOIN X

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 50: Cursul 13

MPTCP Connection Management

SUBFLOW 2CWNDSnd.SEQNORcv.SEQNO

SUBFLOW 1CWNDSnd.SEQNORcv.SEQNO

FLOW Y

Page 51: Cursul 13

Întrebări

?


Recommended