Studio degli Android Runtime Environments ART e Dalvik

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Studio degli Android Runtime Environments ART e Dalvik"

Transcript

1 Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Sistemi Operativi Studio degli Android Runtime Environments ART e Dalvik Anno Accademico 2014/2015 Candidato: Pierluigi De Gregorio matr. N46/1365

2 Dedico questo elaborato ai miei genitori, mia forza economica e morale, e alla mia ragazza che mi ha sempre sostenuto e ha sempre creduto in me. Grazie a loro ho sempre trovato la forza di rialzarmi ad ogni caduta e combattere ogni ostacolo.

3 Indice Introduzione iv 1 Dalvik Virtual Machine Un architettura basata su registri File.DEX Layout del file.dex File ODEX Differenze con la JVM Compilatore JIT Zygote Garbage Collector Android Runtime (ART) Miglioramenti apportati DEX2OAT Struttura del file.elf Compilazione Ahead-Of-Time (AOT) Garbage Collector Conclusioni 25 Bibliografia 26 ii

4 Elenco delle figure 1 Architettura Android OS v 1.1 Confronto tra JVM e DVM Struttura di un file.jar(sinistra) e di un file.dex(destra) Snellimento del file.jar Processo Zygote Confronto tra la conversione in Android Dalvik e ART file.elf Processo di compilazione in ART iii

5 Introduzione Il 5 novembre 2007 si affacciò per la prima volta sul mondo dei dispositivi mobile Android OS, il sistema operativo più utilizzato, ad oggi, dalle aziende produttrici di smartphone e smartwatch. Basato su kernel Linux, Android OS è un sistema operativo Open Source che utilizza software basati su diverse licenze, tra le quali la Licenza Apache grazie alla quale Google, azienda proprietaria di questo OS, può rilasciare liberamente distribuzioni e modifiche del codice sorgente[1]. A tal proposito, infatti, Google ha dato vita al cosiddetto Android Open Source Project (AOSP), che ha lo scopo principale di migliorare l esperienza mobile per gli utenti e garantire che i dispositivi mobili siano più consapevoli della posizione e delle preferenze del loro proprietario [2]. In questo modo il colosso di Mountain View è riuscito ad ottenere due grandi risultati: da un lato ha dato vita ad una grande comunità di sviluppatori che ogni giorno supportano e danno vita ad applicazioni che migliorano sensibilmente le funzionalità dei dispositivi, dall altro si è assicurata una vasta compatibilità di dispositivi mobile mettendo a disposizione tool di sviluppo e librerie (sempre Open Source) quali Android Software Developer Kit (SDK) e Native Development Kit (NDK). Come è stato accennato in precedenza, Android OS è stato creato per essere leggero e in grado di supportare dispositivi con hardware differenti. Ma come è strutturato questo sistema operativo? Se guardiamo Android da un punto di vista architetturale, possiamo notare come esso si sviluppa su un architettura a layer (i livelli inferiori offrono servizi ai livelli superiori). In particolare distinguiamo 4 livelli principali: Linux Kernel: è il layer più basso e fornisce, attraverso vari driver affidabili, una virtualizzazione dell hardware. Il motivo della scelta del kernel di Linux iv

6 Introduzione Figura 1: Architettura Android OS deriva dall esigenza di creare un OS in grado di fornire un livello elevato di sicurezza, una buona gestione della memoria nonché una elevata affidabilità. In questo modo, infatti, il vendor che intende dotare i propri dispositivi di Android non dovrà fare altro che installare il Linux Kernel ed implementare gli opportuni driver compatibili con il proprio hardware; Librerie native: contiene le librerie native (scritte in C/C++) tra le quali citiamo Surface Manager (si occupa di gestire l interfaccia grafica e le varie finestre presenti sullo schermo), OpenGL ES (gestisce elementi grafici), SGL(libreria che gestisce prettamente la grafica 2D), Secure Sockel Layer(si occupa della comunicazione sicura su socket). Queste librerie garantiscono, quindi, l interazione tra l utente e il dispositivo attraverso la grafica 2D e 3D, l utilizzo del touch screen e tutto quello che riguarda la multimedialità; Application Framework(AF): le librerie citate nel punto precedente vengono utilizzate da questo livello: in particolare le AF sono un insieme di API che vengono utilizzate per l esecuzione di specifiche funzionalità che sono fondamenv

7 Introduzione tali per un applicazione Android e quindi rappresentano l impalcatura di una qualsiasi applicazione; Android Runtime(AR): è il vero e proprio motore di Android OS. E costituito dalle cosiddette core libraries e dalla Dalvik Virtual Machine, sostituita da ART nell ultima release di Android.[3] In questo elaborato verrà approfondito proprio il livello Android Runtime e in particolare si parlerà della Dalvik Virtual Machine (DVM) e di ART, il nuovo runtime system implementato da Google che ha inizialmente affiancato Dalvik in Android 4.0 KitKat, per poi essere utilizzato definitivamente in Android 5.0 Lollipop. vi

8 Capitolo 1 Dalvik Virtual Machine La necessità di garantire un avvio e un tempo di risposta rapido da parte delle applicazioni che girano su hardware con risorse limitate, ha spinto Google a progettare un software in grado di sfruttare al massimo le risorse disponibili: nasce così la Dalvik Virtual Machine. La DVM è una macchina virtuale progettata da Dan Bornstein, dipendente di Google, e prende il nome dall omonimo villaggio di pescatori di cui la famiglia di Bornstein è originaria. Progettata e ottimizzata, infatti, proprio per sfruttare la poca memoria disponibile sui dispositivi mobile, permette a più istanze della macchina virtuale di girare contemporaneamente celando la gestione dei thread e della memoria al sistema operativo[4]: in questo modo si è in grado di semplificare il riutilizzo del codice e di eliminare o quanto meno prevenire problemi di incompatibilità.[5] 1.1 Un architettura basata su registri Solitamente chi progettava macchine virtuali preferiva utilizzare un architettura stack-based, impilando tutte le istruzioni all interno di uno stack. In questo modo, infatti, si andava incontro ad una notevole semplicità di implementazione sia della VM sia dei compilatori back-end (la maggior parte delle macchine virtuali venivano progettate per supportare un unico linguaggio di programmazione). Recenti studi, però, hanno dimostrato che cercare di semplificare le cose ha avuto un costo in termini di perfomance: confrontando, infatti, l architettura stack-based con quella register based 1

9 Capitolo 1. Dalvik Virtual Machine (architettura orientata sull uso dei registri), è risultato che la seconda richiede in media il 47% in meno di istruzioni VM rispetto alla prima ed impiega il 32.3% in meno di tempo per eseguire benchmark standard. Per comprendere meglio la differenza tra le due architetture possiamo fare un esempio molto semplice ma significativo. Consideriamo la seguente espressione[6]: b=c+d Una macchina stack-based traduce questa operazione nel seguente codice JVM(Java Virtual Machine) ILOAD d, ILOAD c, IADD, ISTORE b; In una VM register-based, invece, la stessa espressione si traduce nel seguente codice: IADD a,b,c; E facile notare come il codice utilizzato da un architettura register-based è notevolmente ridotto rispetto a quello utilizzato da una VM stack-based anche se, in media, come è stato dimostrato, comporta per una macchina reale l 1.07% di lavoro in più per ogni istruzione a causa di una maggiore lunghezza di queste ultime; il numero di istruzioni da elaborare, dunque, spiega perchè la prima risulta essere nettamente più veloce rispetto alla seconda. Tutto quello che è stato detto fino ad ora spiega il motivo per il quale Google abbia deciso di basare la Dalvik Virtual Machine su un architettura registered-based: capacità di elaborazione e limiti di memoria, infatti, sono vincoli decisamente rispettati dalla DVM.[7] 2

10 Capitolo 1. Dalvik Virtual Machine Figura 1.1: Confronto tra JVM e DVM 1.2 File.DEX A causa della molteplicità di applicazioni mobile scritte in linguaggio Java e compatibili con la Java Virtual Machine (JVM), è stato necessario creare un sistema di conversione in grado di garantire la compatibilità e la portabilità delle applicazioni stesse in Android OS. Poiché la JVM si basa su un architettura stack-based, infatti, è nata la necessità di convertire i file Java compatibili con la JVM in file.dex (Dalvik EXecutable) o.odex (Optimized Dalvik EXecutable) compatibili con la DVM (discendente, peraltro, direttamente dalla JVM), in modo tale da ottimizzare le risorse e soprattutto la memoria (Fig 1.1). Attraverso un tool integrato chiamato dx è possibile, quindi, trasformare il bytecode Java in un nuovo bytecode compatibile con la DVM e convertire i file.class in file.dex. Durante questo processo di conversione, in particolare, si verifica uno snellimento e una vera e propria compressione dei file.dex: in questo modo, infatti, si garantisce il rispetto del vincolo sui limiti di memoria, riducendo drasticamente l eccessivo spazio che generalmente viene dedicato ai comuni file Java in formato.jar. Più precisamente, questo risultato è stato ottenuto grazie ad un principio di condivisione che provoca una riorganizzazione del file.jar. Quest ultimo, infatti, è costituito da una serie di file.class (Fig. 1.2), uno per ogni classe, in cui è suddiviso il codice; la ridondanza del codice sta proprio nella mancanza di una struttu- 3

11 Capitolo 1. Dalvik Virtual Machine ra unitaria, la quale comporta una ripetizione degli oggetti che altrimenti potrebbero essere condivisi in maniera più intelligente ed efficiente in modo da evitare spreco di risorse e memoria. Invocando, quindi, il compilatore attraverso il tool dx, si crea il file.dex che sostituisce completamente la strutta divisa in classi descritta in precedenza con una ordinata solo ed esclusivamente per tipologia di codice.[8] Figura 1.2: Struttura di un file.jar(sinistra) e di un file.dex(destra) Per comprendere meglio quello che è stato detto in precedenza, consideriamo l esempio presentato al Google I/O nel 2008 dall ideatore della DVM Dan Bornstein: p u b l i c i n t e r f a c e Zapper { p u b l i c S t r i n g zap ( S t r i n g s, Object o ) ; } p u b l i c c l a s s Blort implements Zapper { p u b l i c S t r i n g zap ( S t r i n g s, Object o ) ;..... ; } p u b l i c c l a s s ZapUser{ 4

12 Capitolo 1. Dalvik Virtual Machine p u b l i c void usezap ( Zapper z ){ z. zap (..... ) } } Dalla figura 1.4 possiamo notare come in ogni classe del file.jar sono presenti ripetizioni delle costanti Ljava/lang/String nei metodi Ljava/lang/String; e Ljava/- lang/object che causano un eccessivo spreco di memoria. In un file.dex, invece, Ljava/lang/String è memorizzata una sola volta poiché si permette alle classi di condividere la Constant Pool (tabella dei simboli per la rappresentazione del class file per ogni classe ed interfaccia) riducendo al minimo l utilizzo delle costanti. Questa ripetizione minima, però, comporta l utilizzo di numerosi puntatori logici e/o riferimenti. Figura 1.3: Snellimento del file.jar 1.3 Layout del file.dex Un file.dex può essere visto da un punto di vista architetturale come una struttura basata su ben 8 campi, chiamata Big Header a causa dell elevato numero di informazioni in esso contenute: header: contiene l header del file.dex; string ids: si tratta di una lista che contiene gli identificatori di stringhe. Questi identificatori vengono utilizzati dal file.dex sia per la denominazione interna 5

13 Capitolo 1. Dalvik Virtual Machine (ad esempio descrittori) sia per le costanti. La lista deve, inoltre, essere ordinata sulla base del contenuto e non deve contenere identificatori duplicati; type ids: simile al campo precedente, questa volta si tratta di una lista contenente gli identificatori di tutti i tipi di dato(array, classi, tipi primitivi,ecc). Anche in questo caso, la lista deve essere ordinata sulla base degli identificatori del campo string id e non deve contenere voci duplicate; proto ids: lista contenente gli identificatori per tutti i prototipi delle funzioni presenti nel file.dex. L elenco contenuto in questo campo deve essere rigorosamente ordinato sulla base del tipo di ritorno con maggiore importanza(indice type ids). L elenco non deve contenere voci duplicate; field ids: lista contenente gli identificatori di tutti i campi a cui fa riferimento il file.dex. La lista deve essere ordinata in modo tale da specificare prima il tipo del campo e poi il nome; method ids: è una lista contenente tutti i metodi a cui fa riferimento il file.dex e deve essere ordinato nel seguente modo: prima va indicato il tipo del metodo, poi il nome ed infine il prototipo; class defs: lista contenente le definizioni delle classi. In particolare, essa deve essere ordinata in modo tale che la superclasse di una determinata classe e i suoi metodi vengono visualizzati prima della classe di riferimento; data: l area dati contiene tutte quelle informazioni di supporto per le liste descritte nei precedenti punti. E importante sottolineare che a questo livello di categoria i vari oggetti hanno esigenze differenti di allineamento: per questo motivo vengono talvolta utilizzati dei byte di riempimento in modo tale da garantire un corretto allineamento. 6

14 Capitolo 1. Dalvik Virtual Machine 1.4 File ODEX Le applicazioni che vengono installate in Android OS sono disponibili in pacchetti aventi estensione.apk. In particolare, questi pacchetti contengono alcuni file con estensione.odex (Optimized Odex) la cui funzione principale è quella di risparmiare spazio. Più precisamente, un file con questa estensione, chiamato anche odexed file, rappresenta quella parte ottimizzata di un applicazione che permette di eseguire velocemente il boot della stessa. Tutto ciò è possibile grazie al caricamento dell applicazione all interno della cosiddetta Dalvik Cache, uno spazio temporaneo che viene utilizzato dalla DVM contenente indirizzi di memoria, struttura delle directory delle app installate e dati vari. Grazie alla creazione dei file.odex, infine, il sistema operativo è in grado di conoscere in anticipo quali applicazioni avviare (le informazioni sono presenti proprio nella Dalvik Cache) in modo da ridurre il tempo di avvio del sistema operativo. Un file ODEX viene creato grazie ad un software chiamato dex2opt. Nella fase di ottimizzazione vengono effettuate una serie di operazioni di snellimento del file.dex: i metodi virtuali, infatti, vengono sostituiti con opportune versioni ottimizzate contenenti l indice della tabella virtuale del metodo chiamato, in modo da evitare la ricerca nella Virtual Table in fase di esecuzione; vengono potati, inoltre, i metodi vuoti, ossia quei metodi come Object init che vengono utilizzati in fase di allocazione di un oggetto, ecc. Durante la fase di ottimizzazione del file.dex, infine, il software dex2opt ricorre spesso all indicizzazione poiché permette di ignorare la risoluzione simbolica iniziale e una rapida esecuzione.[9] 1.5 Differenze con la JVM Come è stato già discusso in precedenza, la DVM è nata in seguito all esigenza di utilizzare una VM in grado di girare su ambienti a memoria ridotta, sfruttando le caratteristiche del sistema. Ma se è vero che si preferisce non sfruttare la VM Java, perché non si è utilizzato almeno il suo byte-code, implementando solo i metodi che servono per la sua interpretazione? Nei paragrafi precedenti, è stato mostrato come il 7

15 Capitolo 1. Dalvik Virtual Machine codice di un applicazione Java sia molto ridondante e che un file.dex elimina questi problemi: ad esempio, se un file Java racchiude codice per un totale di 100 Kb, lo stesso potrà essere realizzato in formato.dex pesando circa la metà! Ciò che è stato appena detto, però non è l unica caratteristica che differenzia la JVM con la DVM. Per quanto riguarda l Istruction Set, infatti, Dalvik presenta 218 tipologie di opcodes contro i 200 di Java. Per sottolineare ulteriormente la differenza anche a basso livello tra le due macchine virtuali, basti pensare, ad esempio, che Java utilizza una dozzina di opcodes, totalmente assenti in Dalvik, che vengono utilizzati per il trasferimento di dati dallo stack alla lista contenente le variabili locali; inoltre, mentre il bytecode della JVM utilizza più opcodes per effettuare confronti tra oggetti, Dalvik ne utilizza uno solo semplificando ulteriormente le cose. Infine, la JVM dedica opcodes diversi a seconda del tipo di dato mentre la DVM ne mette a disposizione uno uguale per tutti i tipi. Le istruzioni in linguaggio macchina in Dalvik, infine, sono molto più lunghe poichè, trattandosi di un architettura register-based, contengono sia gli indirizzi di origine che di destinazione dei registri.[10] 1.6 Compilatore JIT A partire dalla versione Android 2.2 Froyo, è stato adottato un compilatore JIT (Just In Time) che interpreta le applicazione nel momento in cui vengono eseguite: con Dalvik, quindi, Android diventa un sistema operativo a compilazione dinamica, in cui il compilatore viene utilizzato anche in fase di esecuzione. Nelle versioni immediatamente precedenti Android 2.2 Froyo, però, Google decise di non adottare un siffatto compilatore: se è vero che la DVM interpreta una sola istruzione alla volta del bytecode, è anche vero che non tutte le istruzioni devono essere tradotte ogni volta che le applicazioni vengono eseguite perché vari elementi, librerie in primis, sono già scritte in linguaggio macchina e quindi il compilatore non deve agire. Alcuni studi, infatti, hanno dimostrato proprio che solo una piccola parte del tempo impiegato per l esecuzione di un applicazione viene utilizzato per l interpretazione del bytecode. A tutto quanto detto fino ad ora va aggiunto, inoltre, l utilizzo di un bytecode compatto 8

16 Capitolo 1. Dalvik Virtual Machine e ottimizzato per dispositivi con limiti di risorse e di memoria. Purtroppo, però, la scelta iniziale del colosso di Mountin View si è rivelata infelice in quanto si è andati incontro a seri e fastidiosi rallentamenti in fase di esecuzione. Ma come opera un compilatore JIT? Spesso capita che l interprete (programma che esegue altri programmi convertendo il codice sorgente il linguaggio macchina) si trovi dinanzi a porzioni di codice intrecciate e abbastanza complicate da un punto di vista computazionale. Il compilatore JIT interviene proprio in queste situazioni, affiancando l interprete nella traduzione del codice sorgente in linguaggio macchina e ottimizzandolo. Questa operazione di semplificazione si rileva molto efficace perché ogni qual volta si va ad eseguire successivamente queste porzioni di codice, esse si troveranno già tradotte in linguaggio macchina: le prestazioni migliorano notevolmente. Ciò che contraddistingue un buon compilatore JIT, però, è la capacità di capire quando e dove intervenire: quello utilizzato da Android Dalvik, infatti, garantisce un minor utilizzo della memoria e un miglioramento delle prestazioni eliminando quella fastidiosa attesa che si riscontrava nelle prime versioni di Android ogni qual volta si lanciava un applicazione.[11] Al giorno d oggi sono molto utilizzati due tipi di compilatori JIT: Method based: utilizzato da Java, questo compilatore compila in codice nativo e ottimizza i metodi che sono più complessi da un punto di vista computazionale. Poiché viene compilato il metodo per intero, spesso traduce anche porzioni di codice che vengono utilizzate raramente sprecando tempo inutilmente. Traced based: questo tipo di compilatore, individua solo istruzioni (e non metodi come nel caso precedente) computazionalmente complesse e le raggruppa in tracce; una volta compilate, queste tracce vengono tutte racchiuse in una translation cache: in questo modo, l esecuzione avviene per tracce successive. 9

17 Capitolo 1. Dalvik Virtual Machine Figura 1.4: Processo Zygote 1.7 Zygote Tra le varie caratteristiche di Android, assume un ruolo importante in termini di performance la riduzione dell overhead durante la fase di avvio di un applicazione in modo da garantire una risposta rapida da parte del dispositivo. La DVM è una macchina virtuale di tipo process: questi tipi di VM sono in grado di eseguire un unico processo alla volta; di conseguenza, per poter eseguire contemporaneamente più applicazioni, devono essere create più istanze di Dalvik Virtual Machine, una per ogni applicazione eseguita. L overhead, quindi, viene ridotto proprio andando a velocizzare il processo di creazione delle varie istanze attraverso il cosiddetto Zygote, un processo daemon (eseguito in background) inizializzato dal sistema operativo la cui funzione è quella di avviare applicazioni. Il suo avvio è innescato da init.rc dopo Service Manager, ma in realtà è iniziato da app process. Consideriamo, a tal proposito, la sequenza di istruzioni necessarie per avviare un processo di questo tipo: s e r v i c e zygote / system / bin / app process Xzygote / system / bin zygote s t a r t system s e r v e r c l a s s main s o c k e t zygote stream 660 root system 10

18 Capitolo 1. Dalvik Virtual Machine o n r e s t a r t w r i t e / sys / android power / r e q u e s t s t a t e wake o n r e s t a r t w r i t e / sys /power/ s t a t e on o n r e s t a r t r e s t a r t media o n r e s t a r t r e s t a r t netd Notiamo come il processo Zygote viene avviato come system service e come l app process sia effettivamente l istruzione che lo avvia: più precisamente, quest ultima crea la prima istanza di DVM ed effettua una chiamata al metodo main() di Zygote. Una volta che esso è stato avviato, quindi, non solo vengono caricate tutte le risorse e le classi Java necessaria ma viene avviato anche il System Server, il quale apre una socket /dev/socket/zigote in modo tale da mettersi in ascolto per eventuali richieste di avvio da parte delle varie applicazioni. Quali sono, quindi, le operazioni che vengono fatte dal processo Zygote per avviare le applicazioni? Quando viene ricevuta una richiesta di avvio tramite la suddetta socket, lo Zygote effettua una fork() dando vita ad una nuova istanza di DVM precaricata con tutte quelle risorse e quelle classi che sono necessarie ad ogni applicazione (Fig. 1.4). Poiché Android utilizza un kernel Linux, viene implementata una stategia chiamata Copy On Write (COW): quando lo Zygote effettua una fork, non viene effettuata nessuna copia della memoria in un altro spazio, ma viene condivisa e marcata come copy-on-write, ovvero quando un processo di un applicazione cerca di accedere e modificare quell area di memoria, il kernel intercetta la chiamata e ne crea una copia che potrà essere opportunamente modificate. In altre parole, si ritiene non necessario creare una copia della memoria ogni qual volta viene effettuata una fork(), ma solo nel momento in cui un processo richiede di poter modificare le informazioni in essa contenute.[12] 11

19 Capitolo 1. Dalvik Virtual Machine 1.8 Garbage Collector La garbage collection (letteralmente raccolta dei rifiuti) rappresenta un modo automatico di gestire la memoria grazie alla quale un compilatore o il sistema operativo è in grado di liberare quei blocchi di memoria che, precedentemente referenziati (ovvero allocate da un processo o utilizzate da un applicazione), non vengono più utilizzati e quindi possono essere utilizzate da altri processi; il Garbage Collector, quindi, annoterà queste aree e le libererà automaticamente. Grazie al Garbage Collector, il programmatore viene esonerato dal preoccuparsi del quantitativo di memoria da allocare per la sua applicazione e soprattutto di doverla successivamente deallocare. Purtroppo, però, come sarà descritto in seguito, un sistema automatico per la gestione della memoria non sempre si comporta bene. In Android Dalvik, il processo di gestione della memoria da parte del Garbage Collector viene dettata da due pause: la prima pausa avviene durante la fase di enumerazione in cui si contano i blocchi di memoria da liberare, mentre la seconda si verifica durante la fase di marcatura. Per pausa, in questo caso, si intende l arco di tempo in cui viene letteralmente sospesa l esecuzione del codice di un applicazione e di tutti i suoi thread. Se la pausa è troppo lunga, l applicazione rallenta eccessivamente la sua esecuzione a causa della perdita di numerose frame, rendendo pessima l user experience. Google sostiene che una durata media di queste pause si aggira intorno ai 54 ms per un LG Nexus 5, comportando la perdita di almeno 4 frames ogni volta che il Garbage Collector si attiva. In realtà, come dimostrato da Andrei Frumusanu, la durata di una pausa dipende soprattuto dal tipo di applicazione avviata. Consideriamo, a questo proposito, il seguente esempio riportato dallo stesso Andrei Fumusanu sul sito [13]: :56:14.275: D/dalvikvm(30615): GC FOR ALLOC freed 4442K, 25% free 20183K/26856K, paused 24ms, total24ms :56:16.785: I/dalvikvm-heap(30615): Grow heap (frag case) to MB for byte allocation :56:17.225: I/dalvikvm-heap(30615): Grow heap (frag case) to MB for byte allocation :56:17.625: I/Choreographer(30615): Skipped 35 frames! The application may be doing too much work on its main thread.ù :56:19.035: D/dalvikvm(30615): GC CONCURRENT freed 35838K, 43% free 51351K/89052K, paused 3ms+5ms, total 106ms :56:19.035: D/dalvikvm(30615): WAIT FOR CONCURRENT GC blocked 96ms :56:19.815: D/dalvikvm(30615): GC CONCURRENT freed 7078K, 42% free 52464K/89052K, paused 14ms+4ms, total 96ms 12

20 Capitolo 1. Dalvik Virtual Machine :56:19.815: D/dalvikvm(30615): WAIT FOR CONCURRENT GC blocked 74ms :56:20.035: I/Choreographer(30615): Skipped 141 frames! The application may be doing too much work on its main thread :56:20.275: D/dalvikvm(30615): GC FOR ALLOC freed 4774K, 45% free 49801K/89052K, paused 168ms, total 168ms :56:20.295: I/dalvikvm-heap(30615): Grow heap (frag case) to MB for byte allocation :56:21.315: D/dalvikvm(30615): GC FOR ALLOC freed 1359K, 42% free 55045K/93612K, paused 95ms, total 95ms :56:21.965: D/dalvikvm(30615): GC CONCURRENT freed 6376K, 40% free 56861K/93612K, paused 16ms+8ms, total 126ms :56:21.965: D/dalvikvm(30615): WAIT FOR CONCURRENT GC blocked 111ms :56:21.965: D/dalvikvm(30615): WAIT FOR CONCURRENT GC blocked 97ms :56:22.085: I/Choreographer(30615): Skipped 38 frames! The application may be doing too much work on its main thread :56:22.195: D/dalvikvm(30615): GC FOR ALLOC freed 1539K, 40% free 56833K/93612K, paused 87ms, total 87ms :56:22.195: I/dalvikvm-heap(30615): Grow heap (frag case) to MB for byte allocation :56:22.475: D/dalvikvm(30615): GC FOR ALLOC freed 308K, 39% free 59497K/96216K, paused 84ms, total 84ms :56:22.815: D/dalvikvm(30615): GC FOR ALLOC freed 287K, 38% free 60878K/97516K, paused 95ms, total 95ms Si tratta di un estratto del registro di un applicazione dopo i primi secondi dal suo avvio. Possiamo notare come il Garbage Collector venga richiamato per 9 volte causando il blocco dell applicazione per un totale di 603 ms e una perdita di ben 214 frame. La maggior parte delle pause sono dovute alle varie richieste di allocazione da parte della memoria, come indicato dal tag GC FOR ALLOC. Il funzionamento del Garbage Collector utilizzato da Android Dalvik, infine, si basa sull approccio march and sweep. Secondo questo approccio, viene mantenuta una lista contenente tutti quei blocchi della memoria heap contrassegnati come liberi. Nel momento in cui un processo richiede l allocazione di un blocco libero e la lista risulta vuota, il Garbage Collector si comporta nel seguente modo: utilizza dei bit per marcare quegli oggetti che sono ancora in uso e che quindi non dovrebbero essere rimossi. Questi bit vengono memorizzati in un area separata all interno della memoria heap; riordina e raccoglie tutti i blocchi non marcati e li inserisce all interno della lista vuota. Più precisamente, il funzionamento dell algoritmo può essere riassunto nel seguente pseudo-codice: 13

21 Capitolo 1. Dalvik Virtual Machine f o r each root v a r i a b l e r mark ( r ) ; sweep ( ) ; Per poter distinguere gli oggetti in uso da quelli che possono essere eliminati, ognuno di essi contiene un campo booleano che indica lo stato marked(true) o unmarked(false). Generalmente tutti gli oggetti quando vengono creati risultano unmarked di default. Un generico oggetto p e tutti quelli che sono accessibili indirettamente attravero p vengono marcati attraverso un operazione ricorsiva: void mark ( Object p ){ i f (! p. marked ) p. marked = true ; f o r each Object q r e f e r e n c e d by p mark ( q ) ; Questo algoritmo ricorsivo non fa niente se incontra oggetti che risultano già marcati; di conseguenza termina nel momento in cui tutti gli oggetti accessibili risultano marked. Nella seconda fase l algoritmo mark and sweep scansiona tutti gli oggetti nella memoria heap in modo tale da localizzare tutti quelli che risultano unmarked. In particolare, la memoria allocata per gli oggetti non marcati viene recuperata durante la fase di scansione, mentre il campo booleano degli oggetti che sono stati segnati in precedenza come marked viene settato a false per la successva invocazione dell algoritmo. Le operazioni effettuate durante la fase di sweep sono riportate in seguito: void sweep ( ) f o r each Object p in the heap i f ( p. marked ) p. marked = f a l s e e l s e heap. r e l e a s e ( p ) ; [ 1 4 ] 14

ANDROID. Domenico Talia. Università della Calabria. talia@dimes.unical.it

ANDROID. Domenico Talia. Università della Calabria. talia@dimes.unical.it ANDROID Domenico Talia Università della Calabria talia@dimes.unical.it Sistemi Operativi per Mobile! I sistemi operativi per sistemi mobili seguono i principi dei SO classici ma devono gestire risorse

Dettagli

Indice. settembre 2008 Il File System 2

Indice. settembre 2008 Il File System 2 Il File System Indice 4. Il File System 5. Vantaggi del FS 6. Protezione 7. Condivisione 8. I file - 1 9. I file - 2 10. Attributi dei file 11. Directory 12. Livelli di astrazione - 1 13. Livelli di astrazione

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il.NET Framework By Dario Maggiari L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il cuore del.net Framework è costituito dal CLR (Common Language Runtime) che, secondo

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi. Tesina per l esame di Sistemi Operativi a cura di. Prof. Aldo Franco Dragoni Corso di laurea in Ingegneria Informatica

Dettagli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

Sistemi Mobili e Wireless Android Introduzione alla piattaforma Sistemi Mobili e Wireless Android Introduzione alla piattaforma Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Cos'è Android?

Dettagli

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali

Sistemi Operativi. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali Modulo di Sistemi Operativi per il corso di Master RISS: Ricerca e Innovazione nelle Scienze della Salute Unisa, 17-26 Luglio 2012 Sistemi Operativi Funzioni e strategie di progettazione: dai kernel monolitici

Dettagli

AXO. Operativi. Architettura dei Calcolatori e Sistemi. memoria virtuale

AXO. Operativi. Architettura dei Calcolatori e Sistemi. memoria virtuale AXO Architettura dei Calcolatori e Sistemi Operativi memoria virtuale concetto di memoria virtuale Separare il concetto di: spazio di indirizzamento di un programma eseguibile e dimensione effettiva della

Dettagli

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

Android development. Sviluppo di Mobile Apps sul sistema operativo di Google Android development Sviluppo di Mobile Apps sul sistema operativo di Google Agenda Giorni: Gio 14/04/2011 Ven 15/04/2011 Gio 21/04/2011 Ven 22/04/2011 Suddivisione: Mattina: teoria Pomeriggio: pratica

Dettagli

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) SISTEMI OPERATIVI (MODULO DI INFORMATICA II) Realizzazione del file system Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Realizzazione

Dettagli

Programmazione in ambiente

Programmazione in ambiente Università Politecnica delle Marche Dipartimento di Ingegneria dell Informazione Programmazione in ambiente Android Laura Montanini - laura.montanini@univpm.it Corso di Tecnologie per le TLC 2013-2014

Dettagli

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007 2007 SISTEMI OPERATIVI Gestione della memoria Domande di verifica Luca Orrù Centro Multimediale Montiferru 18/06/2007 Gestione della memoria 1. Si descriva il concetto di memoria virtuale (esame del 19-06-2006)

Dettagli

Strutture dei Sistemi Operativi

Strutture dei Sistemi Operativi Strutture dei Sistemi Operativi Componenti di sistema Servizi del sistema operativo Chiamate di sistema Programmi di sistema Struttura del sistema Macchine virtuali Progetto e implementazione di sistemi

Dettagli

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il Sistema Operativo Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Cos

Dettagli

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione.

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione. C6. REALIZZAZIONE DEL FILE SYSTEM Struttura del file system Un file è analizzabile da diversi punti di vista. Dal punto di vista del sistema è un contenitore di dati collegati tra di loro, mentre dal punto

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini La memoria Architetture Avanzate dei Calcolatori Valeria Cardellini Nelle lezioni precedenti { Memoria La gerarchia di memorie Registri Istruzioni, operandi L Cache Blocchi L2 Cache Blocchi Memoria Pagine

Dettagli

Lezione 14. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Lezione 14. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 14 Sistemi operativi 9 giugno 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 14.1 Di cosa parliamo in questa lezione? Ottimizzazione degli accessi alla

Dettagli

La genealogia di Windows. Windows NT e Windows 95/98. Dimensioni del codice. Parte IX. Windows

La genealogia di Windows. Windows NT e Windows 95/98. Dimensioni del codice. Parte IX. Windows La genealogia di Windows Parte IX Windows Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 IX - 1 DOS: sistema operativo monoutente Windows 3.1 interfaccia a finestre che gira su DOS Windows 95/98

Dettagli

Parte IX. Windows. Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 IX - 1

Parte IX. Windows. Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 IX - 1 Parte IX Windows Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 IX - 1 La genealogia di Windows DOS: sistema operativo monoutente Windows 3.1 interfaccia a finestre che gira su DOS Windows 95/98

Dettagli

Strutture dei sistemi operativi

Strutture dei sistemi operativi Contenuti della lezione di oggi Strutture dei sistemi operativi Descrizione dei servizi messi a disposizione dell utente dal SO Utente generico Programmatore Esame delle possibili strutture di un SO Monolitica

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

Sistema Operativo Compilatore

Sistema Operativo Compilatore MASTER Information Technology Excellence Road (I.T.E.R.) Sistema Operativo Compilatore Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il Sistema

Dettagli

HEX Bin HEX Bin HEX Bin HEX Bin 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 A 1010 E 1110 3 0011 7 0111 B 1011 F 1111

HEX Bin HEX Bin HEX Bin HEX Bin 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 A 1010 E 1110 3 0011 7 0111 B 1011 F 1111 Struttura interna del Sistema Operativo CAP. 7. La gestione della memoria virtuale Il concetto di memoria virtuale Il concetto di memoria virtuale nasce dalla necessità di separare il concetto di spazio

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Progettare l'isa. Progettare l'isa. Corso di Architettura degli Elaboratori. Interpretazione

Progettare l'isa. Progettare l'isa. Corso di Architettura degli Elaboratori. Interpretazione Corso di Architettura degli Elaboratori Il livelo ISA: ISA IJVM, tipi di dati e formato delle istruzioni Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 I-10149

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

Cosa consente di fare Gea.Net App

Cosa consente di fare Gea.Net App Cosa consente di fare Gea.Net App Gea.Net App per Android e una piccola app che gira su device con sistema operativo Android condividendo i dati del gestionale Gea.Net. Questa versione permette di disporre

Dettagli

Linguaggi 2 e laboratorio

Linguaggi 2 e laboratorio Linguaggi 2 e laboratorio Docente: Leonardo Badia Contatti: leonardo.badia@gmail.com Pagina web del corso: www.unife.it/scienze/informatica/ insegnamenti/linguaggi-2-laboratorio Argomenti del corso: Java

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Sviluppo Software Autore: Sergio Gandola Revisione: 2 Data: 07/06/13 Titolo: Documentazione Tecnica Diario File:Documentazione Tecnica.pdf Sito: http://inno-school.netsons.org/

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi:

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi: 1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi: compile time, load time, execution time. Quale delle modalità precedenti necessita di un supporto hardware per poter essere

Dettagli

Filippo Druda LO SVILUPPO IN ANDROID

Filippo Druda LO SVILUPPO IN ANDROID 1 Classe 5 A Candidato Filippo Druda LO SVILUPPO IN ANDROID 2 L'EVOLUZIONE TECNOLOGICA NON HA MAI DANNEGGIATO NESSUNO.. ABSTRACT Istituto Tecnico Industriale Don Orione Fano 3 Il progresso tecnologico

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Lezione 11. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lezione 11. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 11 system Sistemi operativi 12 maggio 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 11.1 Di cosa parliamo in questa lezione? L interfaccia : system 1 Il

Dettagli

Virtualizzazione e Macchine Virtuali

Virtualizzazione e Macchine Virtuali Virtualizzazione e Macchine Virtuali Gabriele D Angelo, Ludovico Gardenghi {gda, garden}@cs.unibo.it http://www.cs.unibo.it/~gdangelo/ http://www.cs.unibo.it/~gardengl/ Università di Bologna Corso di Laurea

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Installazione SOFTWARE JDK ECLIPSE 03/03/2011 2 ALGORITMI E PROGRAMMI PROBLEMA ALGORITMO PROGRAMMA metodo risolutivo linguaggio di

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A.

Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A. Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A. Morzenti Il sistema Operativo Il sistema operativo (SO) è uno strato software

Dettagli

Infrastrutture Software

Infrastrutture Software Infrastrutture Software I componenti fisici di un sistema informatico sono resi accessibili agli utenti attraverso un complesso di strumenti software finalizzati all utilizzo dell architettura. Si tratta

Dettagli

Componenti di Sistemi Operativi. System Call Programmi di sistema Componenti di un SO Servizi di SO

Componenti di Sistemi Operativi. System Call Programmi di sistema Componenti di un SO Servizi di SO Componenti di so 1 Componenti di Sistemi Operativi System Call Programmi di sistema Componenti di un SO Servizi di SO 2 System Call Le system call forniscono l'interfaccia tra running program e SO Generalmente

Dettagli

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche Sommario Definizione di S. O. Attività del S. O. Struttura del S. O. Il gestore dei processi: lo scheduler Sistemi Mono-Tasking e

Dettagli

Sistemi Operativi. Organizzazione logica ed implementazione di un File System

Sistemi Operativi. Organizzazione logica ed implementazione di un File System Modulo di Sistemi Operativi per il corso di Master RISS: Ricerca e Innovazione nelle Scienze della Salute Unisa, 17-26 Luglio 2012 Sistemi Operativi Organizzazione logica ed implementazione di un File

Dettagli

Realizzazione del file system

Realizzazione del file system Realizzazione del file system Struttura del file system Metodi di allocazione: Contigua Concatenata Indicizzata Gestione dello spazio libero Realizzazione delle directory Efficienza e prestazioni Ripristino

Dettagli

Capitolo 5: I thread

Capitolo 5: I thread Capitolo 5: I thread Generalità. Modelli multithread. Problematiche relative ai thread. Pthread. 5.1 I thread Il thread è un flusso di controllo relativo ad un dato processo. Molti sistemi operativi moderni

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi a.a. 2010/2011 Francesco Fontanella Il Sistema Operativo Sistema Operativo 2 Il Sistema Operativo Il Sistema Operativo è uno strato

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Memorizzazione dei dati: Dischi e File

Memorizzazione dei dati: Dischi e File Memorizzazione dei dati: Dischi e File Query\update Query plan Execution Engine richieste di indici, record e file Index/file/record Manager comandi su pagine Query Compiler Buffer Manager Lettura/scrittura

Dettagli

Lezione 12. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Lezione 12. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 12 Sistemi operativi 19 maggio 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 12.1 Di cosa parliamo in questa lezione? Organizzazione e realizzazione dei

Dettagli

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari Android Android A. Ferrari Android è un sistema opera8vo per disposi8vi mobili. Inizialmente sviluppato da Startup Android Inc. acquisita poi nel 2005 da Google Inc. Il cuore di Android è un kernel Linux.

Dettagli

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione Introduzione Fondamenti di Informatica: Sistemi Operativi 1 Elaboratori necessitano di SOFTWARE SOFTWARE DI SISTEMA (SISTEMI OPERATIVI): fanno funzionare le varie componenti del computer e permettono all

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Il computer: primi elementi

Il computer: primi elementi Il computer: primi elementi Tommaso Motta T. Motta Il computer: primi elementi 1 Informazioni Computer = mezzo per memorizzare, elaborare, comunicare e trasmettere le informazioni Tutte le informazioni

Dettagli

La memoria virtuale 9.2. Sistemi Operativi a.a. A.A. 2009-10 2013-2014

La memoria virtuale 9.2. Sistemi Operativi a.a. A.A. 2009-10 2013-2014 La Memoria Virtuale La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine Allocazione dei frame Thrashing File mappati in memoria Allocazione di memoria del kernel

Dettagli

Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione

Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione UNIVERSITA DEGLI STUDI DI FERRARA Corso di Laurea in informatica Anno Accademico 2011-2012 Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione Relatore:

Dettagli

Il supporto al Sistema Operativo

Il supporto al Sistema Operativo Il supporto al Sistema Operativo Obiettivi e funzioni del S.O. Il Sistema Operativo è il software che controlla l esecuzione dei programmi e amministra le risorse del sistema. Ha due obiettivi principali:

Dettagli

27/03/2013. Contenuti

27/03/2013. Contenuti Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano Contenuti Virtualizzazione - 3 Macchina virtuale - 4 Architetture delle macchine virtuali - 6 Tipi di virtualizzazione - 7 Monitor della

Dettagli

11 Realizzazione del File System. 11.1.1 Struttura a livelli (fig. 11.1) 11.4 Allocazione dei file

11 Realizzazione del File System. 11.1.1 Struttura a livelli (fig. 11.1) 11.4 Allocazione dei file 11 Realizzazione del File System 1 Metodi di allocazione Allocazione contigua Allocazione concatenata e varianti Allocazione indicizzata e varianti Gestione dello spazio libero 11.1.1 Struttura a livelli

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

2. VIRTUALIZZAZIONE MEDIANTE PARTIZIONAMENTO

2. VIRTUALIZZAZIONE MEDIANTE PARTIZIONAMENTO 2. VIRTUALIZZAZIONE MEDIANTE PARTIZIONAMENTO In questo capitolo verranno prese in considerazione le soluzioni tecnologiche e gli approcci implementativi della virtualizzazione basata su partizionamento

Dettagli

Implementazione del File System

Implementazione del File System Implementazione del file system Implementazione del File System Struttura del file system. Realizzazione del file system. Implementazione delle directory. Metodi di allocazione. Gestione dello spazio libero.

Dettagli

1. I dispositivi periferici

1. I dispositivi periferici La gestione dell I/O 1. I dispositivi periferici Un ulteriore aspetto fondamentale del SO è la gestione dei dispositivi periferici (periferiche) Dal punto di vista del sistema operativo per periferiche

Dettagli

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File system verso DBSM Vantaggi di un DBMS Modelli dei dati Utenti

Dettagli

Struttura del File-System! Implementazione del File System! Filesystem!

Struttura del File-System! Implementazione del File System! Filesystem! Struttura del File-System Implementazione del File System Struttura dei File Unità logica di memorizzazione Collezione di informazioni correlate File control block (inode) struttura dati per le informazioni

Dettagli

CAPITOLO 5 - Sistemi Operativi Moderni

CAPITOLO 5 - Sistemi Operativi Moderni CAPITOLO 5 - Sistemi Operativi Moderni PRESENTAZIONE DI INSIEME Vedremo ora come si è evoluta nel tempo la struttura di un sistema operativo, per passare dalle vecchie strutture di tipo normalmente modulari,

Dettagli

Introduzione ai sistemi di basi di dati

Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Alessandro.bardine@gmail.com alessandro.bardine@iet.unipi.it Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File

Dettagli

10. Interfaccia del File System

10. Interfaccia del File System 10. Interfaccia del File System 10.1 Il concetto di File 10.2 Metodi di accesso 10.3 Struttura delle Directory 10.4 Protezione (Leggere) 10.5 Semantica della Consistenza (Leggere) Un File System consiste

Dettagli

Capitolo 11 -- Silberschatz

Capitolo 11 -- Silberschatz Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono

Dettagli

Capitolo 9: Memoria centrale

Capitolo 9: Memoria centrale Capitolo 9: Memoria centrale Concetti generali. Swapping Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. 9.1 Concetti generali Per essere eseguito un programma

Dettagli

Linux Day 2015. ANDROID ed i suoi derivati. Pavia, 24 ottobre 2015. Marco Giorgi NUTRIA LUG

Linux Day 2015. ANDROID ed i suoi derivati. Pavia, 24 ottobre 2015. Marco Giorgi NUTRIA LUG Linux Day 2015 NUTRIA LUG Pavia, 24 ottobre 2015 ANDROID ed i suoi derivati Quant'è davvero open un dispositivo Android e come renderlo ancora più libero CHI SONO Membro del team di sviluppo DEFT Linux

Dettagli

Introduzione al linguaggio Java

Introduzione al linguaggio Java Introduzione al linguaggio Java Alessandro Martinelli alessandro.martinelli@unipv.it 28 Settembre 2011 Introduzione al linguaggio Java Generalità del Linguaggio Java e Portabilità Java e Robustezza Java

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

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

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2. Basi Android 1 Android Cosa è Android? Android è un insieme di strumen8 e librerie per sviluppare applicazioni mobili è più di un SO Android si definisce open Con8ene tecnologie open source Linux Il codice

Dettagli

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTÀ DI INGEGNERIA

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTÀ DI INGEGNERIA UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTÀ DI INGEGNERIA Corso di Sistemi Operativi Prof. Stefano Berretti SEMINARIO: VIRTUALIZZAZIONE DI INFRASTRUTTURE INFORMATICHE a cura di: Nicola Fusari A.A. 2012/2013

Dettagli

Lezione 19 Blackberry. Dr. Paolo Casoto, Ph.D - 2012

Lezione 19 Blackberry. Dr. Paolo Casoto, Ph.D - 2012 + Lezione 19 Blackberry + Credits I lucidi di questa lezione sono stati redatti dal Dr. Paolo Casoto nel 2012. Sono rilasciati con licenza Creative Commons Attribuzione, non commerciale e non opere derivate.

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Memory management 49

Memory management 49 Memory management 49 Gestione della memoria I processi Unix lavorano su uno spazio di indirizzamento virtuale (Es. 0,..., 2 32 1 su indirizzi i i a 32 bit); Ogni processo ha uno spazio indirizzi separato

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

INTRODUZIONE ALLE PIATTAFORME

INTRODUZIONE ALLE PIATTAFORME INTRODUZIONE ALLE PIATTAFORME Android ios Windows Phone 8 Android 2 Cos è Android? Un moderno open-source sistema operativo Componenti: Linux kernel Java Core applications 3 Perché è stato un successo

Dettagli

ANDROID 4.2 JELLY BEAN Installazione e configurazione dell ambiente

ANDROID 4.2 JELLY BEAN Installazione e configurazione dell ambiente INTRODUZIONE Per sviluppare applicazioni in grado di girare su sistemi Android servono tre cose: il Java JDK (Java Development Kit), che contiene tutti gli strumenti necessari a sviluppare nel linguaggio

Dettagli

Memoria virtuale e ottimizzazione

Memoria virtuale e ottimizzazione SISTEMI OPERATIVI 08.b Memoria virtuale e ottimizzazione Memoria virtuale e ottimizzazione Supporto fornito dall hardware MV con Paginazione (page table) MV con Segmentazione MV con Segmentazione e Paginazione

Dettagli

Prof. Pagani Corrado INGEGNERIA DEL SOFTWARE

Prof. Pagani Corrado INGEGNERIA DEL SOFTWARE Prof. Pagani Corrado INGEGNERIA DEL SOFTWARE INTRODUZIONE L ingegneria del software è la disciplina tecnologica e gestionalerelativa alla realizzazione sistematica e alla manutenzione di un software rispettando

Dettagli

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010 Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012 Introduzione a Visual Studio 2005/2008/2010 1 Outline Solution e Project Visual Studio e linguaggio C Visual Studio schermata principale

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...)

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...) Android world Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...) Contiene un Sistema Operativo, software middleware e applicazioni varie Sviluppato da Open Handset Alliance,

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Informatica e Bioinformatica: Sistemi Operativi

Informatica e Bioinformatica: Sistemi Operativi Informatica e Bioinformatica: Sistemi Operativi 11 marzo 2013 Macchina Hardware/Software Sistema Operativo Macchina Hardware La macchina hardware corrisponde alle componenti fisiche del calcolatore (quelle

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono:

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Funzioni dei Sistemi Operativi!2 Le funzioni principali del SO Gestire le risorse dell elaboratore

Dettagli

Java. Traditional portability (ideal)

Java. Traditional portability (ideal) 1 Java JAVA: una introduzione 2 Traditional portability (ideal) C-code (Linux) (Pentium) Executable (Linux) Executable (Win32) Linux Windows 32 (Mac) Executable (Mac) Mac 1 1 3 Portability of Java programs

Dettagli

File System Distribuiti

File System Distribuiti File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema 20.1 Introduzione File System Distribuito

Dettagli

Parte VI SISTEMI OPERATIVI

Parte VI SISTEMI OPERATIVI Parte VI SISTEMI OPERATIVI Sistema Operativo Ogni computer ha un sistema operativo necessario per eseguire gli altri programmi Il sistema operativo, fra l altro, è responsabile di riconoscere i comandi

Dettagli

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema Introduzione File System Distribuito

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Sistemi Operativi. Il Sistema Operativo. Gestione Risorse (3) Gestione Risorse (2) Cos'è un sistema operativo? Utenti di un SO.

Sistemi Operativi. Il Sistema Operativo. Gestione Risorse (3) Gestione Risorse (2) Cos'è un sistema operativo? Utenti di un SO. Sistemi Operativi Il Sistema Operativo Corso di Informatica Generale (Roberto BASILI) Cos'è un sistema operativo? Un sistema operativo e': La astrazione logica del livello macchina hardware e microprogrammata

Dettagli