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

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame.

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. 1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. (a) Da quanti bit è costituito l indirizzo logico? (b) Da quanti bit

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Agilent OpenLAB Chromatography Data System (CDS)

Agilent OpenLAB Chromatography Data System (CDS) Agilent OpenLAB Chromatography Data System (CDS) EZChrom Edition e ChemStation Edition Requisiti hardware e software Agilent Technologies Informazioni legali Agilent Technologies, Inc. 2013 Nessuna parte

Dettagli

Setup e installazione

Setup e installazione Setup e installazione 2 Prima di muovere i primi passi con Blender e avventurarci nel vasto mondo della computer grafica, dobbiamo assicurarci di disporre di due cose: un computer e Blender. 6 Capitolo

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti 1 Web conferencing software Massimiliano Greco - Ivan Cerato - Mario Salvetti Arpa Piemonte 2 Che cosa è Big Blue Button? Free, open source, web conferencing software Semplice ed immediato ( Just push

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Progetto VirtualCED Clustered

Progetto VirtualCED Clustered Progetto VirtualCED Clustered Un passo indietro Il progetto VirtualCED, descritto in un precedente articolo 1, è ormai stato implementato con successo. Riassumendo brevemente, si tratta di un progetto

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

FORM Il sistema informativo di gestione della modulistica elettronica.

FORM Il sistema informativo di gestione della modulistica elettronica. Studio FORM FORM Il sistema informativo di gestione della modulistica elettronica. We believe in what we create This is FORM power La soluzione FORM permette di realizzare qualsiasi documento in formato

Dettagli

Architettura degli Elaboratori. Lez. 8 : Il Livello di Sistema Operativo

Architettura degli Elaboratori. Lez. 8 : Il Livello di Sistema Operativo Corso di Laurea Triennale in Informatica Università degli Studi di Bari Aldo Moro Anno Accademico 2012-2013 Lez. 8 : Il Livello di Sistema Operativo Sebastiano Pizzutilo Strutturazione del Sistema Operativo

Dettagli

Indicizzazione terza parte e modello booleano

Indicizzazione terza parte e modello booleano Reperimento dell informazione (IR) - aa 2014-2015 Indicizzazione terza parte e modello booleano Gruppo di ricerca su Sistemi di Gestione delle Informazioni (IMS) Dipartimento di Ingegneria dell Informazione

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Rational Asset Manager, versione 7.1

Rational Asset Manager, versione 7.1 Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Note Prima di utilizzare queste informazioni e il prodotto

Dettagli

***** Il software IBM e semplice *****

***** Il software IBM e semplice ***** Il IBM e semplice ***** ***** Tutto quello che hai sempre voluto sapere sui prodotti IBM per qualificare i potenziali clienti, sensibilizzarli sulle nostre offerte e riuscire a convincerli. WebSphere IL

Dettagli

Installazione LINUX 10.0

Installazione LINUX 10.0 Installazione LINUX 10.0 1 Principali passi Prima di iniziare con l'installazione è necessario entrare nel menu di configurazione del PC (F2 durante lo start-up) e selezionare nel menu di set-up il boot

Dettagli

MANUALE DOS INTRODUZIONE

MANUALE DOS INTRODUZIONE MANUALE DOS INTRODUZIONE Il DOS è il vecchio sistema operativo, che fino a qualche anno fa era il più diffuso sui PC, prima dell avvento di Windows 95 e successori. Le caratteristiche principali di questo

Dettagli

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:!

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:! Scrum descrizione I Principi di Scrum I Valori dal Manifesto Agile Scrum è il framework Agile più noto. E la sorgente di molte delle idee che si trovano oggi nei Principi e nei Valori del Manifesto Agile,

Dettagli

Per questa ragione il nostro sforzo si è concentrato sugli aspetti elencati qui di seguito:

Per questa ragione il nostro sforzo si è concentrato sugli aspetti elencati qui di seguito: Autore : Giulio Martino IT Security, Network and Voice Manager Technical Writer e Supporter di ISAServer.it www.isaserver.it www.ocsserver.it www.voipexperts.it - blogs.dotnethell.it/isacab giulio.martino@isaserver.it

Dettagli

Virtualizzazione con Microsoft Tecnologie e Licensing

Virtualizzazione con Microsoft Tecnologie e Licensing Microsoft Virtualizzazione con Microsoft Tecnologie e Licensing Profile Redirezione dei documenti Offline files Server Presentation Management Desktop Windows Vista Enterprise Centralized Desktop Application

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Zeroshell su vmware ESXi 4.1

Zeroshell su vmware ESXi 4.1 Zeroshell su vmware ESXi 4.1 Introduzione Vediamo come installare Zeroshell su Vmware ESXi 4.1 usando come immagine quella per IDE,SATA e USB da 1GB. Cosa ci serve prima di iniziare: Una distro Live io

Dettagli

Anno di corso: 2004/2005. Istruzioni. Istruzioni per lo svolgimento dei progetti didattici. versione 1.1

Anno di corso: 2004/2005. Istruzioni. Istruzioni per lo svolgimento dei progetti didattici. versione 1.1 versione 1.1 per lo svolgimento dei progetti didattici Corso di Laboratorio di Programmazione II Prof. Luca Forlizzi Anno Accademico 2004-2005 GENERALITÀ...3 Scopo del documento...3 Struttura del documento...3

Dettagli

Procedura corretta per mappare con ECM Titanium

Procedura corretta per mappare con ECM Titanium Procedura corretta per mappare con ECM Titanium Introduzione: In questo documento troverete tutte le informazioni utili per mappare correttamente con il software ECM Titanium, partendo dalla lettura del

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

Perché se ho 4 GiB di RAM ne vedo di meno?

Perché se ho 4 GiB di RAM ne vedo di meno? Perché se ho 4 GiB di ne vedo di meno? di Matteo Italia (matteo@mitalia.net) Abstract In questo articolo mi propongo di spiegare perché utilizzando un sistema operativo a 32 bit su una macchina x86 con

Dettagli

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012 Marco Giorgi Palazzo di Giustizia di Torino 30 marzo 2012 Post mortem (Dopo lo spegnimento del sistema) Si smonta il dispositivo e lo si collega ad un PC dedicato all'acquisizione Live forensics (Direttamente

Dettagli

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 telecamere. I sistemi di acquisizione ed archiviazione

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Ottimizzazione della gestione del data center con Microsoft System Center

Ottimizzazione della gestione del data center con Microsoft System Center Ottimizzazione della gestione del data center con Microsoft System Center Declinazione di responsabilità e informazioni sul copyright Le informazioni contenute nel presente documento rappresentano le conoscenze

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Riusabilità del software - Catalogo delle applicazioni: Applicativo verticale Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Manuale installazione KNOS

Manuale installazione KNOS Manuale installazione KNOS 1. PREREQUISITI... 3 1.1 PIATTAFORME CLIENT... 3 1.2 PIATTAFORME SERVER... 3 1.3 PIATTAFORME DATABASE... 3 1.4 ALTRE APPLICAZIONI LATO SERVER... 3 1.5 ALTRE APPLICAZIONI LATO

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

APPENDICE 3 AL CAPITOLATO TECNICO

APPENDICE 3 AL CAPITOLATO TECNICO CONSIP S.p.A. APPENDICE 3 AL CAPITOLATO TECNICO Manuale d uso del programma Base Informativa di Gestione (BIG), utilizzato per la raccolta delle segnalazioni ed il monitoraggio delle attività di gestione

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

PASSIONE PER L IT PROLAN. network solutions

PASSIONE PER L IT PROLAN. network solutions PASSIONE PER L IT PROLAN network solutions CHI SIAMO Aree di intervento PROFILO AZIENDALE Prolan Network Solutions nasce a Roma nel 2004 dall incontro di professionisti uniti da un valore comune: la passione

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Unified Process Prof. Agostino Poggi Unified Process Unified Software Development Process (USDP), comunemente chiamato

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

Progetto Didattico di Informatica Multimediale

Progetto Didattico di Informatica Multimediale Progetto Didattico di Informatica Multimediale VRAI - Vision, Robotics and Artificial Intelligence 20 aprile 2015 Rev. 18+ Introduzione Le videocamere di riconoscimento sono strumenti sempre più utilizzati

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi Il portafoglio VidyoConferencing Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi La qualità HD di Vidyo mi permette di vedere e ascoltare

Dettagli

Windows Compatibilità

Windows Compatibilità Che novità? Windows Compatibilità CODESOFT 2014 é compatibile con Windows 8.1 e Windows Server 2012 R2 CODESOFT 2014 Compatibilità sistemi operativi: Windows 8 / Windows 8.1 Windows Server 2012 / Windows

Dettagli

Enterprise Services Infrastructure ESI 2.0

Enterprise Services Infrastructure ESI 2.0 Enterprise Services Infrastructure ESI 2.0 Caratteristiche e Posizionamento ver. 2.1 del 21/01/2013 Cos è ESI - Enterprise Service Infrastructure? Cos è ESI? ESI (Enteprise Service Infrastructure) è una

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Panoramica su ITIL V3 ed esempio di implementazione del Service Design

Panoramica su ITIL V3 ed esempio di implementazione del Service Design Master Universitario di II livello in Interoperabilità Per la Pubblica Amministrazione e Le Imprese Panoramica su ITIL V3 ed esempio di implementazione del Service Design Lavoro pratico II Periodo didattico

Dettagli

SYSKOPLAN REPLY IMPLEMENTA PER IL GRUPPO INDUSTRIALE SCHOTT UNA SOLUZIONE SAP CRM SU BASE SAP HANA E OPERATIVA IN 35 PAESI.

SYSKOPLAN REPLY IMPLEMENTA PER IL GRUPPO INDUSTRIALE SCHOTT UNA SOLUZIONE SAP CRM SU BASE SAP HANA E OPERATIVA IN 35 PAESI. SYSKOPLAN REPLY IMPLEMENTA PER IL GRUPPO INDUSTRIALE SCHOTT UNA SOLUZIONE SAP CRM SU BASE SAP HANA E OPERATIVA IN 35 PAESI. Come gruppo industriale tecnologico leader nel settore del vetro e dei materiali

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

Software 2. Classificazione del software. Software di sistema

Software 2. Classificazione del software. Software di sistema Software 2 Insieme di istruzioni e programmi che consentono il funzionamento del computer Il software indica all hardware quali sono le operazioni da eseguire per svolgere determinati compiti Valore spesso

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONN INTERCONNECTING FIRST AND SECOND LIFE

REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONN INTERCONNECTING FIRST AND SECOND LIFE REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONNECTING FIRST AND SECOND LIFE Università degli studi di Catania Facoltà di Ingegneria 26 Gennaio 2009 Sommario 1 Introduzione 2 Middleware Middleware:

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli