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.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

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

Dettagli

Introduzione alla Progettazione per Componenti

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

Dettagli

Prefazione. Contenuti

Prefazione. Contenuti Prefazione Il sistema operativo costituisce uno dei componenti fondamentali di ogni sistema di elaborazione, in particolare è quello con cui l utente entra direttamente in contatto quando accede al sistema,

Dettagli

Classificazione del software

Classificazione del software Classificazione del software Classificazione dei software Sulla base del loro utilizzo, i programmi si distinguono in: SOFTWARE Sistema operativo Software applicativo Sistema operativo: una definizione

Dettagli

Programmazione ad Oggetti. Java Parte I

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

Dettagli

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

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

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

Dettagli

Sme.UP Web Application

Sme.UP Web Application Sme.UP Web Application Web Application Web.UP Una interfaccia web per i vostri dati gestionali Il modulo applicativo Web.UP fornisce al progettista di siti Internet una serie di potenti strumenti per l'integrazione

Dettagli

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

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

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Sistemi e schedulazione in tempo reale

Sistemi e schedulazione in tempo reale Sistemi e schedulazione in tempo reale 1 Sistemi in tempo reale Sistemi di calcolo in cui la correttezza del funzionamento dipende criticamente dal tempo in cui i risultati sono prodotti. Possibili campi

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test Software e difetti Il software con difetti è un grande problema I difetti nel software sono comuni Come sappiamo che il software ha qualche difetto? Conosciamo tramite qualcosa, che non è il codice, cosa

Dettagli

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1 + Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati

Dettagli

Informatica. Prof. A. Longheu. Introduzione a Java

Informatica. Prof. A. Longheu. Introduzione a Java Informatica Prof. A. Longheu Introduzione a Java 1 Code-Name Green Nome del progetto Sun con l obiettivo di fornire intelligent consumer-electronic devices. Il risultato fu Oak Un linguaggio basato su

Dettagli

Sistemi Operativi: Sistemi realtime

Sistemi Operativi: Sistemi realtime 1 Sistemi Operativi: Sistemi realtime Amos Brocco, Ricercatore, DTI / ISIN 30 luglio 2012 Basato su: [STA09] Operating Systems: Internals and Design Principles, 6/E, William Stallings, Prentice Hall, 2009

Dettagli

L Informatica al Vostro Servizio

L Informatica al Vostro Servizio L Informatica al Vostro Servizio Faticoni S.p.A. è Certificata UNI ENI ISO 9001:2008 N. CERT-02228-97-AQ-MILSINCERT per Progettazione, Realizzazione, Manutenzione di soluzioni Hardware e Software Soluzioni

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

CAPITOLO 5 - Sistemi Operativi Moderni

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

Dettagli

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

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

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Contenuti del Corso Riferimenti Regole del Corso Materiale Didattico Scheduling Esami Strumenti Software 16/01/2013 2 Contenuti

Dettagli

Algoritmi di scheduling

Algoritmi di scheduling Capitolo 2 Algoritmi di scheduling 2.1 Sistemi Real Time In un sistema in tempo reale (real time) il tempo gioca un ruolo essenziale. Le applicazioni di tali sistemi sono molteplici e di larga diffusione.

Dettagli

Università degli Studi di Salerno GPS: Gestione Progetti Software. Project Proposal Versione 1.1

Università degli Studi di Salerno GPS: Gestione Progetti Software. Project Proposal Versione 1.1 Università degli Studi di Salerno GPS: Gestione Progetti Software Project Proposal Versione 1.1 Data 27/03/2009 Project Manager: D Amato Angelo 0521000698 Partecipanti: Nome Andrea Cesaro Giuseppe Russo

Dettagli

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

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

Dettagli

Sistemi di Controllo Real Time

Sistemi di Controllo Real Time Sistemi di Controllo Real Time Automazione 13/10/2015 Vincenzo Suraci STRUTTURA DEL NUCLEO TEMATICO SISTEMI REAL TIME CLASSIFICAZIONE DEI SISTEMI REAL TIME PARALLELISMO E PROGRAMMAZIONE CONCORRENTE SISTEMI

Dettagli

Programmazione Java Avanzata Concetti su Java

Programmazione Java Avanzata Concetti su Java Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java

Dettagli

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

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

Dettagli

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

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

Dettagli

Introduzione al linguaggio Java

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

Dettagli

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1)

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1) Pagina 1 di 10 Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1) Nel corso della lezione precedente abbiamo analizzato le caratteristiche dell'architettura CGI.

Dettagli

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010 Soft Control facile con RTX e Windows Embedded Standard 7 RTX 2009: funzionalità ed uso pratico Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010 Definizione di Sistema Tempo Reale: Definizione

Dettagli

La prossima ondata di innovazione aziendale introdotta da Open Network Environment

La prossima ondata di innovazione aziendale introdotta da Open Network Environment Panoramica della soluzione La prossima ondata di innovazione aziendale introdotta da Open Network Environment Panoramica La crescente importanza dei ruoli assunti da tecnologie come cloud, mobilità, social

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

Dettagli

I THREAD O PROCESSI LEGGERI Generalità

I THREAD O PROCESSI LEGGERI Generalità I THREAD O PROCESSI LEGGERI Generalità Thread: segmento di codice (funzione) Ogni processo ha un proprio SPAZIO DI INDIRIZZAMENTO (area di memoria) Tutti i thread genereti dallo stesso processo condividono

Dettagli

Università degli Studi di Roma Tor Vergata. Facoltà di Ingegneria. Corso di Informatica Mobile. http://mislash.googlecode.com

Università degli Studi di Roma Tor Vergata. Facoltà di Ingegneria. Corso di Informatica Mobile. http://mislash.googlecode.com Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Informatica Mobile http://mislash.googlecode.com Professore: Vincenzo Grassi Studenti: Simone Notargiacomo "Roscio" Tavernese Ibrahim

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Java? Sì, grazie. Scopo del corso

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

Dettagli

Open Core Engineering Libertà ed efficienza nelle vostre mani

Open Core Engineering Libertà ed efficienza nelle vostre mani Open Core Engineering Libertà ed efficienza nelle vostre mani Nuove opportunità per affrontare le attuali sfide nella progettazione di software Cicli di vita dei prodotti sempre più brevi stanno alimentando

Dettagli

8. Sistemi Distribuiti e Middleware

8. Sistemi Distribuiti e Middleware 8. Sistemi Distribuiti e Middleware Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 8. Sistemi distribuiti e Middleware 1 / 32 Sommario 1 Sistemi distribuiti

Dettagli

Software. Definizione, tipologie, progettazione

Software. Definizione, tipologie, progettazione Software Definizione, tipologie, progettazione Definizione di software Dopo l hardware analizziamo l altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti

Dettagli

Sistemi Operativi. Introduzione UNICAL. Facoltà di Ingegneria. Domenico Talia A.A. 2002-2003

Sistemi Operativi. Introduzione UNICAL. Facoltà di Ingegneria. Domenico Talia A.A. 2002-2003 Domenico Talia Facoltà di Ingegneria UNICAL A.A. 2002-2003 1.1 Introduzione Presentazione del corso Cosa è un Sistema Operativo? Sistemi Mainframe Sistemi Desktop Sistemi Multiprocessori Sistemi Distribuiti

Dettagli

Conosci il calcio-manuale-copyright 2009 Lallo,Rendinella. Conosci il Calcio. Guida all'uso

Conosci il calcio-manuale-copyright 2009 Lallo,Rendinella. Conosci il Calcio. Guida all'uso Conosci il Calcio Guida all'uso 1 dedicato a tutte le vittime del calcio 2 INDICE 1.Introduzione Motivazioni & Scopo Requisiti 2.Funzionamento Le domande Esempio di esecuzione 3.Conclusioni Sviluppi Futuri

Dettagli

Sistemi Operativi UNICAL. Facoltà di Ingegneria. Domenico Talia A.A. 2002-2003 1.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi UNICAL. Facoltà di Ingegneria. Domenico Talia A.A. 2002-2003 1.1. Sistemi Operativi. D. Talia - UNICAL Domenico Talia Facoltà di Ingegneria UNICAL A.A. 2002-2003 1.1 Introduzione Presentazione del corso Cosa è un Sistema Operativo? Sistemi Mainframe Sistemi Desktop Sistemi Multiprocessori Sistemi Distribuiti

Dettagli

Project Portfolio Management e Program Management in ambito ICT: la verifica di fattibilità del Piano.

Project Portfolio Management e Program Management in ambito ICT: la verifica di fattibilità del Piano. Project Portfolio Management e Program Management in ambito ICT: la verifica di fattibilità del Piano. di: Enrico MASTROFINI Ottobre 2004 Nella formulazione iniziale del Piano Ict sono di solito inseriti

Dettagli

Sistemi Operativi. Modulo 2. C. Marrocco. Università degli Studi di Cassino

Sistemi Operativi. Modulo 2. C. Marrocco. Università degli Studi di Cassino Sistemi Operativi Modulo 2 Schema di un Sistema di Calcolo Programmi Dati di Input Calcolatore Dati di output Modello di von Neumann Bus di sistema CPU Memoria Centrale Memoria di Massa Interfaccia Periferica

Dettagli

Progettare un sito web

Progettare un sito web Progettare un sito web Fasi della progettazione La progettazione di un sito web dovrebbe passare attraverso 4 fasi differenti: 1. Raccolta e realizzazione dei contenuti e delle informazioni da pubblicare

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Algoritmi di scheduling

Algoritmi di scheduling Capitolo 3 Algoritmi di scheduling Come caso particolare di studio, di seguito è discussa in dettaglio la politica di scheduling del sistema operativo LINUX (kernel precedente alla versione 2.6). Sono

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

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job. Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei

Dettagli

Security-By-Contract: come usare software scaricato da internet sul proprio telefono senza pentirsene

Security-By-Contract: come usare software scaricato da internet sul proprio telefono senza pentirsene Security-By-Contract: come usare software scaricato da internet sul proprio telefono senza pentirsene Nicola Dragoni Fabio Massacci dragoni@disi.unitn.it Fabio.Massacci@unitn.it www.massacci.org Dipartimento

Dettagli

Algoritmi di scheduling - Parte 2

Algoritmi di scheduling - Parte 2 Algoritmi di scheduling - Parte 2 Automazione I 12/11/2013 Vincenzo Suraci STRUTTURA DEL NUCLEO TEMATICO ALGORITMO DEADLINE MONOTONIC PRIORITY ORDERING (DMPO) ALGORITMO TIMELINE SCHEDULING (TS) SCHEDULING

Dettagli

La Memoria Virtuale Ottimizzazione della memoria centrale

La Memoria Virtuale Ottimizzazione della memoria centrale La Memoria Virtuale Ottimizzazione della memoria centrale 1) Introduzione- Gerarchia della memoria Da un punto di vista funzionale, ogni dispositivo di memorizzazione elettronica di informazioni presenta

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

Applied Research & Technology Dept.

Applied Research & Technology Dept. 17/12/08 Elenco Tesi Disponibili Applied Research & Technology Dept. La Società MBDA La MBDA Italia è un azienda leader nella realizzazione di sistemi di difesa che con i suoi prodotti è in grado di soddisfare

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

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

Dettagli

DocuWare semplifica la gestione dei dati progettuali

DocuWare semplifica la gestione dei dati progettuali DocuWare per team di progetto Solution Info DocuWare semplifica la gestione dei dati progettuali Con DocuWare è possibile archiviare tutti i documenti in un pool centrale di documenti. I dipendenti possono

Dettagli

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore. I processi Cos è un processo? Un processo è una attività, controllata da un programma, che si svolge su un processore. Il programma è una entità statica che descrive la sequenza di istruzioni che devono

Dettagli

Capitolo 3: Strutture dei sistemi operativi

Capitolo 3: Strutture dei sistemi operativi Capitolo 3: Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione

Dettagli

Introduzione al sistema operativo. Laboratorio Software 2008-2009 C. Brandolese

Introduzione al sistema operativo. Laboratorio Software 2008-2009 C. Brandolese Introduzione al sistema operativo Laboratorio Software 2008-2009 C. Brandolese Che cos è un sistema operativo Alcuni anni fa un sistema operativo era definito come: Il software necessario a controllare

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

ARCHIVI E LORO ORGANIZZAZIONI

ARCHIVI E LORO ORGANIZZAZIONI ARCHIVI E LORO ORGANIZZAZIONI Archivio: - insieme di registrazioni (record), ciascuna costituita da un insieme prefissato di informazioni elementari dette attributi (campi) - insieme di informazioni relative

Dettagli

Zoo di sistemi operativi: studio e realizzazione del supporto di macchine virtuali con accesso via Web

Zoo di sistemi operativi: studio e realizzazione del supporto di macchine virtuali con accesso via Web Zoo di sistemi operativi: studio e realizzazione del supporto di macchine virtuali con accesso via Web Mattia Gentilini Relatore: Renzo Davoli Laurea Specialistica in Informatica I Sessione A.A. 2005/2006

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

FMEA (Failure Mode & Effects Analysis) Manuale per l uso

FMEA (Failure Mode & Effects Analysis) Manuale per l uso FMEA (Failure Mode & Effects Analysis) Manuale per l uso Introduzione Lo scopo di questo manuale e introdurre all uso della FMEA e fornire strumenti di guida all applicazione di questa tecnica. Una FMEA

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

GIANLUIGI BALLARANI. I 10 Errori di Chi Non Riesce a Rendere Negli Esami Come Vorrebbe

GIANLUIGI BALLARANI. I 10 Errori di Chi Non Riesce a Rendere Negli Esami Come Vorrebbe GIANLUIGI BALLARANI I 10 Errori di Chi Non Riesce a Rendere Negli Esami Come Vorrebbe Individuarli e correggerli VOLUME 3 1 GIANLUIGI BALLARANI Autore di Esami No Problem Esami No Problem Tecniche per

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Il software: natura e qualità

Il software: natura e qualità Sommario Il software: natura e qualità Leggere Cap. 2 Ghezzi et al. Natura e peculiarità del software Classificazione delle qualità del software Qualità del prodotto e del processo Qualità interne ed esterne

Dettagli

Strutture dei Sistemi Operativi

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

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto INTRODUZIONE AI SISTEMI DI BASI

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

MANUALE PER LA PRODUZIONE DI TESTI PER IL WEB

MANUALE PER LA PRODUZIONE DI TESTI PER IL WEB MANUALE PER LA PRODUZIONE DI TESTI PER IL WEB Questo manuale fornisce una guida tecnica per scrivere testi da copiare all interno di siti web minimizzando il lavoro necessario per adattare tali testi affinché

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Elementi di informatica e web di Guido Fusco

Elementi di informatica e web di Guido Fusco Presentazione UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II Facoltà di Sociologia Corso di laurea in culture digitali e della comunicazione http://www.corso-informatica-web.com/ Obiettivi del corso 1 ELEMENTI

Dettagli

SISTEMI OPERATIVI DISTRIBUITI

SISTEMI OPERATIVI DISTRIBUITI SISTEMI OPERATIVI DISTRIBUITI E FILE SYSTEM DISTRIBUITI 12.1 Sistemi Distribuiti Sistemi operativi di rete Sistemi operativi distribuiti Robustezza File system distribuiti Naming e Trasparenza Caching

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Cos è un Sistema Operativo? Per capirlo, immaginiamo inizialmente

Dettagli

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

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

Dettagli

Processo di referaggio collana punto org

Processo di referaggio collana punto org Caro Referee, grazie in anticipo per aver accettato di referare per la collana punto org. Il Suo è un ruolo delicato: appartiene a una comunità di studiosi, docenti e professionisti che forniscono ai colleghi

Dettagli

Scheduling della CPU

Scheduling della CPU Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux 6.1 Sistemi multiprocessori simmetrici Fin qui si sono trattati i problemi di scheduling

Dettagli

Sistema Operativo e Applicativi

Sistema Operativo e Applicativi Sistema Operativo e Applicativi Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Software A.A. 2012-2013 1 / 36 Software Conosciamo due classi di software: Programmi

Dettagli

Quando si trasferisce un modello 3D da un'applicazione CAD a un'altra, si possono perdere ore e addirittura giorni nel tentativo di ottenere una

Quando si trasferisce un modello 3D da un'applicazione CAD a un'altra, si possono perdere ore e addirittura giorni nel tentativo di ottenere una Quando si trasferisce un modello 3D da un'applicazione CAD a un'altra, si possono perdere ore e addirittura giorni nel tentativo di ottenere una geometria pulita e apportare anche le modifiche più semplici.

Dettagli

Algoritmo per il rilevamento di targhe

Algoritmo per il rilevamento di targhe Algoritmo per il rilevamento di targhe 19 maggio 2008 Nell affrontare il problema del riconoscimento delle targhe sono stati sviluppati due algoritmi che basano la loro ricerca su criteri differenti. Lo

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

Approccio stratificato

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

Dettagli

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE Logic Lab soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE un progetto italiano www.axelsw.it Logic Lab La garanzia e l economia degli standard più diffusi sul mercato LogicLab è un ambiente di sviluppo

Dettagli

Lezione E1. Sistemi embedded e real-time

Lezione E1. Sistemi embedded e real-time Lezione E1 Sistemi embedded e real-time 3 ottobre 2012 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E1.1 Di cosa parliamo in questa lezione?

Dettagli

Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server

Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server Pagina 1 di 5 Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server Spesso il server non è in grado di gestire tutto il carico di cui è gravato. Inoltre, una

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli

1. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di 40, fra di esse vi sia un solo asso, di qualunque seme.

1. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di 40, fra di esse vi sia un solo asso, di qualunque seme. Esercizi difficili sul calcolo delle probabilità. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di, fra di esse vi sia un solo asso, di qualunque seme. Le parole a caso

Dettagli

Le Basi di dati: generalità. Unità di Apprendimento A1 1

Le Basi di dati: generalità. Unità di Apprendimento A1 1 Le Basi di dati: generalità Unità di Apprendimento A1 1 1 Cosa è una base di dati In ogni modello di organizzazione della vita dell uomo vengono trattate informazioni Una volta individuate e raccolte devono

Dettagli

Architettura dei sistemi di database

Architettura dei sistemi di database 2 Architettura dei sistemi di database 1 Introduzione Come si potrà ben capire, l architettura perfetta non esiste, così come non è sensato credere che esista una sola architettura in grado di risolvere

Dettagli

catalogo corsi di formazione 2015/2016

catalogo corsi di formazione 2015/2016 L offerta formativa inserita in questo catalogo è stata suddivisa in quattro sezioni tematiche che raggruppano i corsi di formazione sulla base degli argomenti trattati. Organizzazione, progettazione e

Dettagli