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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Informatica Industriale -- 2

Informatica Industriale -- 2 Informatica Industriale L. Mezzalira Informatica Industriale -- 2 prof. Lorenzo MEZZALIRA CIM - Automazione - Tempo reale Cap. 1 PROCESSI INDUSTRIALI FUNZIONI APPLICATIVE STRUMENTI INFORMATICI TEMPO REALE

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

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

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

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

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

Scheduling della CPU (2) CPU bursts (2)

Scheduling della CPU (2) CPU bursts (2) Scheduling della CPU (1) - La gestione delle risorse impone al SO di prendere decisioni sulla loro assegnazione in base a criteri di efficienza e funzionalità. - Le risorse più importanti, a questo riguardo,

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

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

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

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

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

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

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

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

Ingegneria del Software Progettazione

Ingegneria del Software Progettazione Ingegneria del Software Progettazione Obiettivi. Approfondire la fase di progettazione dettagliata che precede la fase di realizzazione e codifica. Definire il concetto di qualità del software. Presentare

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

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

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

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

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

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. Il Sistema Operativo. Gestione Risorse (3) Gestione Risorse (2) Cos'è un sistema operativo? Utenti di un SO.

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

Dettagli

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

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

Prof. Pagani Corrado INGEGNERIA DEL SOFTWARE

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

Dettagli

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

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

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

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

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

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

40. Le transizioni fra stati Lo schema di transizione fra stati può essere rappresentato graficamente nel modo seguente :

40. Le transizioni fra stati Lo schema di transizione fra stati può essere rappresentato graficamente nel modo seguente : 32. Il Sistema Operativo : definizione e struttura Il SO è un insieme di programmi le cui funzioni principali sono costituire un interfaccia tra la macchina e l utente e gestire in modo ottimale le risorse

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

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

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

Java. Traditional portability (ideal)

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

Dettagli

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

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

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

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

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

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

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

Dipartimento di Informtica e Sistemistica Università di Roma La Sapienza

Dipartimento di Informtica e Sistemistica Università di Roma La Sapienza Dipartimento di Informtica e stica Università di Roma La Sapienza Cosa è un sistema operativo Esempi di Insieme di componenti SW che gestiscono le operazioni di basso livello dell elaboratore Compiti di

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

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

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

Il Concetto di Processo

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

Dettagli

Automazione di Test di Sistemi Embedded. Sintesi

Automazione di Test di Sistemi Embedded. Sintesi UNIVERSITÀ DEGLI STUDI DI MILANO - BICOCCA Facoltà di Scienze Matematiche, Fisiche e Naturali Dipartimento di Informatica Sistemistica e Comunicazione Corso di Laurea Magistrale in Informatica Automazione

Dettagli

Capitolo 6: CPU scheduling

Capitolo 6: CPU scheduling Capitolo 6: CPU scheduling Concetti di base. Criteri di schedulazione. Gli algoritmi di schedulazione. Schedulazione per sistemi multiprocessore. Schedulazione per sistemi in tempo reale. Schedulazione

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

Sistemi Operativi. Il sistema operativo: generalità Storia ed evoluzione dei sistemi operativi

Sistemi Operativi. Il sistema operativo: generalità Storia ed evoluzione dei sistemi operativi Sistemi Operativi Il sistema operativo: generalità Storia ed evoluzione dei sistemi operativi Un sistema di elaborazione dati Sistema bancario Browser Web Prenotazioni aeree Editor Sistema Operativo Compilatori

Dettagli

Supporto al Sistema Operativo

Supporto al Sistema Operativo Supporto al Sistema Operativo Middleware di supporto al sistema operativo in sistemi distribuiti Funzione del nucleo Modelli architetturali di SO Decomposizione delle funzionalità Processi, thread, processi

Dettagli

Utilizzo Gestione dei file

Utilizzo Gestione dei file Utilizzo Gestione dei file Info su questo bollettino tecnico L'intento di questo bollettino tecnico è di aiutare gli sviluppatori FileMaker esperti a comprendere meglio e ad applicare le migliori metodologie

Dettagli

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

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

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Strutture dei sistemi operativi

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

Dettagli

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

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

Progettazione e sviluppo di una web application per la generazione di dati simulati per un sistema di assistenza alla guida attraverso Google Maps

Progettazione e sviluppo di una web application per la generazione di dati simulati per un sistema di assistenza alla guida attraverso Google Maps UNIVERSITA' DEL SALENTO FACOLTA' DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA DELL INFORMAZIONE Progettazione e sviluppo di una web application per la generazione di dati simulati per un sistema di assistenza

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

aggiunge del testo nella parte finale del tag, in questo caso la stringa da controllare.

aggiunge del testo nella parte finale del tag, in questo caso la stringa da controllare. Capitolo 6 jquery Negli ultimi anni è stata rilasciata una mole incalcolabile di framework JavaScript, più o meno completi, realizzati per supportare nel miglior modo possibile lo sviluppatore web aiutandolo

Dettagli

boot loader partizioni boot sector

boot loader partizioni boot sector IL SISTEMA OPERATIVO Il sistema operativo (S.O.) è un software che fa da interfaccia tra l uomo e l hardware, mettendo a disposizione un ambiente per eseguire i programmi applicativi. Grazie al S.O. un

Dettagli

SISTEMI IN TEMPO REALE

SISTEMI IN TEMPO REALE SISTEMI IN TEMPO REALE Definizione [Stankovic 88] I sistemi real-time (RT) sono quei sistemi di calcolo in cui la correttezza di funzionamento non dipende soltanto dalla validità dei risultati ottenuti

Dettagli

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che Prefazione In questo volume completiamo l esplorazione del linguaggio Java che abbiamo iniziato in Java Fondamenti di programmazione. I due testi fanno parte di un percorso didattico unitario, come testimoniano

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Sistemi Operativi per Sistemi di Elaborazione Ubiqui

Sistemi Operativi per Sistemi di Elaborazione Ubiqui Griglie e Sistemi di Elaborazione Ubiqui Sistemi Operativi per Sistemi di Elaborazione Ubiqui Griglie e Sistemi Ubiqui - D. Talia - UNICAL 1 Sistemi Operativi per Ubiquitous Computing Palm OS Symbian OS

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

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

Dettagli

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

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

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

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