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

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

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

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

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

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

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

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

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

INTERFACCIA UTENTE----------------------------------------------------------------------------------------------------

INTERFACCIA UTENTE---------------------------------------------------------------------------------------------------- IL FILE SYSTEM PROF. ANTONIO TUFANO Indice 1 FILE SYSTEM ------------------------------------------------------------------------------------------------------------------ 3 1.1. CARATTERISTICHE E STORIA

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

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

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

Prelevare byte spesso è più costoso che prelevare una word, perchè a questa operazione aggiunge il tempo di shift

Prelevare byte spesso è più costoso che prelevare una word, perchè a questa operazione aggiunge il tempo di shift Parte I La gerarchia di memoria Avere una grande quantità di memoria ad alta velocità, oltre ad essere tecnicamente complesso, porterebbe ad avere costi proibitivi. Si ottengono comunque ottimi risultati

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

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

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

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

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

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

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

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

Sistema Operativo Compilatore

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

Dettagli

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

Linguaggi 2 e laboratorio

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

Dettagli

uomo Software (sistema operativo) hardware

uomo Software (sistema operativo) hardware uomo Software (sistema operativo) hardware 1 Sistema operativo Insieme di programmi che svolgono funzioni essenziali per l uso del sistema di elaborazione Questi programmi sono i primi ad essere eseguiti

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

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

La domotica e l'informatica

La domotica e l'informatica Istituto di Scienza e Tecnologie dell'informazione A Faedo (ISTI) Laboratorio di domotica La domotica e l'informatica Dario Russo (dario.russo@isti.cnr.it) Cosa è l'informatica L'informatica è una scienza

Dettagli

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded WEB SERVER EMBEDDED PER APPLICAZIONI DI Cristian Randieri Per far fronte alle esigenze di sviluppatori che intendono gestire applicazioni professionali per la domotica e la home building automation sfruttando

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

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

Corso di Elettronica dei Sistemi Programmabili. Sistemi Operativi Real Time. Introduzione. Aprile 2014 Stefano Salvatori 1/28

Corso di Elettronica dei Sistemi Programmabili. Sistemi Operativi Real Time. Introduzione. Aprile 2014 Stefano Salvatori 1/28 Corso di Elettronica dei Sistemi Programmabili Sistemi Operativi Real Time Introduzione Aprile 2014 Stefano Salvatori 1/28 Sommario Definizioni livelli di astrazione processi di tipo batch e processi interattivi

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

Sistemi Real-Time Ing. Rigutini Leonardo

Sistemi Real-Time Ing. Rigutini Leonardo Sistemi Real-Time Ing. Rigutini Leonardo Dipartimento di Ingegneria dell informazione Università di Siena Sistema Real-Time Sistema in cui la correttezza non dipende solamente dai valori di output ma anche

Dettagli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

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

Dettagli

Il supporto al Sistema Operativo

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

Dettagli

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

Memorizzazione dei dati: Dischi e File

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

Dettagli

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

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

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

Dettagli

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

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti Sviluppo di applicazioni web con il pattern Model-View-Controller Gabriele Pellegrinetti 2 MVC: come funziona e quali sono vantaggi che derivano dal suo utilizzo? La grande diffusione della tecnologia

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

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A. Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Introduzione Michele Tomaiuolo Ingegneria del software L ingegneria

Dettagli

Indice. settembre 2008 Il File System 2

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

Dettagli

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

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

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

Dettagli

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

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

Lezione R14. Sistemi embedded e real-time

Lezione R14. Sistemi embedded e real-time Lezione R14 Sistemi embedded e 22 gennaio 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 R14.1 Di cosa parliamo in questa lezione? In

Dettagli

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi Lezione 2: Compiti del S.O. La struttura e funzioni dei Sistemi Operativi Un S.O. ha il compito di rendere semplice (all utente), l utilizzo del calcolatore componenti di un sistema operativo servizi dei

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

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

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

Architettura di un sistema operativo

Architettura di un sistema operativo Architettura di un sistema operativo Struttura di un S.O. Sistemi monolitici Sistemi a struttura semplice Sistemi a livelli Virtual Machine Sistemi basati su kernel Sistemi con microkernel Sistemi con

Dettagli

Elementi di Informatica e Programmazione

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

Dettagli

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

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

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

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

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

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

Sistemi Distribuiti. Il corso: informazioni utili AA 2006/2007. Riferimenti del docente: Ricevimento: Materiale Didattico:

Sistemi Distribuiti. Il corso: informazioni utili AA 2006/2007. Riferimenti del docente: Ricevimento: Materiale Didattico: Sistemi Distribuiti Corso di Laurea Specialistica in Telecomunicazioni AA 2006/2007 Slides del corso Sara Tucci Piergiovanni Il corso: informazioni utili Riferimenti del docente: - sito web: www.dis.uniroma1.it/

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

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. Funzioni e strategie di progettazione: dai kernel monolitici alle macchine virtuali

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

Dettagli

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

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

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

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

Dettagli

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

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

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

Dettagli

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

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

Dettagli

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

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

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

JAVA REAL-TIME: ANALISI DELL ARCHITETTURA E VALUTAZIONE SPERIMENTALE DELLA PIATTAFORMA SOLARIS 10.9

JAVA REAL-TIME: ANALISI DELL ARCHITETTURA E VALUTAZIONE SPERIMENTALE DELLA PIATTAFORMA SOLARIS 10.9 JAVA REAL-TIME: ANALISI DELL ARCHITETTURA E VALUTAZIONE SPERIMENTALE DELLA PIATTAFORMA SOLARIS 10.9 Candidato: Marco Nanni RELATORE: Chiar.mo Prof. Eugenio Faldella CORRELATORI Chiar.mo Prof. Marco Prandini

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

Software che sovrintende al funzionamento del computer eseguendo compiti diversi:

Software che sovrintende al funzionamento del computer eseguendo compiti diversi: Sistema Operativo dispensa a cura di Alessandro Bellini Software che sovrintende al funzionamento del computer eseguendo compiti diversi: 1. Gestire interazione utente macchina 2. Fornire un interfaccia

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

Parte VI SISTEMI OPERATIVI

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

Dettagli

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

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

Dettagli

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

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

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

01/05/2014. Dalla precedente lezione. Ruolo dei sistemi operativi. Esecuzione dei programmi

01/05/2014. Dalla precedente lezione. Ruolo dei sistemi operativi. Esecuzione dei programmi Marco Lapegna Laboratorio di Programmazione Dalla precedente lezione 6. I sistemi operativi LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica I Sistemi Operativi Il linguaggi di programmazione

Dettagli

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Introduzione: 1. Principi di base dei sistemi operativi 2. Sistemi

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

Introduzione ai sistemi di basi di dati

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

Dettagli

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

Lezione 6. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 6 Sistemi operativi 31 marzo 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 6.1 Di cosa parliamo in questa lezione? La schedulazione 1 e caratteristiche

Dettagli

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Introduzione al linguaggio Java Cosa c è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Dove trovare informazioni?

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

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

File e indici. Tecnologia delle BD: perché studiarla? Le basi di dati sono grandi e persistenti. DataBase Management System DBMS

File e indici. Tecnologia delle BD: perché studiarla? Le basi di dati sono grandi e persistenti. DataBase Management System DBMS 1 Tecnologia delle BD: perché studiarla? File e indici I DBMS offrono i loro servizi in modo "trasparente": per questo abbiamo potuto finora ignorare molti aspetti realizzativi abbiamo considerato il DBMS

Dettagli

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A.

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A. Mul&programmazione Ges&one dei processi A. Ferrari Tu9 i Sistemi Opera&vi moderni sono in grado di eseguire contemporaneamente più di un programma Il numero di programmi in esecuzione è superiore al numero

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