Sviluppo di un ambiente per la scrittura e la simulazione di programmi per il processore PD32

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sviluppo di un ambiente per la scrittura e la simulazione di programmi per il processore PD32"

Transcript

1 Sviluppo di un ambiente per la scrittura e la simulazione di programmi per il processore PD32 Matteo Leonetti Introduzione Il PD32 è un processore didattico studiato nei corsi di Calcolatori Elettronici in diverse università italiane. La sua struttura e quella dell'assemblatore originale sono descritte in [1]. Il simulatore a corredo di tale libro è stato realizzato nel 1994, e gli undici anni che ha alle spalle iniziano a rendere evidente la necessità di un nuovo ambiente di sviluppo con le caratteristiche di un software moderno. Questo progetto ha l'obiettivo di creare un'alternativa portabile, che costituisca le fondamenta di una suite di applicazioni per la didattica relative al processore ed agli insegnamenti di Calcolatori Elettronici. Si prefigge, inoltre, di migliorare la gestione delle periferiche permettendo la simulazione di periferiche complesse. 1. Architettura DISsimulator 1 è scritto in Java ed è basato sulla versione 1.4 del JSDK. Questo ne garantisce la portabilità su tutti i sistemi per cui sia disponibile una Java Virtual Machine. Per permettere l'estensione del software con moduli esterni, è necessario utilizzare un framework che 1 Il nome è ispirato ad una frase del ritratto di Catilina di Sallustio: Omnium rerum simulator ac dissimulator. Inizialmente questo progetto mirava a realizzare una macchina universale di cui il PD32 fosse una specializzazione. Dunque un simulatore di ogni cosa. Oltre a ciò, la parola dissimulator inizia con l'acronimo del Dipartimento d'informatica e Sistemistica e sembrava dunque particolarmente adatta.

2 metta a disposizione una serie di servizi. Tenendo sempre presente l'aforisma di Eric Raymond: Good programmers know what to write. Great ones know what to rewrite (and reuse) [2] ho individuato i due principali framework basati su Java: NetBeans di Sun Microsystems ed Eclipse di IBM. Entrambi sono software completi e molto complessi. Ho optato per il primo per la possibilità di implementare l'interfaccia grafica con la libreria Swing piuttosto che con la SWT di IBM, che non fa parte delle librerie standard di Java. Sebbene possa essere utilizzata per creare applicazioni di qualunque genere, la NetBeans Platform è la base del noto NetBeans IDE ed è quindi particolarmente adatta per la realizzazione di ambienti di sviluppo. La piattaforma di NetBeans mette a disposizione dei moduli la gestione delle impostazioni, delle finestre, delle eccezioni, e un editor con ampie possibilità di estensione. Un modulo per NetBeans è un file jar, il cui manifest contiene alcune informazione lette dalla piattaforma ed utilizzate per il caricamento delle classi. I moduli possono dichiarare delle dipendenze da altri che vengono aggiunti al loro classpath. DISsimulator è costituito da due moduli: il core e nbplugin. Il primo realizza tutte le funzionalità relative al PD32 e non dipende in nessun modo da NetBeans, mentre il secondo interfaccia il core con il resto della piattaforma: in questo modo è possibile utilizzare il core in un'applicazione autonoma o in qualche altra piattaforma. Analizzerò ora il core nel dettaglio, trattando più avanti il modo in cui DISsimulator dipende da NetBeans. I due blocchi funzionali del core sono l'assemblatore ed il simulatore. Schematicamente, il core appare come in Figura 1. Figura 1 Uno primo sguardo ai blocchi funzionali L'assemblatore riceve dall'utente un programma e costruisce una struttura di dati che lo rappresenti. Il 1

3 Architettura simulatore quindi riceve la struttura di dati e procede con la simulazione. Tutti i package sono sottopackage di it.softeaware.dissimulator, quindi nell'indicarne il nome sottintenderò questa parte comune. Ad esempio it.softeaware.dissimulator.assemblatore sarà indicato più semplicemente con assemblatore. 2. L'assemblatore L'assemblatore è costituito da due parti: l'analizzatore sintattico (o parser) e l'analizzatore semantico. Analizzando la sintassi il parser costruisce una rappresentazione del programma in memoria, tramite un'opportuna struttura di dati detta albero sintattico astratto (Abstract parse tree) [3]. Sarebbe anche possibile effettuare l'assemblaggio direttamente nelle azioni semantiche del parser, come avveniva alcuni anni fa, ma ciò renderebbe il codice dell'analizzatore sintattico difficile da leggere e da modificare. I calcolatori odierni non hanno problemi di memoria, almeno per quanto riguarda la compilazione o il solo assemblaggio dei programmi di dimensioni ridotte (come in questo caso). Il parser, quindi, verifica che il programma rispetti la grammatica (Appendice A) generando delle ParseException nel caso in cui riscontri degli errori. Se il programma risulta sintatticamente corretto il parser completa la costruzione dell'albero, rendendolo disponibile per la successiva fase di analisi semantica. L'analizzatore semantico termina i controlli sul programma ed assegna a variabili ed istruzioni l'indirizzo di memoria a cui dovranno essere caricate; l'albero astratto viene quindi elaborato e la sua versione definitiva trasferita al simulatore. Nel caso in cui qualche verifica fallisca l'analizzatore semantico genererebbe delle eccezioni di tipo AssemblaggioException (di cui ParseException è una sottoclasse privata). Le eccezioni prodotte dall'analizzatore sintattico e da quello semantico vengono raccolte e 3

4 L'assemblatore mostrate all'utente. L'interfaccia del package verso il resto dell'applicazione consiste nella classe Assemblatore (ParserPD32 e AnalizzatoreSemantico sono private) che fa da wrapper per i due componenti e gestisce lo scambio dei dati, restituendo al chiamante l'albero astratto al termine dell'elaborazione, o una lista di messaggi d'errore. Sia nell'assemblatore sia nel simulatore, è molto importante che la generazione e lo scambio di dati siano ben individuati per evitare memory leak 1. Una rappresentazione del flusso di dati all'interno dell'assemblatore è mostrata in Figura 2 mentre la Figura 3 illustra la sequenza delle operazioni. Figura 2 Il flusso di dati all'interno dell'assemblatore L'albero astratto è realizzato con una gerarchia di classi, contenute nel package istruzioni. Questo package è di grande importanza per tutta l'applicazione perché è ad esso che vengono delegate gran parte delle operazioni. Il pd32 possiede circa cinquanta istruzioni, ed otto modi di indirizzamento. Per realizzare le funzioni specifiche di ogni istruzione senza rendere il codice un unico blocco difficilmente gestibile è necessario un approccio fortemente orientato agli oggetti. 1 Gruppi di oggetti non più necessari ma raggiungibili dallo stack (anche indirettamente) che per questo non possono essere deallocati dal garbage collector. 4

5 Le istruzioni Figura 3 Sequence diagram dell'assemblatore 2.1 Le istruzioni Come accennato, il package delle istruzioni è ortogonale sia all'assemblatore sia al simulatore, costituendo una libreria di notevole importanza per tutta l'applicazione. La sua struttura è rappresentata nel diagramma UML della Figura 4. Un programma è composto da un Eseguibile principale, da una lista di Driver ed una di Dichiarazione eventualmente vuote. Ogni Eseguibile contiene, a sua volta, una lista di Istruzione. Ognuna di queste liste è riempita dal parser durante il riconoscimento delle relative sezioni del programma. Le istruzioni dell'assembly PD32 sono rappresentate da una gerarchia di classi la cui radice implementa l'interfaccia Istruzione. Su questa struttura si basa gran parte dell'applicazione, che operando tramite un'interfaccia delega (mediante il polimorfismo) la funzione da svolgere alla classe concreta più appropriata. Questo schema comporta alcuni vantaggi: il parser è indipendente dal set di istruzioni; il codice riguardante ogni istruzione è molto breve e, di conseguenza, facilmente manutenibile (meno di 100 LOC per classe); i metodi si possono condividere 5

6 Le istruzioni o nascondere seguendo le regole di visibilità e dell'ereditarietà; l'interfaccia dell'intera struttura verso il resto dell'applicazione è estremamente semplificata, essendo costituita da due sole interfacce Java. Figura 4 Diagramma del package istruzioni Le istruzioni svolgono due diversi ruoli all'interno dell'applicazione: nell'assemblaggio per il controllo dei parametri e la creazione del codice binario; nell'esecuzione per lo svolgimento delle 6

7 Le istruzioni operazioni caratteristiche dell'istruzione. Questi due ruoli sono realizzati dalle interfacce Java istruzioni.istruzione ed esecuzione.esecutore. Ogni classe concreta che implementa Istruzione ha una classe annidata statica che implementa Esecutore. Essendo statica, non c'è alcuna dipendenza tra questa classe e quella che la contiene, ma è stata implementata annidata per includere in una sola classe tutto quello che riguarda un'istruzione. Così, ad esempio, è possibile aggiungere un'istruzione modificando un solo file, o localizzare eventuali errori molto facilmente. Poiché tutte le classi che implementano Istruzione ed Esecutore sono private, il resto del programma necessita, di un intermediario all'interno del package per accedervi. La classe IstruzioneFactory reperisce la sottoclasse concreta, che rappresenta l'istruzione desiderata, e la restituisce come riferimento di tipo Istruzione (o Esecutore). Quando avviene la prima richiesta IstruzioneFactory crea una tabella di hash che contiene le istruzioni ed una matrice con gli esecutori. La tabella mappa l'insieme dei nomi delle istruzioni su quello delle sottoclassi che le rappresentano, e viene riempita esaminando l'albero delle classi in profondità. L'analizzatore sintattico al riconoscimento di un'istruzione richiede ad IstruzioneFactory di creare un oggetto Istruzione appropriato. IstruzioneFactory, quindi, ottiene (in tempo O(1)) un riferimento all'oggetto di classe Class relativo alla particolare istruzione, e tramite la reflection 1 lo istanzia e lo restituisce. Per gli esecutori la procedura è ancora più semplice e non richiede l'introspezione. Ogni sottoclasse di Esecutore è un Singleton, ed ogni oggetto non conserva alcuna informazione sullo stato dell'esecuzione. Questo rende lecito l'utilizzo degli stessi oggetti in più di una computazione parallela. Un esecutore viene richiesto al momento del fetch dell'istruzione, di cui si può ricavare (tramite opportune maschere binarie) la classe ed il tipo. Queste due informazioni indicizzano la matrice dalla quale si può immediatamente ottenere un riferimento all'esecutore richiesto. 1 La reflection o introspezione è la possibilità, offerta dalla JVM, di ottenere riferimenti ai campi, metodi o costruttori di una data classe. In IstruzioneFactory la reflection è utilizzata per reperire un riferimento di tipo java.lang.reflect.constructor al costruttore della classe concreta che implementa Istruzione, ed istanziare un oggetto. 7

8 La simulazione 3. La simulazione La simulazione consiste nel prelevare la struttura generata dall'assemblatore, creare gli oggetti necessari all'esecuzione del codice, caricare il codice binario in memoria ed eseguire le istruzioni mostrando lo stato della computazione all'utente. Figura 5 Diagramma delle classi del package esecuzione Sono state definite delle interfacce Java per i tipi PD32 e Memoria e le loro implementazioni predefinite esecuzione.defaultpd32 e gui.memoriatablemodel. Per 8

9 La simulazione ottenere il duplice effetto di realizzare la simulazione indipendentemente dall'interfaccia grafica e tenere la GUI costantemente aggiornata, ho integrato il package della simulazione nel modello MVC 1 della libreria Swing. La memoria di lavoro è implementata dal modello di una tabella (JTable) e le operazioni effettuate su di essa si riflettono immediatamente sull'interfaccia grafica. Il processore e le periferiche non sono direttamente modello di qualche componente grafico ma possono registrare dei listener a cui notificare i cambiamenti. Il pannello che visualizza lo stato del processore si registra come listener dell'oggetto PD32 che esegue la computazione. Alla ricezione di un evento questo viene memorizzato e ogni decimo di secondo un javax.swing.timer aggiorna l'interfaccia. L'aggiornamento non avviene immediatamente nel codice che notifica l'evento perché questo è eseguito dal thread del processore mentre solo il gestore degli eventi 2 (thread AWT nella macchina virtuale) può modificare l'interfaccia grafica. Sarebbe, inoltre, molto rischioso che il thread del processore tentasse di modificare anche i componenti sincronizzati perché potrebbe richiedere un lock su un oggetto Swing, pur essendo stato interrotto, terminando conseguentemente con un'eccezione (cfr. Capitolo 4). Questo, per altro, permette a due eventi riguardanti lo stesso registro e giunti nell'intervallo tra un aggiornamento ed il successivo di sovrascriversi evitando di aggiornare due volte (inutilmente) l'interfaccia. Il diagramma delle classi del package esecuzione è mostrato in Figura Avvio dell'esecuzione La costruzione di tutti gli oggetti necessari alla simulazione non è un operazione semplice ed è stata implementata in BuilderEsecuzione. Avviare per la prima volta l'esecuzione richiede: 1 Swing ha un'architettura basata su una variante del pattern MVC (Model-Control-View) nota come separable model architecture. View e Control di MVC sono fusi in un unico componente responsabile della visualizzazione e del comportamento nell'interfaccia grafica mentre il Model contiene i dati e notifica gli oggetti associati dei cambiamenti. 2 In Swing un solo thread può modificare l'interfaccia ed è il gestore degli eventi o thread di AWT (Abstract Window Toolkit). Alcuni componenti sono sincronizzati e possono essere modificati da altri thread ma l'accesso al loro stato richiede l'acquisizione di un lock. 9

10 Avvio dell'esecuzione 1. La creazione della memoria, cioé di un oggetto la cui classe implementa esecuzione.memoria (gui.memoriatablemodel). 2. La creazione di una DaisyChain inizialmente vuota. 3. La creazione del processore, cioè di un oggetto la cui classe implementa esecuzione.processore (DefaultPD32). 4. La scansione del file con le impostazioni delle periferiche, la loro creazione ed inserimento nella daisychain. 5. La creazione dell'interfaccia grafica e la sua registrazione come listener del processore e della memoria. Il processore, all'atto della sua istanziazione, crea un oggetto StatoEsecuzione che racchiude tutto il necessario alla simulazione. Tramite questo è possibile ottenere dei riferimenti alla memoria di lavoro, alla daisychain ed al processore stesso. Lo StatoEsecuzione contiene anche delle variabili usate dagli esecutori (cfr. Capitolo 2.1) per effettuare la computazione. Quando tutti gli oggetti sono stati creati il programma assemblato deve essere caricato in memoria dalla classe Loader ed il registro PC del processore inizializzato con l'indirizzo della prima istruzione. 3.2 Le periferiche La simulazione delle periferiche è l'innovazione più importante tra quelle introdotte da DISsimulator. Nel precedente simulatore l'utente era completamente responsabile del comportamento delle periferiche dovendo personalmente modificarne lo stato. In DISsimulator le periferiche sono autonome ed eseguite in un proprio thread in concorrenza con quello del processore. Una periferica è costituita da una classe che implementa eseuzione.periferiche.periferica e da almeno una classe che implementa esecuzione.periferiche.in- 10

11 Le periferiche terfacciaio. Prima di procedere con la descrizione è indispensabile una precisazione riguardo al termine interfaccia. Con interfaccia Java si indica un tipo del linguaggio di programmazione definito in [4]; con interfaccia hardware si indica il circuito della periferica deputato allo scambio di dati con il processore. La periferica e le interfacce sono simulate ognuna da una classe che deve implementare le interfacce Java menzionate. Per semplificare la scrittura delle periferiche, renderle meno soggette ad errori, e standardizzare le operazioni comuni sono disponibili delle implementazioni di default che possono essere ereditate ridefinendo pochi metodi. Alla creazione degli oggetti responsabili della simulazione viene analizzato il file xml che contiene le impostazioni delle periferiche installate. Per ognuna viene memorizzato il nome della classe che implementa Periferica e per ogni interfaccia hardware l'ivn e l'indirizzo. Tutte le interfacce hardware sono inserite in una lista (daisychain) da cui dipende la priorità della periferica. Nel PD32 ogni interfaccia hardware deve specificare un IVN ed un indirizzo. Un array di 256 elementi da quattro byte memorizza gli indirizzi dei driver di ogni interfaccia. L'Interrupt Vector Number è l'indice dell'interfaccia hardware in questo array. L'indirizzo è il numero che identifica l'interfaccia hardware. Quando il processore riceve un' interruzione manda un segnale di ACK alla prima interfaccia hardware installata. Nel caso in cui quella fosse l'interfaccia che ha richiesto l'interruzione, il segnale di ACK sarebbe mascherato e la periferica avvierebbe il protocollo di comunicazione con il processore. Altrimenti il segnale di ACK verrebbe propagato all'interfaccia successiva. Da questa descrizione si evince che l'ordine in cui le interfacce hardware sono installate nel sistema (costituendo la daisychain) ne determina la priorità. Per molte periferiche con più di una interfaccia hardware è fondamentale che l'ordine tra queste sia rispettato. Come precedentemente accennato, il nome delle classi delle periferiche installate viene letto dal file xml e la periferica istanziata. Successivamente l'inserimento delle interfacce nella DaisyChain viene delegato alla periferica poiché questa conosce l'ordine in cui devono essere installate. Ogni interfaccia hardware ha un riferimento ad un oggetto di tipo 11

12 Le periferiche RicevitoreDiSegnali che rappresenta una vista del processore mostrando solo il metodo sendinterrupt() ed impedendo la modifica diretta del suo stato. In DefaultPD32 una variabile intera memorizza il numero di interruzioni pendenti e viene incrementata ad ogni invocazione di sendinterrupt(true) da parte delle interfacce hardware. Se il numero di interruzioni ricevute è maggiore di zero, al termine dell'istruzione corrente, il processore ottiene dalla DaisyChain l'ivn della prima (per posizione) interfaccia hardware che ha richiesto l'interruzione, ed imposta il registro PC all'indirizzo contenuto nella relativa cella dell'interrupt Vector. In questo modo l'istruzione successiva sarà quella del driver della periferica. Il driver deve modificare il flag status (con le istruzioni start o reset) dell'interfaccia per rimuovere l'interruzione ed evitare di essere eseguito all'infinito. L'invocazione del metodo sendinterrupt(false) decrementa il numero di interruzioni pendenti nel processore. In questo modo eventuali interruzioni giunte durante l'esecuzione della stessa istruzione non si sovrascrivono e gli eventi che vengono simulati sono esattamente quelli previsti nella progettazione del PD Scrivere nuove periferiche La principale conseguenza delle innovazioni apportate alle periferiche è la necessità di realizzarne di nuove. E' certamente possibile scrivere delle periferiche molto semplici che si possano usare esattamente come nel vecchio simulatore ma limitarsi a questo renderebbe vano il nuovo sistema. Per poter essere installata dall'utente una periferica deve apparire nella lista di quelle disponibili che corrisponde al contenuto del file esecuzione/periferiche/periferiche.- list. Quest'ultimo è un file di testo le cui righe riportano il nome della classe della periferica. Ad ogni periferica è associato un file periferica.properties in cui vengono specificati il nome ed una descrizione da mostrare all'utente. Nel pannello Gestione periferiche sono visualizzate a sinistra le 12

13 Scrivere nuove periferiche periferiche disponibili ed a destra quelle attualmente installate. Inserendo un periferica a destra questa sarà installata nella stessa posizione della daisychain in cui figura nella lista. Subito dopo la sua creazione, all'oggetto Periferica viene assegnato un riferimento ad un RicevitoreDiSegnali necessario per l'azione successiva. Alla creazione della periferica segue l'installazione delle interfacce con i metodi Periferca.installaIn() e Periferica.installaOut(). Come indicato precedentemente, ogni periferica è eseguita in un proprio thread. Nel nuovo thread viene invocato il metodo Periferica.esegui() tramite il quale il controllo passa alla classe della periferica. Con lo scopo di agevolare la realizzazione di nuove periferiche sono state create le classi PerifericaAstratta, InputAstratta e OutputAstratta che ridefiniscono gran parte dei metodi richiesti. Esattamente come le interfacce hardware sono standard per tutte le periferiche del PD32, InputAstratta e OutputAstratta implementano tutti i metodi e bisogna aggiungere solo quelli per la comunicazione con la propria periferica che, dovendo generalmente essere package private, non possono comparire nella definizione dell'interfaccia. La classe che estende periferica astratta, invece, oltre ai metodi per l'installazione delle interfacce hardware deve definire dei tamplate method ([5]): eseguiinizializza(): invocato prima di qualsiasi stard(). La periferica può creare un'interfaccia grafica ed effettuare qualunque operazione di inizializzazione. eseguistard(): esegue l'operazione caratteristica della periferica eseguitermina(): chiamato alla fine della simulazione, quando l'utente clicca sul tasto Stop. Esegue tutte le operazioni per una corretta terminazione, ad esempio nasconde la GUI. Quando tutti i metodi sono stati realizzati è sufficiente aggiungere il nome completo (cioè includendo il nome del package) della classe che estende PerifericaAstratta in periferiche.list. 13

14 Il ciclo istruzione 3.3 Il ciclo istruzione E' possibile eseguire la simulazione in tre modalità: Intero programma Un'istruzione Una fase Dopo che tutti gli oggetti sono stati creati seguendo la procedura descritta nel capitolo 3.1 il GestoreSimulazione diventa il responsabile della creazione e terminazione dei thread. A questo oggetto è associato il seguente diagramma di stato: Figura 6 Diagramma di stato di un GestoreSimulazione Nello stato iniziale il GestoreSimulazione è in attesa di un oggetto StatoEsecuzione da cui ottenere riferimenti a tutti gli oggetti creati per la simulazione. Ricevuto uno StatoEsecuzione il GestoreSimulazione può avviare la simulazione. A questo scopo crea ed avvia un thread per il processore ed uno per ogni periferica. In questa fase la simulazione è in corso ed il thread del processore è fermo in attesa di un comando. I comandi vengono inseriti in una lista dall'esterno e estratti dal thread del processore secondo il classico modello del produttoreconsumatore. I comandi sono oggetti di classi che implementano un'opportuna interfaccia Java con un 14

15 Il ciclo istruzione solo metodo: esegui(); Queste classi sono l'equivalente orientato agli oggetti dei puntatori a funzione e sono descritti come pattern Command in [5]. Esistono tre comandi, corrispondenti alle modalità d'esecuzione. Si può eseguire un'intera istruzione o una fase e ad ognuno corrisponde un comando. Quello dell'intero programma, invece, mette in coda il comando per una istruzione e poi se stesso realizzando una sorta di ricorsione utilizzando la coda. L'inserimento di un comando attiva il thread del processore iniziando il ciclo dell'istruzione. La prima operazione è l'individuazione dell'esecutore corretto. L'istruzione puntata dal registro PC viene letta dalla memoria per estrarne la classe ed il tipo che indicizzano la matrice degli esecutori (cfr. Capitolo 2.1). L'esecuzione viene quindi delegata all'oggetto individuato che esegue fetch e completamento (separatamente, se richiesto) agendo come un Visitor (uno dei pattern descritti in [5]) dell'oggetto StatoEsecuzione del processore. Dopo ogni istruzione viene verificato lo stato delle interruzioni ed eventualmente si esegue il salto alla prima istruzione del driver dell'interfaccia che ha mandato il segnale d'interruzione. Quando l'utente clicca sul tasto Stop il GestoreSimulazione transita verso lo stato Thread in esecuzione con la simulazione non più in corso. In questa fase ai thread è inviato il comando di terminazione, alla ricezione del quale le periferiche possono rimuovere la GUI e completare le proprie operazioni correttamente. Quando tutti i thred hanno concluso il loro ciclo vitale la simulazione può essere riavviata. Al termine della simulazione lo stato del processore e delle periferiche non viene reimpostato se non esplicitamente richiesto dall'utente. Dunque l'esecuzione può essere ripresa dallo stato in cui era stata sospesa in qualsiasi momento. In Figura 7 è mostrato il DFD del simulatore. 15

16 Il ciclo istruzione Figura 7 DFD del simulatore 4. L'interfaccia Grafica Gran parte dell'interfaccia grafica dipende dalla piattaforma (in questo caso NetBeans) e quindi non è integrata nel core. Alcune parti però possono essere realizzate in modo piuttosto generico ed in comune tra tutte le piattaforme, in particolare il pannello per comandare l'esecuzione e quello per le interfacce hardware. In questi casi ho deciso di realizzare un'implementazione generica che potesse essere utilizzata dai client del core ed è il motivo principale per cui ho scelto Swing piuttosto che SWT e conseguentemente NetBeans piuttosto che Eclipse. Nell'analisi dello svolgimento della simulazione è stato illustrato come questa non dipenda dall'interfaccia verso l'utente e possa procedere autonomamente come un'applicazione batch. Lo stato della simulazione è costituito dal processore, dalla memoria e dalle periferiche, e tutto è raccolto 16

17 L'interfaccia Grafica nell'oggetto StatoEsecuzione che contiene anche le variabili utilizzate dagli esecutori. Il meccanismo con cui avvengono gli aggiornamenti dell'interfaccia si basa sulla notifica degli eventi e su un Timer di Swing. Nel package esecuzione.eventi sono definite le classi ModificaRegistroEvent, StatoInterfacciaEvent e StatoSimulazioneEvent con i relativi Listener. Questi eventi vengono generati rispettivamente dal processore, dalle interfacce hardware e dal GestoreSimulazione. Il pannello dell'esecuzione si registra come listener di eventi del processore e del gestore della simulazione, mentre il pannello delle interfacce hardware con l'interfaccia a cui è associato. Una cosa da tenere in considerazione, nella scrittura del codice dei metodi che ricevono la notifica di un evento, è che ad eseguire il codice del metodo è il thread che genera l'evento cioé, in particolare, il thread del processore. D'altra parte in Swing un solo thread può modificare l'interfaccia ed è il gestore degli eventi o thread AWT. Solo alcuni componenti in Swing sono sincronizzati. Aggiornare l'interfaccia grafica nei metodi di notifica comporterebbe due svantaggi: la simulazione dovrebbe accollarsi la responsabilità dell'aggiornamento, risultando fortemente rallentata, e nel modificare dei componenti sincronizzati il thread del processore dovrebbe richiedere dei lock 1. Il thread del processore, quando non ha dei comandi da attuare, sospende la propria esecuzione fino all'inserimento di un nuovo comando nella coda e alla conseguente invocazione del metodo interrupt() sul thread stesso. Ciò significa che il flag interrupted associato al thread viene costantemente settato e resettato. I componenti di Swing con metodi sincronizzati, come ad esemempio JTextField.setText() implementano un meccanismo di locking ad un livello superiore dei semplici blocchi sincronizzati. Infatti, permettono a più thread di leggere il contenuto dell'oggetto contemporaneamente (nel caso di JTextField il testo memorizzato nel modello, generalmente una sottoclasse di AbstractDocument) ma ad uno solo di modificarlo. Tale sincronizzazione ha però una limitazione non documentata: il thread che vuole modificare il 1 In Java ogni oggetto ha associato un lock, cioé una chiave che permette al solo thread che è riuscito ad ottenerla di eseguire i metodi sincronizzati sull'oggetto. 17

18 L'interfaccia Grafica componente non può essere interrotto durante il tentativo di acquisizione del lock. Nel caso in cui un thread fosse interrotto sarebbe generato un Error che quindi porterebbe all'immediata terminazione del thread senza possibilità di gestire l'eccezione. Un thread continuamente interrotto come quello del processore certamente non riuscirebbe ad evitare che questo accada. Il pannello dell'esecuzione possiede un array di eventi indicizzato dal codice associato a ciascun registro. Quando il thread del processore notifica un evento imposta la cella dell'array relativa al registro coinvolto nel cambiamento di stato. Ogni decimo di secondo nel thread AWT viene eseguito il metodo di aggiornamento dell'interfaccia che per ogni evento ricevuto apporta le dovute modifiche. Se più di un evento dovesse avvenire tra due aggiornamenti dell'interfaccia, solo l'ultimo comporterebbe una effettiva modifica. Poiché l'utente non è in grado di cogliere due cambiamenti in meno di un decimo di secondo questo limita il numero di modifiche da apportare alla GUI e riduce i tempi d'esecuzione. Le modifiche alla memoria di lavoro si riflettono immediatamente sulla tabella che ne visualizza il contenuto poiché la memoria stessa è anche il modello della JTable che la rappresenta. La RAM a disposizione del PD32 ha una dimensione di 10KB e non sarebbe stato efficiente duplicarla nel simulatore e nell'interfaccia grafica dovendo, in tal caso, risolvere i conseguenti problemi di sincronizzazione. Anche il pannello dell'esecuzione riceve la notifica dei cambiamenti nelle memoria e la salva in una variabile per selezionare, al successivo aggiornamento dell'interfaccia, la riga con l'ultima cella modificata. Il pannello delle interfacce hardware è a disposizione delle periferiche. Può essergli assssegnata un'interfaccia hardware e viene automaticamente aggiornato alla notifica dei StatoInterfacciaEvent. 18

19 NetBeans platform 5. NetBeans platform Il modulo nbplugin integra il core con la piattaforma di NetBeans. NetBeans è costituito a sua volta da un core non accessibile dall'esterno, da un'api (openide) e dai moduli. Tutte le funzionalità non relative alla piattaforma sono realizzate dai moduli. Un modulo è un file jar contenente, oltre alle classi che utilizza, dei particolari attributi nel manifest il cui valore specifica: nome, descrizione, versione ed eventuali dipendenze da altri moduli, da una versione della JVM o della piattaforma stessa. L'installazione di menù, actions, toolbar ed altri componenti grafici o relativi al comportamento dell'interfaccia avviane mediante dei file xml. La aspetto della piattaforma può essere modificato tramite il branding (personalizzazione) con un meccanismo analogo alla localizzazione (tramite file properties). 5.1 Il caricamento delle classi Una piattaforma basata su dei file jar riconosciuti durante l'esecuzione pone particolari problemi relativi al caricamento delle classi dato che il classpath non è noto a priori. Ad ogni modulo viene assegnato un ClassLoader che gli permette di accedere all'api e alle classi nel proprio file jar ma non a quelle di altri moduli. Per poter richiedere il caricamento di classi in moduli esterni è necessario specificare la dipendenza nel file manifest. In tal caso il ClassLoader relativo al modulo avrà nel path anche tutti i jar dei moduli da cui questo dipende. Inizialmente il progetto di DISsimulator prevedeva che le periferiche non fossero contenute nel core ma ognuna in un proprio file potendo essere facilmente scritta ed aggiunta da qualsiasi utente. Una tale realizzazione richiedeva la creazione di un URLClassLoader con il percorso del file jar della periferica per accedere alle classi. Il modulo doveva provvedere al 19

20 Il caricamento delle classi caricamento delle classi della periferica creando il classloader necessario come figlio 1 di quello associato al modulo in modo che la periferica potesse avere acesso anche all'api di NetBeans. Purtroppo questa soluzione si è rivelata inattuabile per via di un meccanismo di serializzazione interno alla piattaforma. NetBeans, all'avvio, tenta di ripristinare la precedente sessione deserializzando i componenti attivi al momento della chiusura. Se una periferica crea un pannello all'interno della finestra principale questo viene registrato e serializzato. Quando la piattaforma tenta di ripristinare il pannello non è più in grado di localizzarne la classe, essendo questa stata caricata dal modulo e non dal classloader di NetBeans. Questa evenienza genera numerosi messaggi d'errore nel file di log e, sebbene non sembri avere altre conseguenze, ho preferito unire le periferiche al core dove possono essere regolarmente caricate. Non è possibile nemmeno l'inserimento delle periferiche in un modulo esterno, diverso dal core perché i due moduli (core e periferiche) dovrebbero dichiarare delle dipendenze reciproche e l'attivazione dei moduli è un processo strettamente sequenziale. In questo caso la piattaforma non sarebbe in grado di attivare uno dei due Conclusioni Questo progetto è nato con l'intento di modernizzare un software datato avvicinandolo ai suoi utenti e facendo tesoro dell'esperienza accumulata nei dieci anni in cui è stato utilizzato. L'intero design dell'applicazione è stato concepito per permetterne facilmente la modifica e l'estensione. Sono già in fase di realizzazione dei programmi a scopo didattico che faranno presto parte di DISsimulator, con la speranza che il progetto possa diventare una suite completa e matura. Il software è opensource ed è rilasciato con licenza Gnu GPL (General Public License). 1 I classloader sono organizzati in maniera gerarchica ad albero. Ognuno di essi nel tentativo di localizzare una risorsa deve prima fare riferimento al padre (il primo classloader verso l'alto nella gerarchia) e solo se questi non riesce nell'operazione cercare tra le proprie risorse. 20

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

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

INDICE. Indice. Introduzione

INDICE. Indice. Introduzione V Indice Introduzione XIII Capitolo 1 La programmazione multithread 1 1.1 Cosa sono i thread 2 Utilizzare i thread per dare una possibilità ad altri task 9 Avvio ed esecuzione dei thread 10 Esecuzione

Dettagli

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario L hardware di I/O Struttura Interazione tra computer e controllori

Dettagli

Corso di Ingegneria del software Como. Prof. Marco Brambilla. Cruscotto auto. Aramini Antonio Umberto

Corso di Ingegneria del software Como. Prof. Marco Brambilla. Cruscotto auto. Aramini Antonio Umberto Corso di Ingegneria del software Como Prof. Marco Brambilla Cruscotto auto Aramini Antonio Umberto Tema d esame: Si vuole realizzare un sistema embedded per autoveicoli che gestisce tutto il pannello di

Dettagli

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE 1. INTRODUZIONE In questo capitolo viene presentata la struttura, sia interna che esterna, di un microprocessore generico riprendendo i concetti esposti nella

Dettagli

ShellMemory. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio

ShellMemory. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio Progetto Software to Fit - ShellMemory Pagina 1 Manuale d'uso ShellMemory Memory è un gioco didattico realizzato con l'obiettivo di aiutare l'alunno ad esercitare la capacità di memorizzazione o le capacità

Dettagli

NCR 2215 e compatibili

NCR 2215 e compatibili MANUALE D USO NCR 2215 e compatibili COMPATIBILE WINDOWS VISTA / 7 / 8 Versione 1.0.0.8 Manuale RTS WPOS1 INDICE MANUALE D USO...1 NCR 2215 e compatibili...1 INDICE... 2 LEGENDA... 2 PREMESSA... 3 VERSIONI

Dettagli

Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy.

Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy. Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy. 10 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com

Dettagli

MANUALE D USO SWEDA MASTER

MANUALE D USO SWEDA MASTER MANUALE D USO SWEDA MASTER COMPATIBILE WINDOWS VISTA Versione 1.2.0.3 Manuale RTS WPOS1 INDICE INDICE... 2 LEGENDA... 2 PREMESSA... 3 VERSIONI DEL PROGRAMMA... 3 COMPATIBILITA CON WINDOWS VISTA... 3 PROGRAMMAZIONE

Dettagli

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE APPROFONDIMENTO ICT Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto Approfondimento SOFTWARE PER L ARCHIVIAZIONE ORGANISMO BILATERALE PER LA FORMAZIONE IN CAMPANIA INDICE SOFTWARE PER

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

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

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Corso Eclipse. Prerequisiti. 1 Introduzione

Corso Eclipse. Prerequisiti. 1 Introduzione Corso Eclipse 1 Introduzione 1 Prerequisiti Uso elementare del pc Esecuzione ricerche su Internet Esecuzione download Conoscenza elementare della programmazione 2 1 Cos è Eclipse Eclipse è un IDE (Integrated

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

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 Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

GEODROP APPLICATIONS. Developer. Public. Private. Reseller

GEODROP APPLICATIONS. Developer. Public. Private. Reseller GEODROP APPLICATIONS Public Developer Reseller Private Le Applicazioni di Geodrop Guida per Developer alle Applicazioni Guida alle applicazioni v1.1-it, 21 Dicembre 2012 Indice Indice...2 Cronologia delle

Dettagli

Xampp. Valeriano Maysonnave - A.A. 2014/2015 -

Xampp. Valeriano Maysonnave - A.A. 2014/2015 - Xampp Valeriano Maysonnave - A.A. 2014/2015-1 Introduzione...1 2 Installazione su Windows...1 3 Configurazione Apache...2 3.1 Accesso al file di configurazione httpd.conf...2 3.2 Il file httpd.conf...3

Dettagli

Acronis License Server. Manuale utente

Acronis License Server. Manuale utente Acronis License Server Manuale utente INDICE 1. INTRODUZIONE... 3 1.1 Panoramica... 3 1.2 Politica della licenza... 3 2. SISTEMI OPERATIVI SUPPORTATI... 4 3. INSTALLAZIONE DI ACRONIS LICENSE SERVER...

Dettagli

progecad NLM Guida all uso Rel. 10.2

progecad NLM Guida all uso Rel. 10.2 progecad NLM Guida all uso Rel. 10.2 Indice Indice... 2 Introduzione... 3 Come Iniziare... 3 Installare progecad NLM Server... 3 Registrare progecad NLM Server... 3 Aggiungere e attivare le licenze...

Dettagli

'LVSHQVD :LQGRZV GL0&ULVWLQD&LSULDQL

'LVSHQVD :LQGRZV GL0&ULVWLQD&LSULDQL 'LVSHQVD 'L :LQGRZV GL0&ULVWLQD&LSULDQL ',63(16$',:,1'2:6,QWURGX]LRQH Windows 95/98 è un sistema operativo con interfaccia grafica GUI (Graphics User Interface), a 32 bit, multitasking preempitive. Sistema

Dettagli

SartoCollect v1.0 - Installazione e istruzioni per l'esecuzione

SartoCollect v1.0 - Installazione e istruzioni per l'esecuzione SartoCollect v1.0 - Installazione e istruzioni per l'esecuzione Grazie per il vostro recente acquisto di SartoCollect. Il software SartoCollect vi consentirà di importare direttamente i dati del vostro

Dettagli

Retrospect 9 per Mac Appendice al Manuale per l'utente

Retrospect 9 per Mac Appendice al Manuale per l'utente Retrospect 9 per Mac Appendice al Manuale per l'utente 2 Retrospect 9 Manuale dell'utente Appendice www.retrospect.com 2011 Retrospect, Inc. Tutti i diritti riservati. Manuale per l'utente Retrospect 9,

Dettagli

Manuale Utente Archivierete Novembre 2008 Pagina 2 di 17

Manuale Utente Archivierete Novembre 2008 Pagina 2 di 17 Manuale utente 1. Introduzione ad Archivierete... 3 1.1. Il salvataggio dei dati... 3 1.2. Come funziona Archivierete... 3 1.3. Primo salvataggio e salvataggi successivi... 5 1.4. Versioni dei salvataggi...

Dettagli

Introduzione ai Sistemi Operativi

Introduzione ai Sistemi Operativi Introduzione ai Sistemi Operativi Sistema Operativo Software! Applicazioni! Sistema Operativo! È il livello di SW con cui! interagisce l utente! e comprende! programmi quali :! Compilatori! Editori di

Dettagli

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it -

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it - 1 ARGO DOC ARGO DOC è un sistema per la gestione documentale in formato elettronico che consente di conservare i propri documenti su un server Web accessibile via internet. Ciò significa che i documenti

Dettagli

Banca Dati Giuridica del Personale della Polizia di Stato

Banca Dati Giuridica del Personale della Polizia di Stato All. 5 DIPARTIMENTO DELLA PUBBLICA SICUREZZA Direzione Centrale per le Risorse Umane Banca Dati Giuridica del Personale della Polizia di Stato Manuale Utente 1. Manuale Utente Banca Dati Giuridica del

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

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012 Sapienza Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

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

TRENDAGENTI - Manuale Utente

TRENDAGENTI - Manuale Utente TRENDAGENTI - Manuale Utente Indice: Introduzione...02 La schermata principale...02 Sincronizzazione e download immagini...03 Modifica delle Impostazioni...05 Catalogo...06 Creazione e Gestione Clienti...07

Dettagli

Guida dell'amministratore di JMP 8 alle versioni con licenza annuale per Windows, Macintosh e Linux

Guida dell'amministratore di JMP 8 alle versioni con licenza annuale per Windows, Macintosh e Linux Guida dell'amministratore di JMP 8 alle versioni con licenza annuale per Windows, Macintosh e Linux Gli estremi corretti per la citazione bibliografica di questo manuale sono i seguenti: SAS Institute

Dettagli

MANUALE D USO SAREMA SF1000

MANUALE D USO SAREMA SF1000 MANUALE D USO SAREMA SF1000 COMPATIBILE WINDOWS VISTA Versione 1.2.0.0 Manuale RTS WPOS1 INDICE INDICE... 2 LEGENDA... 2 PREMESSA... 3 VERSIONI DEL PROGRAMMA... 3 COMPATIBILITA CON WINDOWS VISTA... 3 PROGRAMMAZIONE

Dettagli

1. I database. La schermata di avvio di Access

1. I database. La schermata di avvio di Access 7 Microsoft Access 1. I database Con il termine database (o base di dati) si intende una raccolta organizzata di dati, strutturati in maniera tale che, effettuandovi operazioni di vario tipo (inserimento

Dettagli

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica...

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica... Indice Introduzione... 2 Un software per l automazione di procedure statistiche su dati Pet... 2 Il Pre-Processing... 7 La fase di statistica... 12 Algoritmo di classificazione... 13 L interfaccia... 15

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

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

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

Dettagli

Infrastrutture Software

Infrastrutture Software Infrastrutture Software I componenti fisici di un sistema informatico sono resi accessibili agli utenti attraverso un complesso di strumenti software finalizzati all utilizzo dell architettura. Si tratta

Dettagli

Relazione Progetto. Restaurant Manager. Corso: Programmazione ad oggetti Anno scolastico 2014/2015. Sara Sintoni Matteo Venditto

Relazione Progetto. Restaurant Manager. Corso: Programmazione ad oggetti Anno scolastico 2014/2015. Sara Sintoni Matteo Venditto Relazione Progetto Restaurant Manager Corso: Programmazione ad oggetti Anno scolastico 2014/2015 Autori: Daniele Rosetti Sara Sintoni Matteo Venditto Indice 1. Analisi 3 1.1 Requisiti... 3 1.2 Problema...

Dettagli

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera CPU Memoria principale Il Sistema Operativo Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura A.A. 2009/2010 ALU Unità di controllo Registri A indirizzi

Dettagli

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011 Protocollo di trasmissione Trova il Tuo Farmaco Versione documento: 1.4 Data: 29/06/2011 Indice Protocollo di trasmissione Trova il Tuo Farmaco...1 Requisiti...2 Finalità...2 Software...2 Documentazione...2

Dettagli

Lab 01 Sistemi Operativi

Lab 01 Sistemi Operativi Informatica Grafica Ingegneria Edile-Architettura a.a. 2010/2011 Lab 01 Sistemi Operativi Lab01 1 Obiettivi Durante l'esercitazione vedremo come il sistema operativo si occupa di gestire: 1. i processi

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

SidekickPC 3.0 Risoluzione Problemi 31 MAGGIO 2012

SidekickPC 3.0 Risoluzione Problemi 31 MAGGIO 2012 SidekickPC 3.0 Risoluzione Problemi 31 MAGGIO 2012 2012 Electrolux Italia S.p.A., All rights reserved INDICE 1. ERRORI DI PROGRAMMA DOPO AGGIORNAMENTO ALLA VERSIONE 3.0... 2. MESSAGGI NELLA FINESTRA DI

Dettagli

OASIS è una fabbrica per il bene comune dei dati attraverso l uso delle applicazioni proposte.

OASIS è una fabbrica per il bene comune dei dati attraverso l uso delle applicazioni proposte. 1 Guida Utente 1.1 Panoramica di OASIS OASIS è una fabbrica per il bene comune dei dati attraverso l uso delle applicazioni proposte. Grazie a OASIS, sarai in grado di acquistare o selezionare, dallo store,

Dettagli

Le Infrastrutture Software ed il Sistema Operativo

Le Infrastrutture Software ed il Sistema Operativo Le Infrastrutture Software ed il Sistema Operativo Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Il Sistema Operativo (S0) (Inf.) E' l'insieme dei programmi che consentono

Dettagli

Per ulteriori informazioni, vedere l'articolo Nozioni fondamentali della progettazione di database.

Per ulteriori informazioni, vedere l'articolo Nozioni fondamentali della progettazione di database. 1 di 13 22/04/2012 250 Supporto / Access / Guida e procedure di Access 2007 / Tabelle Guida alle relazioni tra tabelle Si applica a: Microsoft Office Access 2007 Uno degli obiettivi di una buona strutturazione

Dettagli

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java La Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Anno Accedemico 2008-2009 Relazione finale su progetto interno Realizzazione di un applicazione per la visualizzazione

Dettagli

Anno 2009/2010 Syllabus 5.0

Anno 2009/2010 Syllabus 5.0 Patente Europea di Informatica ECDL Modulo 2 Lezione 3: Pannello di controllo Caratteristiche del sistema Gestione delle stampe Utilità Anno 2009/2010 Syllabus 5.0 Il Pannello di Controllo permette di

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

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

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Funzioni del Sistema Operativo

Funzioni del Sistema Operativo Il Software I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (ferramenta). La struttura del calcolatore può essere schematizzata come una serie di

Dettagli

La gestione della produzione avanzata richiede Mon Ami 3000 Azienda Pro oltre alle opzioni Produzione base e Produzione avanzata.

La gestione della produzione avanzata richiede Mon Ami 3000 Azienda Pro oltre alle opzioni Produzione base e Produzione avanzata. Mon Ami 3000 Produzione avanzata Distinta base multi-livello e lancio di produzione impegno di magazzino, emissione ordini e schede di lavorazione gestione avanzamento di produzione Prerequisiti La gestione

Dettagli

Nota Tecnica Premium HMI 4.0.1152 TN0022

Nota Tecnica Premium HMI 4.0.1152 TN0022 Premium HMI 4.0.1152 Introduzione Il documento raccoglie le note di rilascio per la versione 4.0.1152 di Premium HMI. Le principali novità introdotte riguardano i seguenti aspetti: Nuove funzioni per una

Dettagli

HARDWARE. Relazione di Informatica

HARDWARE. Relazione di Informatica Michele Venditti 2 D 05/12/11 Relazione di Informatica HARDWARE Con Hardware s intende l insieme delle parti solide o ( materiali ) del computer, per esempio : monitor, tastiera, mouse, scheda madre. -

Dettagli

Tibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x)

Tibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x) Tibet4DExt Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea (Versione 1.7.x) Manuale Utente Capitolo 1, Informazioni Generali Informazioni generali su Tibet4DExt Il plug-in Tibet4DExt

Dettagli

Server USB Manuale dell'utente

Server USB Manuale dell'utente Server USB Manuale dell'utente - 1 - Copyright 2010Informazioni sul copyright Copyright 2010. Tutti i diritti riservati. Disclaimer Incorporated non è responsabile per errori tecnici o editoriali od omissioni

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

Database Modulo 3 DEFINIRE LE CHIAVI

Database Modulo 3 DEFINIRE LE CHIAVI Database Modulo 3 DEFINIRE LE CHIAVI Nell organizzazione di un archivio informatizzato è indispensabile poter definire univocamente le informazioni in esso inserite. Tale esigenza è abbastanza ovvia se

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

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

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

WE500 APPLICATION NOTES GESTIONE DELLE ACQUE

WE500 APPLICATION NOTES GESTIONE DELLE ACQUE WE500 APPLICATION NOTES GESTIONE DELLE ACQUE 1 INTRODUZIONE I sistemi di telecontrollo ed il monitoraggio diventano sempre più importanti nell'ampliamento delle reti di distribuzione idrica ed in particolar

Dettagli

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base) Sistema Operativo (Software di base) Il Sistema Operativo Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei dati attraverso

Dettagli

ROUTINE E PROGRAMMAZIONE

ROUTINE E PROGRAMMAZIONE LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 PAG. 1 / 6 LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 T-SQL PROGRAMMAZIONE PARTE SECONDA ROUTINE E PROGRAMMAZIONE In TSQL è possibile definire alcune routine

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

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps SOFTWARE PER LA GESTIONE DEI TELECONTROLLI SMS-GPS MANAGER Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps Rev.0911 Pag.1 di 8 www.carrideo.it INDICE 1. DESCRIZIONE

Dettagli

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. http://alessandrazullo.altervista.org Alessandra Zullo

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. http://alessandrazullo.altervista.org Alessandra Zullo 14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1 http://alessandrazullo.altervista.org Alessandra Zullo Indice Provvisorio INTRODUZIONE... 3 COMPONENTI PRINCIPALI... 3 PROCESSI...

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

STAMPANTE LASER SAMSUNG Guida dell utente. Samsung IPP1.1 Software

STAMPANTE LASER SAMSUNG Guida dell utente. Samsung IPP1.1 Software STAMPANTE LASER SAMSUNG Guida dell utente Samsung IPP1.1 Software SOMMARIO Introduzione... 1 Definizione di IPP?... 1 Definizione di Samsung IPP Software?... 1 Installazione... 2 Requisiti di sistema...

Dettagli

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Threading T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Caratteristiche principali dei thread Consentono di eseguire elaborazioni simultanee in un programma scritto in C#. Possono essere

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

Laboratorio di Programmazione Strutturata

Laboratorio di Programmazione Strutturata Laboratorio di Programmazione Strutturata Facoltà di Scienze e Tecnologie per i Media Anno 2008/2009 Dati Generali Docente del corso : Dott. Tulimiero Davide Materiale del corso : Corso completo di programmazione

Dettagli

4.1 UTILIZZO DELL APPLICAZIONE

4.1 UTILIZZO DELL APPLICAZIONE 4.1 UTILIZZO DELL APPLICAZIONE Il foglio elettronico (definito anche spreadsheet) è uno strumento formidabile. Possiamo considerarlo come una specie di enorme tabellone a griglia il cui utilizzo si estende

Dettagli

Fabio Zanasi. 12 maggio 2010

Fabio Zanasi. 12 maggio 2010 Figura: 1 / 26 12 maggio 2010 Cos è? è un sistema di controllo delle versioni (version control system). è un software open-source per ambienti Unix, Windows, OS-X. è lo strumento ideale per gestire il

Dettagli

Alcuni Design Pattern in Java

Alcuni Design Pattern in Java Marco Faella Alcuni Design Pattern in Java basato su Progettazione del Software e Design Pattern in Java, di Cay Horstmann Pattern ITERATOR Contesto: 1) Un oggetto (aggregato) contiene altri oggetti (elementi)

Dettagli

Motorola Phone Tools. Guida rapida

Motorola Phone Tools. Guida rapida Motorola Phone Tools Guida rapida Sommario Requisiti minimi...2 Operazioni preliminari all'installazione Motorola Phone Tools...3 Installazione Motorola Phone Tools...4 Installazione e configurazione del

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

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale.

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale. GUIDA RAPIDA versione 25 febbraio 2010 SERVIIZIIO TELEMATIICO DOGANALE Avvertenze: Questa guida vuole costituire un piccolo aiuto per gli operatori che hanno già presentato richiesta di adesione al servizio

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante Tiipii dii Datii iin Viisuall Basiic Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante l'esecuzione di un'applicazione. Alle variabili è associato un nome, utilizzato

Dettagli

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati. 2010 Ing. Punzenberger COPA-DATA Srl Tutti i diritti riservati. Tutti i diritti riservati la distribuzione e la copia - indifferentemente dal metodo - può essere consentita esclusivamente dalla dittacopa-data.

Dettagli

Strumenti per la programmazione

Strumenti per la programmazione Editing del programma Il programma deve essere memorizzato in uno o più files di testo editing codice sorgente 25 Traduzione del programma Compilazione: è la traduzione effettuata da un compilatore Un

Dettagli

BIMPublisher Manuale Tecnico

BIMPublisher Manuale Tecnico Manuale Tecnico Sommario 1 Cos è BIMPublisher...3 2 BIM Services Console...4 3 Installazione e prima configurazione...5 3.1 Configurazione...5 3.2 File di amministrazione...7 3.3 Database...7 3.4 Altre

Dettagli

Le Proprietà della Barra delle applicazioni e Menu Start di Giovanni DI CECCA - http://www.dicecca.net

Le Proprietà della Barra delle applicazioni e Menu Start di Giovanni DI CECCA - http://www.dicecca.net - Introduzione Con questo articolo chiudiamo la lunga cavalcata attraverso il desktop di Windows XP. Sul precedente numero ho analizzato il tasto destro del mouse sulla Barra delle Applicazioni, tralasciando

Dettagli

Java? Sì, grazie. Scopo del corso

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

Dettagli

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

Capitolo 1 Installazione del programma

Capitolo 1 Installazione del programma Capitolo 1 Installazione del programma Requisiti Hardware e Software Per effettuare l installazione del software Linea Qualità ISO, il computer deve presentare una configurazione minima così composta:

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

Dettagli

STELLA SUITE Manuale d'uso

STELLA SUITE Manuale d'uso STELLA SUITE Manuale d'uso Stella Suite Manuale d'uso v. 1.2014 INDICE Sezione Pagina 1. Introduzione a Stella Suite Componenti Requisiti sistema Panorama della schermata iniziale 2. Installazione di Stella

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