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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm Struttura interna del sistema Operativo Linux CAP. 4: Aspetti generali del Sistema Operativo Linux CAP. 5: Funzionalità del calcolatore l http://home.dei.polimi.it/silvano/acso.htm Funzionalità del Sistema

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

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

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

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

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

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

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

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

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

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

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

Ingegneria del Software UML - Unified Modeling Language

Ingegneria del Software UML - Unified Modeling Language Ingegneria del Software UML - Unified Modeling Language Obiettivi. Presentare un approccio visuale alla progettazione. Illustrare i vantaggi dell utilizzo di diagrammi nella fase di progettazione. Rispondere

Dettagli

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

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

Dettagli

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

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

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

boot loader partizioni boot sector

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

Dettagli

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II PROF. G. BONGIOVANNI 0) INTRODUZIONE AL LINGUAGGIO JAVA PER PROGRAMMATORI C++...2 0.1) Caratteristiche principali... 2 0.1.1)

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

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

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 Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica anno accademico 2008-09 Relazione finale su progetto interno Realizzazione di un applicazione per la visualizzazione

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

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

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

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

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

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

EUROPLUS - SOFT Art.: 4096

EUROPLUS - SOFT Art.: 4096 LINCE ITALIA S.p.A. REG.N.4796 UNI EN ISO 9001:2008 EUROPLUS - SOFT Art.: 4096 MANUALE DI INSTALLAZIONE, PROGRAMMAZIONE ED USO MADE IN ITALY SOMMARIO 1 Informazioni generali... 3 1.1 Requisiti di sistema...

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

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

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

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

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

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

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

Anno 2011/2012 Syllabus 5.0

Anno 2011/2012 Syllabus 5.0 Patente Europea di Informatica ECDL Modulo 2 Lezione 1: Introduzione Primi passi col computer Guida in linea Il file system Anno 2011/2012 Syllabus 5.0 Il Sistema Operativo (S.O. o, dall'inglese, O.S.)

Dettagli

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA

ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA ANNO SCOLASTICO 2012-2013 QUADERNO DI INFORMATICA L INFORMAZIONE L informazione è un concetto (legato, ma indipendente dal codice usato). Non riguarda solo interazioni umane. L informazione analizza il

Dettagli

DESIGN PATTERNS Parte 4. Product Trader Service Manager Type Object Manager Adapter

DESIGN PATTERNS Parte 4. Product Trader Service Manager Type Object Manager Adapter DESIGN PATTERNS Parte 4 Product Trader Service Manager Type Object Manager Adapter PRODUCT TRADER Il Product Trader è un design pattern per la gestione delle estensioni in modo componibile, ovvero a plug-in.

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

LIBPF Guida per l'attivazione

LIBPF Guida per l'attivazione This document is part of LIBPF Paolo Greppi libpf.com Copyright 2009-2013 Credits: Daniele Bernocco 2012 All rights reserved; do not distribute without permission. LIBPF Guida per l'attivazione 1 di 20

Dettagli

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2014/2015

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2014/2015 ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2014/2015 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI

Dettagli

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Le basi della grafica in Java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Elaborazione classica o imperativa L elaborazione è concentrata nel momento centrale, durante

Dettagli

INFORMATICA E COMPUTER : INTRODUZIONE

INFORMATICA E COMPUTER : INTRODUZIONE INFORMATICA E COMPUTER : INTRODUZIONE! Informatica: dal francese, informatique informat(ion) (automat)ique [termine coniato dall'ingegnere francese Philippe Dreyfus nel 1962] è la scienza che studia i

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

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

Symantec Enterprise Vault

Symantec Enterprise Vault Symantec Enterprise Vault Guida per gli utenti di Microsoft Outlook 2003/2007 9.0 Symantec Enterprise Vault: Guida per gli utenti di Microsoft Outlook 2003/2007 Il software descritto nel presente documento

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Software della stampante

Software della stampante Software della stampante Informazioni sul software della stampante Il software Epson comprende il software del driver per stampanti ed EPSON Status Monitor 3. Il driver per stampanti è un software che

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

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

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

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

TeamViewer 9 Manuale Manager

TeamViewer 9 Manuale Manager TeamViewer 9 Manuale Manager Rev 9.1-03/2014 TeamViewer GmbH Jahnstraße 30 D-73037 Göppingen teamviewer.com Panoramica Indice Indice... 2 1 Panoramica... 4 1.1 Informazioni su TeamViewer Manager... 4 1.2

Dettagli

USO DEL COMPUTER e GESTIONE DEI FILE

USO DEL COMPUTER e GESTIONE DEI FILE USO DEL COMPUTER e GESTIONE DEI FILE Inizio di una sessione di lavoro Il Desktop Le proprietà delle finestre I file e le cartelle Inizio di una sessione di lavoro Avvio e spegnimento del computer Avvio

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

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Capitolo 1 Introduzione a Gambas

Capitolo 1 Introduzione a Gambas Capitolo 1 Introduzione a Gambas Gambas è stato creato inizialmente da Benoit Minisini, un residente della periferia di Parigi. Secondo Benoit, Gambas è un linguaggio Basic con estensioni per la programmazione

Dettagli

pgdesigner Database Designer for PostgreSQL Manuale Utente rev. 26/11/2007 rif. vers. 1.1.0 Pag. 1 di 122

pgdesigner Database Designer for PostgreSQL Manuale Utente rev. 26/11/2007 rif. vers. 1.1.0 Pag. 1 di 122 pgdesigner Database Designer for PostgreSQL Manuale Utente rif. vers. 1.1. Pag. 1 di 122 Indice Prefazione...4 Introduzione...6 L'applicazione...8 La Finestra Principale...9 I Menu...12 Il Menu Principale...12

Dettagli

Applicazione: xmleges-editor - Ambiente per redazione conversione XML documenti normativi

Applicazione: xmleges-editor - Ambiente per redazione conversione XML documenti normativi Riusabilità del software - Catalogo delle applicazioni Gestione Documentale Applicazione: xmleges-editor - Ambiente per redazione conversione XML documenti normativi Amministrazione: Consiglio Nazionale

Dettagli

Autovalutazione dello status del Sito e Obiettivi di accessibilità per l anno 2015

Autovalutazione dello status del Sito e Obiettivi di accessibilità per l anno 2015 Autovalutazione dello status del Sito e Obiettivi di accessibilità per l anno 2015 in relazione alle Linee guida per l accessibilità dei siti Web WCAG 2.0 Principio 1: Percepibile - Le informazioni e i

Dettagli

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

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

Dettagli

MRC: Nuova Architettura

MRC: Nuova Architettura MRC: Nuova Architettura Release: 1.0 16 febbraio 2014 Autore: Andrea Gualducci MRC: Nuova Architettura Pag. 1 di 12 SOMMARIO MRC: Nuova Architettura... 1 Introduzione...3 Efficienza...3 Deployement...3

Dettagli

Manuale di installazione per i dispositivi fax

Manuale di installazione per i dispositivi fax GFI FAXmaker 14 per Exchange/Lotus/SMTP Manuale di installazione per i dispositivi fax GFI Software Ltd http://www.gfi.com Posta elettronica: info@gfi.com Le informazioni contenute nel presente documento

Dettagli

Parte V. Sistemi Operativi & Reti. Sistemi Operativi. Sistemi Operativi

Parte V. Sistemi Operativi & Reti. Sistemi Operativi. Sistemi Operativi Parte V & Reti Sistema operativo: insieme di programmi che gestiscono l hardware Hardware: CPU Memoria RAM Memoria di massa (Hard Disk) Dispositivi di I/O Il sistema operativo rende disponibile anche il

Dettagli