Il sistema operativo Android

Documenti analoghi
Fondamenti di sviluppo mobile su Android

ANDROID. Domenico Talia. Università della Calabria.

CORSO PROGRAMMAZIONE ANDROID

ANDROID. Mobile Web Design. Corso di programmazione di sistemi mobile 1

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

SISTEMI OPERATIVI ANDROID

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Introduzione alla programmazione Android. Emanuel Di Nardo

Introduzione ad Android. Lucidi del corso di Programmazione III A.A. 2015/16

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Programmazione Android

L00_Introduction. E. Falzone ITIS Magistri Cumacini

Il Sistema Operativo

Sistemi Operativi: Concetti Introduttivi

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Tecniche di progettazione e sviluppo di applicazioni mobile

Introduzione ad Android

Introduzione ad Android

Corso di Informatica

Prof. Pagani corrado JAVA

Sistema operativo & file system 1

Programmazione in ambiente

Horizone Server IN00B02WEB. Horizone PDK

Corso di programmazione di sistemi mobile 1. Android. Architettura, ambiente di sviluppo e struttura di un progetto

I THREAD O PROCESSI LEGGERI

v App Inventor

Traduzione e interpretazione

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Macchina Astratta: struttura e realizzazione.

I sistemi operativi. Prof. Daniele Contarino

Livelli del sottosistema di I/O

Open Source::accenni. Definizioni: software proprietario

Sistema Operativo. (hardware e software) della della macchina

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale.

INTRODUZIONE ALLE PIATTAFORME

Un'applicazione per lo scambio di contenuti multimediali in ambiente Android

Android development. Sviluppo di Mobile Apps sul sistema operativo di Google

Il sistema operativo Android

Introduzione al corso. Obiettivo del corso

TESI DI LAUREA IN INFORMATICA

Strumenti per l automazione del testing di applicazioni web Javascript-based

MA GLI ANDROIDI SOGNANO PINGUINI ELETTRICI? Introduzione ad Android. Il futuro prossimo dei telefoni cellulari.

Architetture Applicative Altri Esempi

UNIVERSITA CA FOSCARI VENEZIA - CT0090 INGEGNERIA DEL SOFTWARE 2016/2017 ARRIFORNISCETE. Documento di Analisi e Specifica 1.

Nota Tecnica UBIQUITY 7 TN0023. Il documento descrive le novità introdotte con la versione 7 della piattaforma software ASEM Ubiquity.

Architettura di un calcolatore

AMBIENTI DI PROGRAMMAZIONE

Componenti di un sistema operativo

Il Sistema Operativo. Informatica Sistema Operativo 1

Sviluppo su Android. Linux Day Torino 2010

La piattaforma Android

Tecnologie di virtualizzazione

LE ALTRE BOARD ARDUINO

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

2) Sistemi operativi. Lab. Calc. AA 2006/07

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2.

Informatica Generale 06 - Introduzione ai Sistemi Operativi

CHE COSA FA? P.S. io comunque dissento sul 4. Ing. Luca Frigerio

Mobile apps. Android - I

Android per sistemi embedded

Multimedia e Grafica 3D. 5 Corso sul Software Libero SaLUG! - autore Marco Pagliara aka MarcPag released under Creative Commons 3.

Informatica di base 6/ed

Configurazione di riferimento di IP Office Server Edition IP Office 8.1

Filippo Druda LO SVILUPPO IN ANDROID

Il software di sistema

PAT/RFS116-21/02/ Allegato Utente 2 (A02)

Traduzione ed Interpretazione

Traduzione ed Interpretazione. Queste sconosciute

INFORMATICA. L informatica comprende:

Sistemi Operativi ed interazione con HW e CAD

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

DAGLI OPEN DATA ALL INTERNET OF THINGS

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android

Contenitori. Subhraveti, D. Containers Beyond the Hype. AppOrbit, 2015.

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Nome e indirizzo del datore di lavoro

SISTEMI OPERATIVI. Struttura dei. Sistemi Operativi. Giorgio Giacinto 2015

ELABORAZIONE CONDIVISA DI TESTI CON ANDROID

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

Corso di programmazione

Riproduzione multimediale in Windows Phone. Brando Mordenti Matricola

Sistemi Operativi (prima parte) Appunti di TPI Elaborati dal prof. Ing. Mario Catalano Per la classe 3 Einf.

Architettura dei calcolatori e Software di sistema

Farete 7 e 8 Settembre

Roma, 19 ottobre 2012 ROMA CAPITALE. OPENDATA Proposta per lo sviluppo di un APP per l offerta di servizi innovativi ai cittadini

Servizi web. Crazione & restyling di siti professionali DESIGN LA NOSTRA PASSIONE

Sistemi Operativi per Sistemi di Elaborazione Ubiqui

la traduzione dei programmi ed introduzione a Java

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Elementi di Informatica

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Server LDAP. File Server. Domain Controller. Installazione di una piattaforma Linux Alessandro Brusò 24/05/2012

Il Software programmabili programma algoritmo

Transcript:

Il sistema operativo Android Introduzione ed Architettura Letture consigliate: Il sistema operativo Android http://www-ictserv.poliba.it/piscitelli/doc/lucidiso_eltlc_270/il%20sistema%20operativo%20android.pdf 1

Introduzione Cos è un sistema operativo È un unità organizzativa all interno di un computer L interfaccia tra le applicazioni e l hardware La sua funzione primaria è quella di amministrare le risorse operative disponibili Cos è un dispositivo mobile È un calcolatore munito di caratteristiche similari a quelli di un computer ma caratterizzato da dimensioni più ridotte e dall essere portatile e leggero Tali caratteristiche fisiche distintive ne consentono l'utilizzo in mobilità La dotazione hardware disponibile (GPS, accellerometro, magnetometro, giroscopio) unita all assenza di vincoli geografici supporta lo sviluppo di applicazioni specifiche (navigatore, augmented-reality AR) 2

Caratteristiche di un dispositivo mobile Limitate risorse computazionali Processori più potenti richiedono maggiori capacità di alimentazione e dissipazione di calore Built-in storage ridotto Possibilità di espansione mediante memoria esterna Gestione dell energia Vita della batteria, il salvataggio dei dati è un problema in caso di perdita di energia Compattezza e dimensioni ridotte dello schermo Non molto spazio per UI e per l applicazione stessa Il riutilizzo di componenti comuni è fondamentale Affidabilità Le funzionalità di telefonia hanno sempre la priorità più alta 3

Caratteristiche dei sistemi operativi mobili (1) Portabilità: essere trasportabile da un luogo ad un altro e/o adoperare il sistema operativo su qualsiasi smartphone senza preoccuparsi del brand e modello Affidabilità: il sistema deve essere in grado di offrire le funzioni richieste nelle condizioni fissate per uno periodo di tempo stabilito Connettività: possibilità di connettere due sistemi attraverso tecnologie wireless, bluetooth o infrarossi Diversità del prodotto: i fattori chiave che rendono il prodotto unico (strategia di marketing) Sistema Aperto: collezione di software, hardware e componenti che interagiscono mediante interfacce ben definite e disponibili pubblicamente Possibilità di espandere il sistema per qualsiasi scopo 4

Caratteristiche dei sistemi operativi mobili (2) Dimensione del kernel: il kernel è primo componente che viene caricato e rimane nella memoria del sistema operativo, influenzandone le capacità rilevante importanza Standard: adozione di moderni standard riguardanti il linguaggio di programmazione, la connettività, lo scambio di informazioni e la rete Sicurezza: le caratteristiche che il sistema operativo deve possedere al fine di essere sicuro in qualsiasi situazione 5

Introduzione ad Android Android è un sistema operativo open source per dispositivi mobili Stack software comprendente Un sistema operativo Linux-Based (gestione memoria, dispositivi e processi) Un middleware con librerie per la telefonia, video, grafica, programmazione UI e numerosi altri aspetti del dispositivo Un insieme di applicazioni basilari La piattaforma Android mostra caratteristiche di un framework desktop full-featured Google rende tale framework disponibile agli sviluppatori Java attraverso l SDK Android (Software Development Kit) che comprende: gli strumenti di sviluppo un emulatore del dispositivo un sistema di aggiornamenti dell SDK la documentazione i tutorial di base per acquisire familiarità con il sistema 6

Perché open? E' open perchè: Utilizza tecnologie open (linux kernel) Le librerie e le API utilizzate per realizzare Android sono le stesse che possiamo usare per le nostre applicazioni Il kernel linux è rilasciato sotto GNU General Public Licence (GPL) La piattaforma Android è rilasciata sotto Open Source Apache Software Licence 2.0 (ASL) Agli utenti è consentito usare il software per ogni scopo, distribuirlo, modificarlo e distribuire versioni modificate del software Le modifiche al kernel producono un worked derived, in fase di distribuzione è necessario rilasciare il codice sorgente con tutte le modifiche apportate utilizzando la stessa licenza GPL Tutto il resto può essere rilasciato con la licenza che si vuole (quindi NON necessariamente secondo i termini della stessa licenza o come software libero) 7

Cenni storici 2003: Andy Rubin, Rich Miner, Nick Sears e Chris White fondano la Android Inc. 2005: Android Inc. viene acquisito da Google 2007: Viene fondata la Open Handset Alliance, consorzio comprendente 84 (2015) membri tra cui produttori di hardware, di software e compagnie di telecomunicazione (oltre a Google stessa), con lo scopo di realizzare congiuntamente tutto il necessario per la diffusione del sistema standard aperti in ambito mobile 2007: viene rilasciato con licenza Apache una prima versione Android Beta SDK 2008: Android 1.0 (eseguibile su un unico dispositivo, HTC G1 ) 2009: Android 1.5 Cupcake (prima vera versione supportata da dispositivi ad ampia diffusione commerciale) 8

Caratteristiche Innovative Alcune delle caratteristiche innovative del sistema Android sono: L utilizzo di un kernel Linux Sistema aperto (trasparenza, accessibilità, codice open source); Basato sui componenti Le applicazioni possono così interagire tra loro e favorire il riuso di componenti L utilizzo del linguaggio di programmazione Java per lo sviluppo di applicazioni Nessun limite al tipo di applicazioni sviluppabili Sviluppo semplice ed immediato 9

Architettura del S.O. Java C/C++ Kernel 10

Linux Kernel (1) Android adopera un kernel Linux modificato, utilizzato nella versione 2.6 (Android < 4.0) 3.x (versione di Android dalla 4.0 alla 4.2) SELinux (Android 4.3) per la gestione della sicurezza, memoria, processi, rete e dispositivi. Il kernel fornisce un livello di astrazione tra l hardware ed il resto dello stack software Power Management: modulo per la gestione energetica costruito al di sopra di quello standard utilizzato in sistemi linux, con politiche di gestione molto restrittive: La CPU non dovrebbe consumare energia se nessuna applicazione o servizio la richiede I vari componenti richiedono risorse alla CPU mediante i cosiddetti wake locks. Se non ci sono wake locks attivi Android mette in pausa il processore Binder (IPC) Driver: driver basato su OpenBinder che permette la comunicazione tra processi (IPC) con un costo computazionale minore e quindi un più basso consumo di batteria 11

Linux Kernel (2) Low Memory Killer: basato su feedback provenienti dalle applicazioni utente, tale modulo è in grado di terminare i processi in modo da liberare spazio nella memoria centrale per soddisfare le richieste di altri processi Offre una maggiore flessibilità rispetto all Out Of Memory (OOM) killer presente nel kernel standard. Android ION Memory Allocator: (>= Android 4,0) è il driver (unificato) utilizzato per fornire regioni di memoria fisica contigue a librerie utente e altro hardware (<= Android 4,0: PMEM, Tegra, CMEM) Android Alarm: un driver che fornisce timer che possono risvegliare il dispositivo da uno stato di pausa ed un timer monotono che si avvia quando il dispositivo è attivo un applicazione può essere eseguita ad un tempo prefissato anche se il dispositivo è in sleep mode M-System: per memory card e altri dispositivi di memorizzazione flash Altri driver convenzionali Bluetooth Display Keypad, audio, etc 12

Runtime - Overview È un componente vitale nello stack Android ed è costituito da due parti fondamentali: La macchina virtuale Dalvik in futuro sarà integrata/sostituita da ART Le core libraries La VM Dalvik è stata sviluppata da Dan Bornstein ed è caratterizzata da tre principali obiettivi progettuali: Gira su dispositivi con memoria (RAM) ridotta e processori meno performanti Non si avvale di alcuno spazio swap Gira su dispositivi con potenza (energia) limitata Ogni applicazione su Android ha un proprio processo, una propria zona dati e la corrispondente istanza di Dalvik Virtual Machine La Dalvik VM è stata ottimizzata in modo che uno stesso dispositivo embedded sia in grado di eseguirne più istanze in modo efficiente 13

Runtime - Dalvik VM L utilizzo di una VM rende le applicazioni Android indipendenti dalla piattaforma sottostante (sistema operativo e hardware) La Dalvik VM esegue un bytecode incompatibile con quello della Java VM e che viene detto Dalvik Executable (.dex), ottimizzato per avere una occupazione di memoria minima Il ciclo di sviluppo (più comune e suggerito dagli svillupatori di Andoid stesso) prevede che una applicazione venga dapprima sviluppata in Java, e successivamente un tool (dx) converte i file.class, ottenuti dalla normale compilazione java, in file ottimizzati.dex la versione Java di riferimento è J2SE, NON J2ME La Dalvik VM è register-based (mentre la Java VM è stack-based) riduzione del numero di istruzioni e accessi in memoria 14

Runtime - Dalvik vs ART Dalvik è basata sull approccio Just-in-time (JIT): in fase di esecuzione l app viene compilata solo in parte in codice macchina nativo (tali segmenti prendono il nome di «traces»), il resto del bytecode viene eseguito previa traduzione (interpretazione) in real-time E stata introdotta una nuova virtual machine Android RunTime (ART) Sperimentale in Android 4.4 Kit Kat, si affianca alla Dalvik e deve essere abilitata manualmente A partire da Android 5.0 Lollipop è l unica VM ART è basata su tecnologia Ahead-of-time (AOT): l app viene interamente compilata in codice macchina nativo durante l installazione sul device e non durante l esecuzione utilizzando il dex2oat tool Il codice compilato dell applicazione è direttamente eseguibile Ciò riduce notevolmente i tempi di esecuzione rispetto ad un compilatore JIT (Just- In-Time) come quello integrato in Dalvik di conseguenza c è anche un corrispondente risparmio energetico Aumenta, invece, il consumo di spazio sulla memoria del dispositivo e il tempo di installazione della app Salvo eccezioni, è garantita la compatibilità delle applicazioni (il dex compilato è anche l input per la ART) 15

Runtime Core Libraries Le Core Libraries forniscono molte delle funzionalità delle analoghe librerie disponibili per il linguaggio di programmazione Java necessarie per lo sviluppo di applicazioni Funzionalità di I/O Collezioni Accesso ai file Android Standard Development Kit (SDK) è il contenitore di tutti gli strumenti fondamentali per lo sviluppo di applicazioni Android in Java Supporta la maggior parte della Java Platform, Standard Edition (SE) ad eccezione dell AWT (Abstract Window Toolkit) e Swing Al loro posto è reso disponibile un proprio e moderno framework per la realizzazione di interfacce grafiche utente (UI) 16

Librerie Native (1) Tale livello contiene le librerie che forniscono la maggior parte delle funzionalità messe a disposizione da Android core del sistema. Sono implementate in C/C++. Le capabilities di queste librerie sono esposte agli sviluppatori attraverso l'application Framework. BioniC: è un implementazione della standard C library, derivata da BSD e ottimizzata per l esecuzione su dispositivi portatili Linux-based. Dimensioni molto inferiori alla GNU C Library (glibc) ~200 kb vs ~ 400 kb. Ottimizzazione per processori low-clock. Implementazione basata su thread molto piccola e veloce del sistema POSIX (Pthread). 17

Librerie Native (2) SQLite: un potente e leggero DBMS relazionale disponibile per tutte le applicazioni, per la memorizzazione di qualsiasi tipo di dato strutturato. Zero-configuration non è un processo standalone, viene quindi linkato come libreria C Il database consiste di un unico file il cui formato interno è indipendente dalla piattaforma backup e trasferimento semplificato. L applicazione può accedere a SQLite attraverso semplici e convenzionali chiamate a funzioni no client-server. Surface Manager: modulo che gestisce le View, cioè i componenti di un'interfaccia grafica Ciascuna applicazione è associata ad un processo e disegna quindi la propria interfaccia in tempi diversi. Il SM coordina le diverse superfici che le applicazioni vogliono visualizzare sul display. Le superfici da visualizzare sono passate come buffer attraverso chiamate del componente Binder (IPC). In questo modo non si avranno finestre che si accavallano in modo scoordinato sul display. Gestisce l'accesso al sottosistema di visualizzazione su schermo e compone livelli di grafica 2D e 3D provenienti dalle varie applicazioni consentendone la visualizzazione contemporanea. Adopera gli acceleratori grafici hardware 3D e 2D. 18

Librerie Native (3) Le due librerie SGL e OPENGL/ES gestiscono rispettivamente la grafica 2D la prima e la grafica 3D la seconda. Sono specializzate per dispositivi mobili e permettono di accedere alle funzionalità degli (se disponibili) acceleratori grafici hardware. Il Media Framework si basa sulla libreria open source OpenCore di PacketVideo (uno dei membri fondatori dell OHA). OpenCore offre una struttura universale per applicazioni multimediali mobili. Gestisce i diversi CODEC per i vari formati di acquisizione e riproduzione audio e video (MPEG4, MP3, AAC, AMR, JPG, PNG e H.264). FreeType è uno strumento, scritto in C, adoperato per rasterizzare i caratteri in bitmap e fornire supporto per altre operazioni legate ai font (rendering). Il LibWebCore (WebKit) è browser-engine open source basato su WebKit (un framework utilizzato anche dai browser Safari e Chrome). Può essere integrato in qualunque applicazione sia Android browser che web view integrata. Rendering delle pagine in full-view (desktop). Supporta le moderne tecnologie web: CSS, JavaScript, DOM, AJAX. 19

Application Framework (1) 1 Tale livello comprende una serie di gestori toolkit di uso generale, insieme di API Java che sfruttano le librerie in C/C++ definite nello strato inferiore, per dare origine a operazioni ben precise, richiamate attraverso lo strato Applications. Pieno accesso alle stesse API del framework che vengono utilizzate dalle applicazioni di base. Gli sviluppatori possono concentrarsi nella risoluzione di problemi non ancora affrontati, avendo sempre a propria disposizione il lavoro già svolto da altri riuso e sostituzione dei componenti, «All applications are equals.». Content Providers: permettono alle applicazioni di accedere ai dati di altre applicazioni (es. la rubrica) o di mettere in condivisione i loro stessi dati. View System: gestisce l'insieme degli elementi grafici utilizzati nella costruzione dell'interfaccia verso l'utente (bottoni, griglie, text boxes). 20

Application Framework (2) Resource Manager: garantisce l accesso a risorse che non rappresentano codice (stringhe, grafici, immagini, file di layout e configurazione) Notification Manager: permette a tutte le applicazioni di gestire alert personalizzati verso l utente sotto forma di vari eventi (icona nella barra di notifica, accensione LED, suoni o vibrazioni) Activity Manager: le Activity sono entità associate ad una schermata dell'applicazione. Gestisce il ciclo di vita delle activity e fornisce un meccanismo elementare per la navigazione tra le varie schermate. Telephony Manager: gestisce l interazione con le funzionalità caratteristiche di un telefono (avviare una telefonata, controllarne lo stato, SMS). Location Manager: consente alle Location Based Application (LBA) di utilizzare API per accedere a funzioni legate alla location, tra cui le operazioni di georeferenziazione (e attivare eventi date delle precondizioni) Window Manager: permette di gestire le finestre delle diverse applicazioni, gestite da processi diversi, sullo schermo del dispositivo. Astrazione con API Java, dei servizi nativi del Surface Manager. Package Manager: gestisce i processi di installazione e rimozione delle applicazioni dal sistema. 21

Applications Lo strato finale con cui l utente interagisce con il sistema. Android corredato di un insieme di applicazioni di base: client per email, programmi per l invio di SMS, calendario, mappe, browser, contatti, etc Ogni applicazione è scritta (generalmente) in Java. L applicazione compilata è impachettata attraverso il tool aapt in un package Android.apk. Come i formati.jad e.jar in J2ME, i file.apk sono distribuiti ed installati su dispositivi Android. Ogni applicazione è un singolo processo Linux, ha la propria istanza di VM ed ha assegnato un unico Linux user ID. Una caratteristica chiave di Android è che: Ogni applicazione può pubblicare le sue capabilities e le altre possono farne uso. Le applicazioni Android non hanno un singolo entry point. 22

Android vs Linux 23