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

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

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

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

Software Requirements Specification

Software Requirements Specification SJS Sicilian Java Solutions Software Requirements Specification Data di inizio redazione: 16/11/2008 Data di fine redazione: 19/11/2008 Versione: 1.0 Redattore: Pennisi Carmelo Approvatori: Di Giorgio

Dettagli

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

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

Dettagli

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

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

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

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

ARF CHAMPIONS LEAGUE

ARF CHAMPIONS LEAGUE 1 ARF CHAMPIONS LEAGUE Contenuti: Introduzione Modalità d'uso Tipo di operazione Avvertenze d'uso Cosa vuoi fare? Menù: descrizione del menù Modalità campionato: funzioni aggiuntive Finestra dell'operazione

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

Corso di Visual Basic (Parte I)

Corso di Visual Basic (Parte I) Corso di Visual Basic (Parte I) Come muovere i primi passi con Microsoft Visual Basic, lo strumento da molti considerato ideale per la realizzazione di applicazioni di piccola e media entità in ambiente

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

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi a.a. 2010/2011 Francesco Fontanella Il Sistema Operativo Sistema Operativo 2 Il Sistema Operativo Il Sistema Operativo è uno strato

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

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Giampiero Allamprese 0000260193 PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Reti di Calcolatori LS prof. Antonio Corradi A.A. 2007/2008 ABSTRACT L obiettivo di questo progetto è la realizzazione

Dettagli

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da: Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare

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

Supporto On Line Allegato FAQ

Supporto On Line Allegato FAQ Supporto On Line Allegato FAQ FAQ n.ro MAN-8JZGL450591 Data ultima modifica 22/07/2011 Prodotto Tuttotel Modulo Tuttotel Oggetto: Installazione e altre note tecniche L'utilizzo della procedura è subordinato

Dettagli

COMPATIBILE WINDOWS VISTA

COMPATIBILE WINDOWS VISTA MANUALE D USO CORIS ZERO7 e compatibili COMPATIBILE WINDOWS VISTA / 7 / 8 Versione 1.1.0.5 Manuale RTS WPOS1 INDICE MANUALE D USO...1 CORIS...1 ZERO7 e compatibili...1 INDICE... 2 LEGENDA... 2 PREMESSA...

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

Progetto per un Sistema di Video/Audio Sorveglianza Remota RemoteGuard

Progetto per un Sistema di Video/Audio Sorveglianza Remota RemoteGuard La Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Anno Accedemico 2008-2009 Corso di Progetto di Reti di Calcolatori e Sistemi Informatici Prof. Stefano Millozzi

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

Classi astratte. Master in Web Technology e Security luglio - settembre 2000. Interfacce

Classi astratte. Master in Web Technology e Security luglio - settembre 2000. Interfacce Master in Web Technology e Security luglio - settembre 2000 JAVA Alberto Martelli Parte III Programmazione grafica Classi astratte Vogliamo implementare un algoritmo di ordinamento di un array che sia

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

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) SISTEMI OPERATIVI (MODULO DI INFORMATICA II) Realizzazione del file system Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Realizzazione

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

www.informarsi.net MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http://www.informarsi.net/ecdl/powerpoint/

www.informarsi.net MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http://www.informarsi.net/ecdl/powerpoint/ MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http:///ecdl/powerpoint/ INTERFACCIA UTENTE TIPICA DI UN SOFTWARE DI PRESENTAZIONE APERTURA E SALVATAGGIO DI UNA PRESENTAZIONE

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

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

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

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

Il sistema di I/O. Calcolatori Elettronici 1. Architettura a bus singolo. Memoria. Unità di I/O. Interfaccia. Unità di I/O.

Il sistema di I/O. Calcolatori Elettronici 1. Architettura a bus singolo. Memoria. Unità di I/O. Interfaccia. Unità di I/O. Il sistema di I/O Calcolatori Elettronici 1 Architettura a bus singolo Memoria CPU Interfaccia Unità di I/O Interfaccia Unità di I/O Calcolatori Elettronici 2 1 Interfaccia Svolge la funzione di adattamento

Dettagli

hiclot Manuale utente del software

hiclot Manuale utente del software hiclot Manuale utente del software versione del 29/3/2010 Il software hiclot interfaccia un computer ad una unità hiclot al fine di potere: Seguire in tempo reale la formazione del coagulo Acquisire i

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

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

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli 4 Un primo programma Java Introduzione alla programmazione in Java class Program1 { System.out.println("Benvenuti al corso"); 1 5 Programmi e mondo reale Programmare ad oggetti Il codice di un programma

Dettagli

PROVA DI CONOSCENZA CORSO DI ALFABETIZZAZIONE INFORMATICA 21 dicembre 2001 tema A

PROVA DI CONOSCENZA CORSO DI ALFABETIZZAZIONE INFORMATICA 21 dicembre 2001 tema A PROVA DI CONOSCENZA CORSO DI ALFABETIZZAZIONE INFORMATICA 21 dicembre 2001 tema A 1) Le funzioni dell'unità di controllo di un processore sono: A) Verificare che le periferiche funzionino correttamente.

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

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

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento:

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento: Introduzione a Word Word è una potente applicazione di elaborazione testi e layout, ma per utilizzarla nel modo più efficace è necessario comprenderne gli elementi di base. Questa esercitazione illustra

Dettagli

GUIDA UTENTE INTERNET CAFE MANAGER (Vers. 5.2.0)

GUIDA UTENTE INTERNET CAFE MANAGER (Vers. 5.2.0) GUIDA UTENTE INTERNET CAFE MANAGER (Vers. 5.2.0) GUIDA UTENTE INTERNET CAFE MANAGER (Vers. 5.2.0)...1 Installazione e configurazione...2 Installazione ICM Server...3 Primo avvio e configurazione di ICM

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

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

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

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

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

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

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

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

CORSO WEB SERVER, DBMS E SERVER FTP

CORSO WEB SERVER, DBMS E SERVER FTP CORSO WEB SERVER, DBMS E SERVER FTP DISPENSA LEZIONE 1 Autore D. Mondello Transazione di dati in una richiesta di sito web Quando viene effettuata la richiesta di un sito Internet su un browser, tramite

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

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

Sistemi operativi I: Windows. Lezione I

Sistemi operativi I: Windows. Lezione I Sistemi operativi I: Windows Lezione I Scopo della lezione Richiamare le principali funzionalità di un sistema operativo Esemplificarle descrivendo la loro implementazione in Windows Introdurre alcuni

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

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti Alessio Bechini - Corso di - Il paradigma OO e le relative metodologie di progettazione Metodologie OO Programmazione orientata agli oggetti La programmazione ad oggetti (OOP) è un paradigma di programmazione

Dettagli

Introduzione alla programmazione in Java

Introduzione alla programmazione in Java Introduzione alla programmazione in Java 1 Programmare ad oggetti La programmazione come attività di creazione di modelli. I concetti di classe, oggetto e scambio di messaggi. Un primo esempio di programma

Dettagli

Class File bytecode. Class loader. Verifier JIT. Run-time System

Class File bytecode. Class loader. Verifier JIT. Run-time System Un file.class è ottenuto compilando il codice sorgente Java. Esso contiene il bytecode, ovvero la sequenza di istruzioni per la JVM, ed anche molte informazioni simboliche. Il bytecode è il linguaggio

Dettagli

Benvenuti alla Guida introduttiva - Utilità

Benvenuti alla Guida introduttiva - Utilità Benvenuti alla Guida introduttiva - Utilità Sommario Benvenuti alla Guida introduttiva - Utilità... 1 Performance Toolkit... 3 Guida introduttiva al Kit prestazioni... 3 Installazione... 3 Guida introduttiva...

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare Facoltà di Lingue e Letterature Straniere Software È un insieme di programmi che permettono di trasformare un insieme di circuiti elettronici (=

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

Se un oggetto A aggrega oggetti B allora avrà informazioni su di loro

Se un oggetto A aggrega oggetti B allora avrà informazioni su di loro Concetto di responsabilità nella progettazione guidata dalle responsabilità (RRD) si pensa in termini di responsabilità del software. Le responsabilità vengono assegnate agli oggetti durante la progettazione.

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

Manuale d uso del. Portale Argo. release 3.0.0

Manuale d uso del. Portale Argo. release 3.0.0 Manuale d uso del Portale Argo release 3.0.0 vers. 24/09/2015 PORTALE ARGO Sommario Sommario... 2 Premessa... 3 Accesso... 3 Applicazioni e Servizi... 4 Centro Notifiche... 4 Gestione Utenze... 4 Profilo

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

Corso di Visual Basic (Parte 9)

Corso di Visual Basic (Parte 9) Corso di Visual Basic (Parte 9) di Maurizio Crespi La nona lezione del corso dedicato alla programmazione in Visual Basic si pone lo scopo di illustrare le funzioni definibili dall'utente e il concetto

Dettagli

GNU/Linux Intermedio. Seconda lezione: FONDAMENTI DEI SISTEMI OPERATIVI

GNU/Linux Intermedio. Seconda lezione: FONDAMENTI DEI SISTEMI OPERATIVI GNU/Linux Intermedio Seconda lezione: FONDAMENTI DEI SISTEMI OPERATIVI Duro e soffice Ogni calcolatore è fatto da componenti il cui unico scopo è quello di eseguire istruzioni Senza istruzioni il calcolatore

Dettagli

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

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

Dettagli

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen Prerequisiti Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen L opzione Touch è disponibile per le versioni Vendite, Azienda Light e Azienda Pro; per sfruttarne al meglio

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

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

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

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

10.7 La classe BitSet... 555 Esercizi di autovalutazione... 558 Risposte agli esercizi di autovalutazione... 559 Esercizi 559

10.7 La classe BitSet... 555 Esercizi di autovalutazione... 558 Risposte agli esercizi di autovalutazione... 559 Esercizi 559 Sommario PREFAZIONE... XI Il nostro approccio didattico... xi Una panoramica del libro... xiv Ringraziamenti... xvii Gli autori... xix Deitel & Associates, Inc.... xx CAPITOLO 1 LA GRAFICA E JAVA2D...

Dettagli

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

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

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

DESIGN PATTERNS Parte 2. Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection

DESIGN PATTERNS Parte 2. Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection DESIGN PATTERNS Parte 2 Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection POLIMORFISMO Il polimorfismo è la base della programmazione

Dettagli

Uso di trigger di script in FileMaker Pro

Uso di trigger di script in FileMaker Pro Uso di trigger di script in FileMaker Pro Sommario Info su questo bollettino tecnico... 4 Che cos'è un trigger di script?... 4 Quali trigger di script sono supportati da FileMaker Pro?... 5 Panoramica

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

JPD132. Microprocessore e assembly

JPD132. Microprocessore e assembly JPD132 Microprocessore e assembly Il processore JPD132 Il JPD132 è un ipotetico processore che estende le possibilità del PD32 principalmente con un linguaggio assembly comprendente nuovi metodi di indirizzamento,

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

Per questo motivo le distribuzioni Live richiedono la presenza di un maggior quantitativo di RAM rispetto ad una installazione tradizionale.

Per questo motivo le distribuzioni Live richiedono la presenza di un maggior quantitativo di RAM rispetto ad una installazione tradizionale. LiveCD LiveCD è un termine generico utilizzato per indicare una distribuzione di un sistema operativo in grado di essere avviato ed eseguito senza richiedere una preventiva installazione su hard disk.

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA T-2 del 16/7/2014 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX

ESAME DI FONDAMENTI DI INFORMATICA T-2 del 16/7/2014 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX ESAME DI FONDAMENTI DI INFORMATICA T-2 del 16/7/2014 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX NB: il candidato troverà nell archivio ZIP scaricato da Esamix anche il software Start Kit

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

Il Personal Computer. Il Software. Il Software. Il Software. Il Software. Hardware

Il Personal Computer. Il Software. Il Software. Il Software. Il Software. Hardware Università degli Studi della Calabria Anno Accademico 2003-2004 2004 Il Personal Computer Hardware Ing. Irina Trubitsyna Ing. Ester Zumpano Lezione 2 Software Sistemi operativi Software feb. 04 Fondamenti

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

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 TeamViewer Manager 6.0

Manuale TeamViewer Manager 6.0 Manuale TeamViewer Manager 6.0 Revisione TeamViewer 6.0-954 Indice 1 Panoramica... 2 1.1 Informazioni su TeamViewer Manager... 2 1.2 Informazioni sul presente Manuale... 2 2 Installazione e avvio iniziale...

Dettagli

CA Identity Manager. Guida alla progettazione della console utente 12.6.5

CA Identity Manager. Guida alla progettazione della console utente 12.6.5 CA Identity Manager Guida alla progettazione della console utente 12.6.5 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente (d'ora

Dettagli

Retrospect 10 per Mac Appendice alla Guida per l'utente

Retrospect 10 per Mac Appendice alla Guida per l'utente Retrospect 10 per Mac Appendice alla Guida per l'utente 2 Appendice alla Guida per l'utente di Retrospect 10 www.retrospect.com 2012 Retrospect Inc. Tutti i diritti riservati. Guida per l'utente di Retrospect

Dettagli

APPENDICE. Appendice. Strumenti per lo sviluppo dei programmi Java

APPENDICE. Appendice. Strumenti per lo sviluppo dei programmi Java APPENDICE Appendice Strumenti per lo sviluppo dei programmi Java Per imparare a programmare non è sufficiente leggere gli esempi del testo, ma è necessario scrivere ed eseguire realmente i programmi. Tutti

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.1009 Pag.1 di 10 www.carrideo.it INDICE 1. DESCRIZIONE

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

DESIGN PATTERNS Parte 5. Facade Strategy Composite Interpreter

DESIGN PATTERNS Parte 5. Facade Strategy Composite Interpreter DESIGN PATTERNS Parte 5 Facade Strategy Composite Interpreter FACADE Per proteggere la nostra applicazione sfruttando il Protect Variation possiamo usare il pattern Facade. Questo pattern è ottimo per

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

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

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