Gestione della Memoria e Garbage Collection in Real-Time Java. Roberto Aloi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Gestione della Memoria e Garbage Collection in Real-Time Java. Roberto Aloi "

Transcript

1 Gestione della Memoria e Garbage Collection in Real-Time Java Roberto Aloi 6 ottobre 2005

2 Ai miei genitori per non avermi tagliato i viveri

3 Indice Indice ii Prefazione v Nota dell'autore viii 1 Java e i sistemi real-time I sistemi real-time Caratteristiche dei sistemi real-time Componenti di un sistema real-time Programmazione real-time Il linguaggio Java Caratteristiche di Java Filosoa di Java Java e la gestione della memoria 1.3 Java verso i sistemi real-time Java VS i sistemi real-time I sistemi real-time verso Java Le Java Native Interface (JNI) Le Real-Time Specication for Java (RTSJ) Real-Time Core Extensions (Core) I Real-Time Garbage Collectors (RTGC) La via dura del PERC Vie alternative Gestione della Memoria Denizioni e Concetti di Base Allocazione dinamica e memoria heap Il problema della frammentazione Politiche di piazzamento Liste Separate

4 INDICE iii Sistemi Buddy Liste Concatenate con Indirezione Conclusioni Garbage Collection Fondamenti della GC I compiti del Garbage Collector Denizioni e Concetti di Base Garbage Detection Reference Counting Il Tracing I Garbage Collector Incrementali Barriere Garbage Collector Generazionali GC Hardware-Assisted Conclusioni La JVM Juice Perché Juice? Breve introduzione a Juice Gestione della memoria in Juice La memoria heap La politica di allocazione in Juice Accesso ai dati Calcolo del WCET Allocazione di un oggetto Accesso ai dati I problemi di Juice Il numero limitato di elds/elementi degli arrays La frammentazione Garbage Collection in Juice L'idea di base Il Pay-Per-Use garbage collector Write Barrier Marking On-new Collection After Collection Marking Predicibilità e calcolo del WCET Ottimizzazioni Problemi di concorrenza

5 INDICE iv 7 Analisi Prestazionale Tempi di allocazione Tempi di accesso ai dati Tempo di accesso agli elementi di un vettore Tempo di accesso ai elds di un oggetto Frammentazione Wasted Space Conclusioni 99 A Juice e NUXI 101 A.1 Breve introduzione a NUXI A.2 Un succo di frutta per una noce Ringraziamenti 105 Elenco delle gure 106 Elenco delle tabelle 108 Bibliograa 110

6 Prefazione Over 90 percent of all microprocessors are now used for real-time and embedded applications. Tali parole non costituiscono semplicemente la frase di apertura del JTRES 2003[1], il workshop sulle Java Technologies for Real-Time and Embedded Systems tenutosi a Catania nel novembre di quell'anno. Esse rappresentano una grande verità, una realtà che non può venire in alcun modo ignorata o, ancor peggio, dimenticata e che ha assunto un'importanza, se possibile, ancor più grande nel corso di questi ultimi due anni. Con queste parole siamo in grado di spiegare le attenzioni di un numero sempre crescente di ricercatori, di comunità ed industrie informatiche per l'argomento, di motivare il successo dello stesso JTRES, di comprendere le ragioni di una scelta: quella di realizzare questa tesi. Queste stesse parole hanno la capacità ed il merito di far riettere il lettore che, osservando il titolo della tesi, ne è rimasto turbato. Real-Time Java Non è un ossimoro. Non un atto di superbia o un'irraggiungibile utopia. E' una possibilità, che sta divenendo, di giorno in giorno, sempre più concreta. Rappresenta la necessità di un mondo informatico che, stretto nella morsa del time to market e dei costi di sviluppo, deve ricorrere a delle soluzioni alternative, rendendo possibile ciò che sino a poco tempo fa sembrava un'inaerrabile chimera: l'adozione di un linguaggio come Java nei sistemi embedded con caratteristiche di tipo real-time. La tesi si occupa proprio di spiegare come sia possibile realizzare questo tanto bramato connubio tra Java ed i sistemi in tempo reale. Dopo un'ampia introduzione al problema, nel quale verranno introdotti proprio i sistemi real-time, il linguaggio Java e le principali problematiche derivanti dalla loro unione, l'attenzione verrà focalizzata su una ben determinata implementazione di Java Virtual Machine, Juice (JVM destinata proprio

7 a sistemi embedded con caratteristiche di tipo real-time, alla realizzazione della quale mi sono dedicato nel corso del mio tirocinio), che verrà analizzata in dettaglio. Verrà presentata, dunque, la tecnica adottata in Juice al ne di garantire predicibilità temporale e possibilità di determinazione del WCET (Worst Case Execution Time) per le operazioni relative alla gestione degli oggetti (i.e. allocazione, accesso ai dati, etc.). Tale tecnica, basata sulla suddivisione della memoria heap in chunks di dimensione pressata e sull'introduzione di una struttura gerarchica mutuata dal mondo del le system di Unix per la gestione degli oggetti, consentirà un'esecuzione controllata dei bytecodes Java relativi alle operazioni su oggetti ed array, che avverrà in tempi costanti o, comunque, lineari, consentendo, così, un'agevole determinazione di un upper bound temporale. Alcuni risultati notevoli, inne, ottenuti da una serie di test eettuati sulla stessa JVM Juice, verranno riportati alla ne della tesi, a suggellare le teorie proposte. Ma vediamo meglio la struttura della tesi. Il Capitolo 1 introduce i sistemi real-time, evidenziandone caratteristiche e peculiarità. In esso spiegheremo come possa rivelarsi interessante l'adozione di un linguaggio come Java, cui è stata riservata una brevissima introduzione, in relazione a degli ambienti in tempo reale. Verranno illustrati gli inevitabili (ed apparentemente insormontabili) ostacoli che una simile scelta presenta. Alcune possibili soluzioni al problema saranno analizzate. Il Capitolo 2 aronta il problema della gestione della memoria in maniera generica per una Java Virtual Machine. Saranno analizzate le più diuse tecniche di gestione della memoria. Verrà introdotto il concetto di memoria heap. Particolare attenzione sarà riservata alla struttura degli oggetti Java ed al problema della frammentazione. Cercheremo di evidenziare la strada da seguire nel processo di design e di sviluppo di una JVM destinata ai sistemi di tipo real-time. Il Capitolo 3 tratta la cosiddetta Garbage Collection. Dopo una introduzione ai concetti base della Garbage Collection, verranno presi in considerazione i principali tipi di Garbage Collector, di cui saranno analizzati pregi e difetti, anche in relazione ad una loro eventuale adozione in un sistema con caratteristiche di tipo real-time. Il Capitolo 4 ci consente di passare da un ambito più generico ad uno decisamente più specico. Verrà, infatti, presa in considerazione una vi

8 ben determinata JVM, Juice[2], sviluppata just for fun secondo le speciche di Sun Microsystem[3] in linguaggio C e pensata ad hoc per dei sistemi embedded e con caratteristiche di tipo real-time. Il Capitolo 5 descrive in modo dettagliato e, speriamo, esauriente le tecniche di gestione della memoria utilizzate nella Java Virtual Machine Juice. Particolare enfasi verrà attribuita alla caratteristica struttura di memorizzazione degli oggetti ideata ad hoc per Juice ed alla politica di allocazione per gli Java Objects. Il Capitolo 6 è dedicato al garbage collector di Juice, battezzato dai suoi autori Pay-Per-Use Garbage Collector. Di esso verranno analizzati caratteristiche ed algoritmi di funzionamento e saranno studiati pro e contro. Alcune possibili ottimizzazioni per il miglioramento delle caratteristiche di predicibilità in relazione al suo utilizzo nell'ambito dei sistemi real-time verranno presentate. Il Capitolo 7 è fondamentalmente costituito da alcuni graci, accompagnati da un ricco commento, che rappresentano il risultato di analisi e statistiche relative a Juice. Particolare attenzione verrà riservata ai dati relativi al grado di frammentazione interna del sistema, ai tempi di allocazione/collezione degli oggetti ed ai loro rispettivi limiti superiori, al tempo di accesso ai dati, etc.. Il Capitolo 8 contiene un piccolo riassunto delle principali conclusioni cui siamo giunti nel corso dell'intera tesi. In esso verranno riportati i principali pro e contro dell'approccio adottato, già analizzati nel corso dei vari capitoli e qui riuniti per fornire al lettore una più corretta visione d'insieme. L' Appendice A consiste in un piccolo approfondimento sul processo di integrazione tra Juice e NUXI 1 [5], An operating system in a nutshell, sistema basato su micro-kernel, progettato per piattaforme Intel-based x86 e destinato a sistemi embedded e con caratteristiche di tipo realtime. vii Roberto Aloi 1Liberamente scaricabile all'indirizzo:

9 Nota dell'autore Questa tesi è stata interamente scritta in ambiente Linux (Distribuzione Gentoo ), utilizzando gli editor di testo Gedit v e Vim v ed il word processor LATEX2 ε. Le immagini sono state realizzate mediante il programma di graca vettoriale Inkscape v.0.41 ed il più ben noto Gimp v.2.2. I graci sono stati creati con Matlab v r13. Immagini e graci sono stati, poi, inseriti nella tesi utilizzando l'utility Python epstopdf. La tesi è interamente scaricabile in formato elettronico agli indirizzi: Agli stessi indirizzi saranno anche presenti tutte le immagini mostrate nella tesi, sia in formato.svg (editabile da Inkscape) che in formato.eps. Saranno disponibili anche le slides da me utilizzate durante la discussione della tesi. Per problemi, dubbi o consigli e per la segnalazione di errori, scrivere a:

10 Capitolo 1 Java e i sistemi real-time L'interesse crescente nei confronti del linguaggio Java da parte del mondo informatico ha, negli ultimi tempi, spinto le comunità di ricerca e le industrie informatiche a trovare alcune soluzioni in grado di consentire l'applicazione di questo linguaggio a sistemi con caratteristiche di tipo realtime, originariamente riservati alle realtà di C, C++, Ada e, soprattutto, Assembler[10]. In questo capitolo, dopo una breve introduzione sui sistemi di tipo realtime e sul linguaggio Java, cercheremo di capire perché un linguaggio come Java si rivela del tutto inadatto, per lo meno nella sua forma originale, a questa categoria di ambienti ed analizzeremo alcune possibili soluzioni al problema. 1.1 I sistemi real-time In linea del tutto generale, i sistemi possono essere classicati in due categorie fondamentali: quelli in cui lo scopo principale è quello di ottenere un risultato valido e quelli in cui tale risultato deve essere ottenuto entro un tempo prestabilito, la famigerata deadline. Nella prima categoria di sistemi, che solitamente sono di tipo interattivo (ovvero basati sull'attesa di input da parte dell'utente), le prestazioni sono sicuramente importanti ma non esasperatamente necessarie. Ciò che conta in questi sistemi è il cosiddetto tempo di risposta medio. Si pensi ad un sistema che si preoccupa di ricevere in ingresso un semplicissimo indirizzo URL (richiesta HTTP) da parte di un client e di fornire come risposta la pagina web desiderata. L'utente che ha eettuato la richiesta non si preoccuperà, certo, del fatto che il tempo di caricamento della pagina richiesta dal suo browser sia esattamen-

11 1.1 I sistemi real-time 2 te lo stesso ogni volta. Ciò che importerà all'utente sarà, invece, che la pagina, ad esempio, non ci metta più di 30 secondi a comparire. Se per una volta al mese ciò (il caricamento entro i 30 secondi) non dovesse avvenire, la più grave conseguenza del fatto potrebbe essere una telefonata di proteste da parte dell'utente nei confronti del proprio provider. Al contrario, ciò che conta nella seconda categoria di sistemi, è il cosiddetto caso peggiore, ovvero il limite superiore ssato per il tempo di risposta. Si pensi, a questo proposito, ad una centrale nucleare ed ai processi di fusione nel nocciolo, tanto per avere un'idea. In una situazione del genere, il violare la deadline potrebbe provocare la perdita, nel caso migliore, di milioni di euro; nel peggiore, di vite umane. Talvolta, in sistemi di questo tipo, potrebbe essere preferibile addirittura non ricevere una risposta, piuttosto che riceverla in ritardo. Questo perché un processo, per quanto formalmente corretto, potrebbe rivelarsi funzionalmente non corretto proprio perché troppo lento. Immaginiamo, a questo proposito, che il task della centralina della nostra auto dedicato alla regolazione della frenata nel nostro ABS riesca a calcolare in modo sempre perfetto la proporzione di frenata per ogni ruota, ma che ci impieghi mezzo secondo di troppo. Probabilmente sarebbe stato preferibile avere un risultato meno accurato ma in tempo, piuttosto che averne uno perfetto ma in ritardo. Ad ogni modo, è chiaro come non tutti i sistemi di tipo real-time abbiano gli stessi requisiti in termini di tempo. Se pensiamo al processo di esecuzione di uno stream audio o video, possiamo facilmente renderci conto di come, in un simile contesto, i vincoli temporali siano importanti ma non certo vitali. Di qui la sotto-distinzione in sistemi soft-real-time ed hard-real-time Caratteristiche dei sistemi real-time In letteratura, si parla delle quattro caratteristiche fondamentali di un sistema real-time. Esse sono: Predicibilità (Predictability) Schedulabilità (Schedulability) Ecienza (Eciency) Robustezza (Robustness)

12 1.1 I sistemi real-time 3 I primi due obiettivi (predicibilità e schedulabilità) sono di gran lunga da preferirsi rispetto agli altri due che, comunque, restano di fondamentale importanza. Essi vanno di pari passo, in quanto avere un sistema altamente predicibile lo rende facilmente schedulabile. Il motivo, poi, che porta una caratteristica come l'ecienza a passare in secondo piano nei sistemi in tempo reale, dovrebbe essere ormai chiaro, in quanto - lo ribadiamo ancora una volta - in questi sistemi ciò che conta è il non oltrepassare un certo limite di tempo nel corso di un'operazione. Non avrebbe senso, in questa ottica di idee, un sistema altamente performante ma non perfettamente predicibile Componenti di un sistema real-time Chiaramente, un sistema real-time è, come tutti i sistemi di tipo hardware/ software, costituito da diverse componenti, ognuna con i propri compiti specici. Come è normale immaginare, non tutte le singole componenti del sistema avranno gli stessi requisiti in termini di tempo e potrà capitare che alcune componenti requisiti di questo tipo non ne abbiano aatto. Una buona classicazione delle diverse componenti (task e thread) di un apparato real-time, estratta da uno dei primi lavori di Kelvin Nilsen[19], può essere considerata la seguente: Task periodici Task sporadici Task spontanei Thread real-time ciclici Runnable Thread I Task periodici sono delle routines schedulate ad intervalli ssi e, perciò, intrinsecamente dipendenti dal tempo. Se chiamiamo T me il tempo massimo di esecuzione di ogni task nel caso peggiore (WCE o Worst Case Execution) e T s l'intervallo di tempo tra due esecuzioni successive dello stesso thread, è chiaro che dovrà in ogni caso essere vericata la seguente: T me T s

13 1.1 I sistemi real-time 4 Si potrebbe pensare di porre sempre: T me = T s ma questo, oltre ad essere molto rischioso, non porterebbe comunque ad una completa occupazione del tempo di CPU dell'intero sistema (anche se monoprocessore) in quanto, spesso e volentieri, il T e (tempo di esecuzione) di un task risulta essere di molto inferiore rispetto al T me. Il calcolo del T me e del rapporto tra questo ed il T e costituisce una classica problematica nell'ambito della progettazione di un sistema real-time. I Task sporadici sono quelli schedulati a tempo non predeterminato in risposta ad eventi esterni, che fungono da attivatori. Si distinguono in Task sporadici regolari, i quali non sono soggetti ad alcun vincolo temporale e Task sporadici real-time, che invece necessitano di una risposta fornita entro un tempo massimo. I Task spontanei sono molto simili ai Task sporadici. Di essi non si conosce, in maniera predeterminata, l'istante di attivazione. Vengono attivati in risposta ad eventi esterni o a cambiamenti di stato del sistema stesso, ma solo nel caso in cui il tempo e le risposte disponibili in quel momento si dovessero rivelare sucienti per assicurarne il completamento. Nel caso contrario, si assisterebbe, invece, ad un totale ignore della richiesta da parte del sistema. I Thread real-time ciclici sono dei task che, girando in un ciclo innito, avanzano così il loro stato, in proporzione al tempo trascorso. La principale caratteristica che li distingue dai task periodici è che, in questo caso, il sistema riserva loro una precisa percentuale di tempo, garantendone l'avanzamento in modo regolare, indipendentemente dal comportamento del resto del sistema. Proprio per questo motivo, ovvero anché il sistema possa assicurare al thread la sua percentuale di tempo, i cicli hanno una durata piuttosto ampia (dell'ordine di alcuni secondi), in maniera tale da non incappare in spiacevoli inconvenienti (qualora, ad esempio, qualche risorsa richiesta dal thread fosse già occupata e, quindi, momentaneamente non disponibile). Inne, i Runnable Thread possono essere pensati come i comuni thread Java, privi di alcun vincolo di tipo temporale Programmazione real-time A questo punto della trattazione dovremmo avere, per lo meno in linea molto generale, un'idea di ciò che un sistema real-time sia. Ciò che cercheremo di fare ora è di capire come i concetti appena visti si traducano a livello di programmazione.

14 1.1 I sistemi real-time 5 Il fatto di avere dei vincoli di tipo real-time su un'applicazione implica un'esatta determinazione, da parte dello sviluppatore, dei requisiti di ogni singolo real-time task in termini di memoria e di tempo di CPU. Il workload dell'intero sistema, dunque, dovrà essere considerato non più in modo generale, ma in funzione di ogni singolo task che contribuirà, con il proprio carico di lavoro, al workload complessivo in una ben determinata maniera. A questo proposito, una delle tecniche più diuse per l'analisi del carico di lavoro di un sistema real-time è la cosiddetta tecnica della rate monotonic analysis. Secondo questa tecnica, ad ogni singolo task viene assegnato un livello di priorità direttamente proporzionale alla sua frequenza di esecuzione. In accordo con questo principio, i task con priorità maggiore saranno quelli che eseguono più frequentemente. Un'analisi matematica dimostra che, ponendosi nello scenario del worst case, tale tecnica garantisce l'esecuzione di tutti task entro i limiti imposti quando il workload complessivo del sistema non supera il 69% della capacità della CPU. Altre tecniche più evolute, quale quella conosciuta come earliest-deadline- rst, consente di raggiungere risultati anche migliori[18]. Ad ogni modo, indipendentemente dal tipo di tecnica utilizzata, ciò che conta è che l'analisi dovrà sempre essere eettuata in base ai WCET ed alla massima frequenza di esecuzione di ogni singolo task, tenendosi sempre nello scenario del caso peggiore. Fatta questa premessa, dovrebbe essere chiaro come sviluppare del software di tipo real-time risulti altamente dicile, costoso e, secondo Nilsen[9], anche profondamente noioso. Ottenere il completo controllo di un sistema di tipo real-time richiede una complessa ed estesa analisi machine-dependent, che si traduce in tempi molto lunghi e costi parecchio elevati per l'azienda. I tools disponibili per la realizzazione e l'analisi di software real-time sono decisamente inferiori, per numero e qualità, rispetto a quelli disponibili per lo sviluppo di software tradizionale (conseguenza, questa, del fatto che il mercato delle applicazioni di tipo real-time è stato tradizionalmente meno vasto rispetto a quello delle applicazioni non-real-time). Ciò fa sì che buona parte del lavoro debba essere fatto a mano dagli sviluppatori, senza l'ausilio di alcun tool di tipo automatico. Come se questo non bastasse, le applicazioni di tipo real-time possono essere considerate, per natura, avverse al concetto di portabilità, dovendo tutte le analisi riguardanti tali sistemi essere eettuate su ogni singola architettura su cui l'applicazione dovrà esser fatta girare (addirittura su congurazioni

15 1.2 Il linguaggio Java 6 diverse della stessa architettura). Se a tutte queste motivazioni si aggiunge, poi, l'alto livello di conservatismo che lo sviluppo di un'applicazione di tipo real-time impone (specie in termini di memoria e di tempo di CPU), si capisce come lo sviluppo di questo tipo di software si riveli a tutti gli eetti un'opera monumentale. Ultimo, ma non meno importante aspetto da considerare è, poi, l'atteggiamento di molti sviluppatori i quali, ritenendo l'uso delle metodologie formali cost-prohibitive, hanno da sempre preferito eettuare un tipo di design basato sul compromesso tra le metodologie di sviluppo tradizionali e quelle riservate ai sistemi real-time. Questo misto di sperimentazione e magia nera (per usare l'espressione dello stesso Nilsen) ha spesso condotto alla realizzazione di sistemi assai fragili, caratterizzati da parametri in perenne equilibrio instabile. 1.2 Il linguaggio Java Il vecchio e canuto cantastorie Google racconta di alcuni magici sviluppatori, devotialdio Sun 1, che, tantotempofa, diederovitaadungrandeemisterioso progetto, riguardante la creazione di una vasta gamma di device di rete e di sistemi embedded. Tali sviluppatori, che provenivano dalle lontane terre del C++, avevano iniziato ad utilizzare la loro lingua madre per lo sviluppo del progetto. Ben presto, però, si trovarono d'innanzi a dicoltà talmente enormi che furono spinti ad abbandonare tale idioma, dando vita ad una nuova lingua, del tutto originale, con caratteristiche tali da sconggere a monte le problematiche rivelatesi tanto ostiche. A questa nuova lingua diedero il nome di Java, in onore della loro bevanda preferita Caratteristiche di Java I nostri favolosi sviluppatori scelsero di dar vita ad un linguaggio con una sintassi familiare per chi, come loro, proveniva dalle lontane regioni del C++ o da quelle limitrofe del C. Coerentemente con gli scopi del progetto di partenza, era stato scelto un linguaggio con le seguenti caratteristiche: Un Run Time System sucientemente piccolo da potere essere adot- 1Raggiungibile per fede all'indirizzo:

16 1.2 Il linguaggio Java 7 Figura 1.1: Il logo di Java. tato nei sistemi embedded (inizialmente si parlava di 40 K per l'interprete e di 175 K per le librerie di base e per il supporto ai thread). La consapevolezza dell'importanza del Write Once, Run Anywhere (o WORA) e del concetto di portabilità del codice, che doveva poter essere trasmesso via rete tra device di diverso tipo, rimanendo eseguibile ovunque e, possibilmente, evitando eventuali restart dei dispositivi. Possibilità di compilare on the y il codice sui diversi dispositivi, in modo da poter raggiungere, se necessario, performances paragonabili a quelle del C++. Semplicazione del processo di implementazione di sistemi fault tolerant, in modo da poter ridistribuire un programma, in caso di guasto di uno o più device, in maniera del tutto trasparente. Necessità di realizzare alcune classi riservate al Networking ed all'esecuzione di oggetti distribuiti Filosoa di Java Ma i nostri cari sviluppatori non si fermarono qui. Avendo la possibilità di cominciare un nuovo capitolo del grande libro dei linguaggi di programmazione, infatti, essi decisero di introdurre alcune importanti innovazioni nel modo di programmare, relativamente a: Filosoa di programmazione Semplicità di programmazione

17 1.2 Il linguaggio Java 8 In relazione al primo punto, essi decisero di avvicinare il modo di realizzare software al modo di vivere di ogni singolo individuo. Sapevano bene, infatti, che il programmatore, in quanto uomo, aveva un modo di percepire la realtà tipico degli esseri umani e ben distante da quello di una macchina. Una parte consistente del lavoro di un programmatore consisteva, dunque, nel convertire un pensiero-uomo in pensiero-macchina, ovvero nel tradurre il mondo reale in quello virtuale. Se fosse stato possibile, in qualche modo, semplicare (o, eventualmente, eliminare del tutto) questo passaggio logico, i tempi e i costi di programmazione sarebbero inevitabilmente crollati. Proprio per questi motivi, allora, scelsero di disegnare Java come un linguaggio Object Oriented puro, ovvero come uno di quei linguaggi che concentravano la propria attenzione ai dati, in contrapposizione ai linguaggi cosiddetti procedurali (quale il C) o pseudo-object-oriented (come il C++), che invece si soermavano maggiormente sul problema da arontare. L'applicazione venne suddivisa in un insieme di oggetti, che interagivano tra di loro e che altro non erano che una rappresentazione dei concetti del mondo reale. Ecco comparire le nozioni di ereditarietà, di polimorsmo e di incapsulamento, che consentivano al programmatore di tradurre in codice il proprio pensiero in maniera sempre più semplice ed ecace. Il programmatore possedeva, in questa maniera, un nuovo, potente, strumento che gli consentiva di modellare più facilmente le proprie applicazioni; uno strumento che assottigliava le dierenze tra modo di ragionare e modo di programmare. In relazione al secondo punto, ovvero alla semplicità di programmazione, i nostri sviluppatori cercarono di eliminare le due principali cause di errore nella scrittura di programmi di grosse dimensioni: i puntatori e, più in generale, la gestione della memoria. Vennero aboliti i puntatori con le caratteristiche tipiche di quelli del C. Al loro posto comparirono i cosiddetti riferimenti che, pur contenendo l'indirizzo di un oggetto (alla stregua dei puntatori del C, che contenevano l'indirizzo di variabili), non permettevano al programmatore di manipolarli con lo stesso grado di libertà che, al contrario, gli concedeva il linguaggio C. Scomparirono l'aritmetica dei puntatori ed il dereferencing automatico, insieme al rischio (notevole!) di commettere errori e di invadere aree non proprie di memoria. Si cercò, dunque, di mantenere la potenza di questo terribile quanto pericoloso strumento, disciplinandone, tuttavia, l'uso.

18 1.3 Java verso i sistemi real-time 9 Per quanto concerne, inne, la gestione della memoria, ciò che si tentò di fare fu semplicemente automatizzare il tutto. Dovrebbe essere chiaro sin d'ora come un linguaggio di programmazione con tali caratteristiche abbia attirato immediatamente l'attenzione dei programmatori delle tribù vicine, espandendosi a macchia d'olio in tutto il mondo allora conosciuto Java e la gestione della memoria In Java (e nei linguaggi orientati agli oggetti in genere) la creazione di un oggetto consiste di due fasi principali: l'allocazione e l'inizializzazione della memoria. La prima consiste, fondamentalmente, nel riservare lo spazio necessario ad un dato. La seconda si riferisce all'associazione di un valore (di default o specicato di volta in volta) al dato stesso. In Java, che conta due categorie di tipi di dato fondamentali, l'allocazione della memoria è gestita in maniera dierente per ognuna di esse. Per quanto concerne la classe dei cosiddetti dati primitivi (char, int, boolean, oat, long...), essi vengono allocati direttamente sullo stack o in un'istanza. Tutti gli altri tipi di dato sono sottoclassi di java.lang.object e vengono allocati dinamicamente all'interno del programma per mezzo dell'operatore new. La zona (pool) di memoria che contiene gli oggetti prende il nome di heap e sarà ampiamente trattata in seguito (vedi la sezione 2.2). Della gestione della memoria heap, dell'allocazione e della collezione (ovvero della deallocazione) degli Java Objects si occupa il Garbage Collector, le cui funzioni analizzeremo in dettaglio nel capitolo Java verso i sistemi real-time Al giorno d'oggi, buona parte del codice Java esistente è stato realizzato, coerentemente con i principi del WORA e della portabilità Java, per la distribuzione via Internet. Purtroppo, lo stesso Internet si è rivelato un sistema altamente sovraccaricato e del tutto impredicibile e ciò ha fatto sì che gli utenti delle comuni applicazioni Java si abituassero a un linguaggio dalle prestazioni non eccezionali e, soprattutto, caratterizzato da tempi di esecuzione dalla grande varianza.

19 1.3 Java verso i sistemi real-time 10 Ad ogni modo, si trova già in fase avanzata di sviluppo una lunga serie di applicativi rispondenti a dei vincoli ben diversi in quanto a predicibilità e caratteristiche di tempo reale. Basti pensare, a questo proposito, al mondo della telefonia o a quello della sintesi musicale, agli stream audio e video, al video-conferencing. Sun sta attualmente promuovendo l'utilizzo di Java come un linguaggio di programmazione general-purpose e già numerose sono le speciche di standardizzazione (o, meglio, Programming Interfaces) destinate ad essere tradotte in prodotti. La stessa Sun sta dedicando parte dei propri sforzi ai progetti JavaCard (per la programmazione di device grandi come una carta di credito o un anello), PersonalJava (per i devices con capacità di networking destinati al personal computing, al mobile computing o alla Web connected television) ed EmbeddedJava (per la realizzazione di strumentazione industriale, fax, switch di rete, elettrodomestici, etc...) 2. Figura 1.2: Rassegna di dispositivi basati su Java. JavaOS, il sistema operativo sviluppato dalla stessa Sun e basato su Java, punta ad una integrazione con i sistemi di tipo embedded di prossima generazione, i quali dovranno fornire dei servizi ad alta qualità quali il mouse 2Si veda il sito per maggiori informazioni sui prodotti appena citati.

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

Intrusion Detection System

Intrusion Detection System Capitolo 12 Intrusion Detection System I meccanismi per la gestione degli attacchi si dividono fra: meccanismi di prevenzione; meccanismi di rilevazione; meccanismi di tolleranza (recovery). In questo

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

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

Il Business Process Management: nuova via verso la competitività aziendale

Il Business Process Management: nuova via verso la competitività aziendale Il Business Process Management: nuova via verso la competitività Renata Bortolin Che cosa significa Business Process Management? In che cosa si distingue dal Business Process Reingeneering? Cosa ha a che

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

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis 2 Intervento immediato con Bosch Intelligent Video Analysis Indipendentemente da quante telecamere il sistema utilizza, la sorveglianza

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

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE In un mercato delle Telecomunicazioni sempre più orientato alla riduzione delle tariffe e dei costi di

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

Cos è l Ingegneria del Software?

Cos è l Ingegneria del Software? Cos è l Ingegneria del Software? Corpus di metodologie e tecniche per la produzione di sistemi software. L ingegneria del software è la disciplina tecnologica e gestionale che riguarda la produzione sistematica

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

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

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

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

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 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

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY Con Kaspersky, adesso è possibile. www.kaspersky.it/business Be Ready for What's Next SOMMARIO Pagina 1. APERTI 24 ORE SU 24...2

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

Corso di Amministrazione di Sistema Parte I ITIL 3

Corso di Amministrazione di Sistema Parte I ITIL 3 Corso di Amministrazione di Sistema Parte I ITIL 3 Francesco Clabot Responsabile erogazione servizi tecnici 1 francesco.clabot@netcom-srl.it Fondamenti di ITIL per la Gestione dei Servizi Informatici Il

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

White Paper. Operational DashBoard. per una Business Intelligence. in real-time

White Paper. Operational DashBoard. per una Business Intelligence. in real-time White Paper Operational DashBoard per una Business Intelligence in real-time Settembre 2011 www.axiante.com A Paper Published by Axiante CAMBIARE LE TRADIZIONI C'è stato un tempo in cui la Business Intelligence

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

Il mondo in cui viviamo

Il mondo in cui viviamo Il mondo in cui viviamo Il modo in cui lo vediamo/ conosciamo Dalle esperienze alle idee Dalle idee alla comunicazione delle idee Quando sono curioso di una cosa, matematica o no, io le faccio delle domande.

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

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Cultura, creatività e sviluppo sostenibile

Cultura, creatività e sviluppo sostenibile Cultura, creatività e sviluppo sostenibile Forse sarebbe necessario che iniziassi correggendo il titolo di questa mia breve introduzione: non cultura, creatività e sviluppo sostenibile, ma cultura globalizzata,

Dettagli

L ADOZIONE DEI LIBRI DI TESTO NELLE SCUOLE EUROPEE

L ADOZIONE DEI LIBRI DI TESTO NELLE SCUOLE EUROPEE L ADOZIONE DEI LIBRI DI TESTO NELLE SCUOLE EUROPEE I rapporti di Eurydice PREMESSA Questo breve rapporto sull adozione dei libri di testo è nato in seguito a una specifica richiesta all unità italiana

Dettagli

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione Processi (di sviluppo del) software Fase di Analisi dei Requisiti Un processo software descrive le attività (o task) necessarie allo sviluppo di un prodotto software e come queste attività sono collegate

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

SOA GOVERNANCE: WHAT DOES IT MEAN? Giorgio Marras

SOA GOVERNANCE: WHAT DOES IT MEAN? Giorgio Marras SOA GOVERNANCE: WHAT DOES IT MEAN? Giorgio Marras 2 Introduzione Le architetture basate sui servizi (SOA) stanno rapidamente diventando lo standard de facto per lo sviluppo delle applicazioni aziendali.

Dettagli

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Tobia Castaldi Alessandro Amirante Lorenzo Miniero Simon Pietro Romano Giorgio Ventre 02/10/2009 GARR 2009 "Network

Dettagli

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE Oracle Business Intelligence Standard Edition One è una soluzione BI completa, integrata destinata alle piccole e medie imprese.oracle

Dettagli

SIASFi: il sistema ed il suo sviluppo

SIASFi: il sistema ed il suo sviluppo SIASFI: IL SISTEMA ED IL SUO SVILUPPO 187 SIASFi: il sistema ed il suo sviluppo Antonio Ronca Il progetto SIASFi nasce dall esperienza maturata da parte dell Archivio di Stato di Firenze nella gestione

Dettagli

Il ciclo di vita del software

Il ciclo di vita del software Il ciclo di vita del software Il ciclo di vita del software Definisce un modello per il software, dalla sua concezione iniziale fino al suo sviluppo completo, al suo rilascio, alla sua successiva evoluzione,

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Creazione di un disegno realistico con CorelDRAW

Creazione di un disegno realistico con CorelDRAW Creazione di un disegno realistico con CorelDRAW Hugo Hansen L'autore L'autore Hugo Hansen vive appena fuori dalla splendida città di Copenhagen. Esperto professionista nell'ambito del design grafico,

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

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

Web Conferencing and Collaboration tool

Web Conferencing and Collaboration tool Web Conferencing and Collaboration tool La piattaforma Meetecho Piattaforma di Web Conferencing e Collaborazione on line in tempo reale Caratteristiche generali Soluzione client-server progettata per essere

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

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

Introduzione al GIS (Geographic Information System)

Introduzione al GIS (Geographic Information System) Introduzione al GIS (Geographic Information System) Sommario 1. COS E IL GIS?... 3 2. CARATTERISTICHE DI UN GIS... 3 3. COMPONENTI DI UN GIS... 4 4. CONTENUTI DI UN GIS... 5 5. FASI OPERATIVE CARATTERIZZANTI

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

L 8 maggio 2002 il Ministero

L 8 maggio 2002 il Ministero > > > > > Prima strategia: ascoltare le esigenze degli utenti, semplificare il linguaggio e la navigazione del sito. Seconda: sviluppare al nostro interno le competenze e le tecnologie per gestire in proprio

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Risorse energetiche, consumi globali e l ambiente: la produzione di energia elettrica. Alessandro Clerici

Risorse energetiche, consumi globali e l ambiente: la produzione di energia elettrica. Alessandro Clerici Risorse energetiche, consumi globali e l ambiente: la produzione di energia elettrica Alessandro Clerici Presidente FAST e Presidente Onorario WEC Italia Premessa La popolazione mondiale è ora di 6,7 miliardi

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

IMPORTANZA DELLE PREVISIONI TECNOLOGICHE NEI PROCESSI PRODUTTIVI 1

IMPORTANZA DELLE PREVISIONI TECNOLOGICHE NEI PROCESSI PRODUTTIVI 1 1. Introduzione IMPORTANZA DELLE PREVISIONI TECNOLOGICHE NEI PROCESSI PRODUTTIVI 1 Ottobre 1970 Caratteristica saliente dell'epoca odierna sembra essere quella della transitorietà. E- spansione, andamento

Dettagli

Le Dashboard di cui non si può fare a meno

Le Dashboard di cui non si può fare a meno Le Dashboard di cui non si può fare a meno Le aziende più sensibili ai cambiamenti stanno facendo di tutto per cogliere qualsiasi opportunità che consenta loro di incrementare il business e di battere

Dettagli

Ministero, dell'istruzione, dell Università e della Ricerca

Ministero, dell'istruzione, dell Università e della Ricerca Prot. n. 612 Spedito il 30/3/2010 All On.le Ministro SEDE OGGETTO: Valutazione della ricerca. Adunanza del 25.03.2010 IL CONSIGLIO UNIVERSITARIO NAZIONALE APPROVA IL SEGUENTE DOCUMENTO: Introduzione Ogni

Dettagli

LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE

LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE E bene presentarla confrontando tra loro varie tecniche: addizione ripetuta; prodotto combinatorio (schieramenti). Rispetto a quest'ultima tecnica, grande utilità

Dettagli

Alcolismo: anche la famiglia e gli amici sono coinvolti

Alcolismo: anche la famiglia e gli amici sono coinvolti Alcolismo: anche la famiglia e gli amici sono coinvolti Informazioni e consigli per chi vive accanto ad una persona con problemi di alcol L alcolismo è una malattia che colpisce anche il contesto famigliare

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

Partenariato transatlantico su commercio e investimenti. Parte normativa

Partenariato transatlantico su commercio e investimenti. Parte normativa Partenariato transatlantico su commercio e investimenti Parte normativa settembre 2013 2 I presidenti Barroso, Van Rompuy e Obama hanno chiarito che la riduzione delle barriere normative al commercio costituisce

Dettagli

Università di Venezia Corso di Laurea in Informatica. Marco Fusaro KPMG S.p.A.

Università di Venezia Corso di Laurea in Informatica. Marco Fusaro KPMG S.p.A. Università di Venezia Corso di Laurea in Informatica Laboratorio di Informatica Applicata Introduzione all IT Governance Lezione 5 Marco Fusaro KPMG S.p.A. 1 CobiT: strumento per la comprensione di una

Dettagli

Rational Unified Process Introduzione

Rational Unified Process Introduzione Rational Unified Process Introduzione G.Raiss - A.Apolloni - 4 maggio 2001 1 Cosa è E un processo di sviluppo definito da Booch, Rumbaugh, Jacobson (autori dell Unified Modeling Language). Il RUP è un

Dettagli

Indagine sull utilizzo di Internet a casa e a scuola

Indagine sull utilizzo di Internet a casa e a scuola Indagine sull utilizzo di Internet a casa e a scuola Realizzata da: Commissionata da: 1 INDICE 1. Metodologia della ricerca Pag. 3 2. Genitori e Internet 2.1 L utilizzo del computer e di Internet in famiglia

Dettagli

LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE.

LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE. Pagina 1 di 5 LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE. A. Armani G. Poletti Spectra s.r.l. Via Magellano 40 Brugherio (Mi) SOMMARIO. L'impiego sempre più diffuso

Dettagli

Energy risk management

Energy risk management Il sistema di supporto alle tue decisioni Energy risk management Un approccio orientato agli attori M.B.I. Srl, Via Francesco Squartini 7-56121 Pisa, Italia - tel. 050 3870888 - fax. 050 3870808 www.powerschedo.it

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

Analisi per tutti. Panoramica. Considerazioni principali. Business Analytics Scheda tecnica. Software per analisi

Analisi per tutti. Panoramica. Considerazioni principali. Business Analytics Scheda tecnica. Software per analisi Analisi per tutti Considerazioni principali Soddisfare le esigenze di una vasta gamma di utenti con analisi semplici e avanzate Coinvolgere le persone giuste nei processi decisionali Consentire l'analisi

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

John Dewey. Le fonti di una scienza dell educazione. educazione

John Dewey. Le fonti di una scienza dell educazione. educazione John Dewey Le fonti di una scienza dell educazione educazione 1929 L educazione come scienza indipendente Esiste una scienza dell educazione? Può esistere una scienza dell educazione? Ṫali questioni ineriscono

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

Gestire le comunicazione aziendali con software Open Source

Gestire le comunicazione aziendali con software Open Source Gestire le comunicazione aziendali con software Open Source Data: Ottobre 2012 Firewall pfsense Mail Server Zimbra Centralino Telefonico Asterisk e FreePBX Fax Server centralizzato Hylafax ed Avantfax

Dettagli

La collaborazione come strumento per l'innovazione.

La collaborazione come strumento per l'innovazione. La collaborazione come strumento per l'innovazione. Gabriele Peroni Manager of IBM Integrated Communication Services 1 La collaborazione come strumento per l'innovazione. I Drivers del Cambiamento: Le

Dettagli

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace:

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace: Overview tecnica Introduzione E un sistema EAI molto flessibile, semplice ed efficace: Introduce un architettura ESB nella realtà del cliente Si basa su standard aperti Utilizza un qualsiasi Application

Dettagli

DNS (Domain Name System) Gruppo Linux

DNS (Domain Name System) Gruppo Linux DNS (Domain Name System) Gruppo Linux Luca Sozio Matteo Giordano Vincenzo Sgaramella Enrico Palmerini DNS (Domain Name System) Ci sono due modi per identificare un host nella rete: - Attraverso un hostname

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

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

Ottimizzare gli sconti per incrementare i profitti

Ottimizzare gli sconti per incrementare i profitti Ottimizzare gli sconti per incrementare i profitti Come gestire la scontistica per massimizzare la marginalità di Danilo Zatta www.simon-kucher.com 1 Il profitto aziendale è dato da tre leve: prezzo per

Dettagli

Working Process ai vertici della tecnologia

Working Process ai vertici della tecnologia ING.qxd 29-04-2013 15:54 Pagina 24 Working Process ai vertici della tecnologia Un produttore italiano porta ai massimi livelli la tecnologia della lavorazione del serramento. Working Process ci ha abituati

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

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

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

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

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

INFORMATIVA SUI COOKIE

INFORMATIVA SUI COOKIE INFORMATIVA SUI COOKIE I Cookie sono costituiti da porzioni di codice installate all'interno del browser che assistono il Titolare nell erogazione del servizio in base alle finalità descritte. Alcune delle

Dettagli

dei processi di customer service

dei processi di customer service WHITE PAPER APRILE 2013 Il Business Process Orchestrator dei processi di customer service Fonte Dati: Forrester Research Inc I marchi registrati citati nel presente documento sono di proprietà esclusiva

Dettagli

Principi base per un buon CV. La struttura del Curriculum

Principi base per un buon CV. La struttura del Curriculum Principi base per un buon CV Il curriculum vitae è il resoconto della vostra vita professionale, e può essere il vostro rappresentante più fedele, a patto che sia fatto bene. Concentratevi sui punti essenziali

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

LA PROGETTAZIONE Come fare un progetto. LA PROGETTAZIONE Come fare un progetto

LA PROGETTAZIONE Come fare un progetto. LA PROGETTAZIONE Come fare un progetto LA PROGETTAZIONE 1 LA PROGETTAZIONE Oggi il raggiungimento di un obiettivo passa per la predisposizione di un progetto. Dal mercato al terzo settore passando per lo Stato: aziende, imprese, organizzazioni,

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Intalio. Leader nei Sistemi Open Source per il Business Process Management. Andrea Calcagno Amministratore Delegato

Intalio. Leader nei Sistemi Open Source per il Business Process Management. Andrea Calcagno Amministratore Delegato Intalio Convegno Open Source per la Pubblica Amministrazione Leader nei Sistemi Open Source per il Business Process Management Navacchio 4 Dicembre 2008 Andrea Calcagno Amministratore Delegato 20081129-1

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Progettazione di sistemi Embedded

Progettazione di sistemi Embedded Progettazione di sistemi Embedded Corso introduttivo di progettazione di sistemi embedded A.S. 2013/2014 proff. Nicola Masarone e Stefano Salvatori Eccetto dove diversamente specificato, i contenuti di

Dettagli

Lezione n 1! Introduzione"

Lezione n 1! Introduzione Lezione n 1! Introduzione" Corso sui linguaggi del web" Fondamentali del web" Fondamentali di una gestione FTP" Nomenclatura di base del linguaggio del web" Come funziona la rete internet?" Connessione"

Dettagli

Gioco d Azzardo Patologico (GAP): anche la famiglia e gli amici sono coinvolti

Gioco d Azzardo Patologico (GAP): anche la famiglia e gli amici sono coinvolti Gioco d Azzardo Patologico (GAP): anche la famiglia e gli amici sono coinvolti Informazioni e consigli per chi vive accanto ad una persona con problemi di gioco d azzardo patologico Testo redatto sulla

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

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento minilector/usb minilector/usb...1 Risoluzione dei problemi più comuni di malfunzionamento...1 1. La segnalazione luminosa (led) su minilector lampeggia?... 1 2. Inserendo una smartcard il led si accende

Dettagli

Gli anziani e Internet

Gli anziani e Internet Hans Rudolf Schelling Alexander Seifert Gli anziani e Internet Motivi del (mancato) utilizzo delle tecnologie dell informazione e della comunicazione (TIC) da parte delle persone sopra i 65 anni in Svizzera

Dettagli

Prefazione alla II edizione

Prefazione alla II edizione Prefazione alla II edizione La seconda edizione di questo testo mantiene tutte le caratteristiche della prima edizione, progettata in modo specifico per i corsi semestrali della Laurea Magistrale in Fisica:

Dettagli

Per una città governabile. Nuove metodologie di lavoro per gestire la complessità e la partecipazione.

Per una città governabile. Nuove metodologie di lavoro per gestire la complessità e la partecipazione. Per una città governabile. Nuove metodologie di lavoro per gestire la complessità e la partecipazione. MICHELE EMILIANO Sindaco del Comune di Bari 12 maggio 2006 Innanzitutto benvenuti a tutti i nostri

Dettagli