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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Il 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

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0)

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0) Indice generale PREMESSA... 2 ACCESSO... 2 GESTIONE DELLE UTENZE... 3 DATI DELLA SCUOLA... 6 UTENTI...7 LISTA UTENTI... 8 CREA NUOVO UTENTE...8 ABILITAZIONI UTENTE...9 ORARI D'ACCESSO... 11 DETTAGLIO UTENTE...

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

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

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

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

Dettagli

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 Con questo aggiornamento sono state implementate una serie di funzionalità concernenti il tema della dematerializzazione e della gestione informatica dei documenti,

Dettagli

Applicazione: Share - Sistema per la gestione strutturata di documenti

Applicazione: Share - Sistema per la gestione strutturata di documenti Riusabilità del software - Catalogo delle applicazioni: Gestione Documentale Applicazione: Share - Sistema per la gestione strutturata di documenti Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Introduzione alle pipeline e all'architettura RISC

Introduzione alle pipeline e all'architettura RISC Introduzione alle pipeline e all'architettura RISC Introduzione Pipeline Processori RISC Salti Appendice A: Storia Bibliografia Versione con i frame Versione in pdf Architettura del processore Una possibile

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Nuovo metodo per l'installazione delle stampanti su Windows

Nuovo metodo per l'installazione delle stampanti su Windows Nuovo metodo per l'installazione delle stampanti su Windows Questo documento illustra come installare una stampante in ambiente Windows con un nuovo metodo. Il vecchio metodo, principalmente consigliato

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Introduzione generale Autenticazione dell operatore https://sebina1.unife.it/sebinatest Al primo accesso ai servizi di Back Office, utilizzando

Dettagli

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento minilector/usb minilector/usb...1 Risoluzione dei problemi più comuni di malfunzionamento...1 1. La segnalazione luminosa (led) su minilector lampeggia?... 1 2. Inserendo una smartcard il led si accende

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

CA Process Automation

CA Process Automation CA Process Automation Glossario Release 04.2.00 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente (d'ora in avanti indicata come

Dettagli

Manuale installazione DiKe Util

Manuale installazione DiKe Util Manuale installazione DiKe Util Andare sul sito Internet: www.firma.infocert.it Cliccare su software nella sezione rossa INSTALLAZIONE: comparirà la seguente pagina 1 Selezionare, nel menu di sinistra,

Dettagli

SERVER VIDEO 1-PORTA H.264

SERVER VIDEO 1-PORTA H.264 SERVER VIDEO 1-PORTA H.264 MANUALE UTENTE DN-16100 SALVAGUARDIA IMPORTANTE Tutti i prodotti senza piombo offerti dall'azienda sono a norma con i requisiti della legge Europea sulla restrizione per l'uso

Dettagli

Posta Elettronica Certificata

Posta Elettronica Certificata Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail di Telecom Italia Trust Technologies Documento ad uso pubblico Pag. 1 di 33 Indice degli argomenti 1 INTRODUZIONE... 3 1.1 Obiettivi...

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

I vostri documenti sempre disponibili e sincronizzati.

I vostri documenti sempre disponibili e sincronizzati. gestione documentale I vostri documenti sempre disponibili e sincronizzati. In qualsiasi momento e da qualsiasi parte del mondo accedendo al portale Arxidoc avete la possibilità di ricercare, condividere

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo stituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di nformatica Anno Scolastico 2008/2009 Classe 3APS Dal Problema all'algoritmo Pr.: 001 Ver.:1.0 Autore: prof. Michele Salvemini

Dettagli

SCUOLANET UTENTE DOCENTE

SCUOLANET UTENTE DOCENTE 1 ACCESSO A SCUOLANET Si accede al servizio Scuolanet della scuola mediante l'indirizzo www.xxx.scuolanet.info (dove a xxx corrisponde al codice meccanografico della scuola). ISTRUZIONI PER IL PRIMO ACCESSO

Dettagli

MANUALE Gest-L VERSIONE 3.2.3

MANUALE Gest-L VERSIONE 3.2.3 MANUALE Gest-L VERSIONE 3.2.3 Installazione GEST-L 4 Versione per Mac - Download da www.system-i.it 4 Versione per Mac - Download da Mac App Store 4 Versione per Windows 4 Prima apertura del programma

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

La Valutazione Euristica

La Valutazione Euristica 1/38 E un metodo ispettivo di tipo discount effettuato da esperti di usabilità. Consiste nel valutare se una serie di principi di buona progettazione sono stati applicati correttamente. Si basa sull uso

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

Data warehouse.stat Guida utente

Data warehouse.stat Guida utente Data warehouse.stat Guida utente Versione 3.0 Giugno 2013 1 Sommario INTRODUZIONE 3 I concetti principali 4 Organizzazione dei dati 4 Ricerca 5 Il browser 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Gestore Comunicazioni Obbligatorie. Progetto SINTESI. Comunicazioni Obbligatorie. Modulo Applicativo COB. - Versione Giugno 2013 -

Gestore Comunicazioni Obbligatorie. Progetto SINTESI. Comunicazioni Obbligatorie. Modulo Applicativo COB. - Versione Giugno 2013 - Progetto SINTESI Comunicazioni Obbligatorie Modulo Applicativo COB - Versione Giugno 2013-1 Versione Giugno 2013 INDICE 1 Introduzione 3 1.1 Generalità 3 1.2 Descrizione e struttura del manuale 3 1.3 Requisiti

Dettagli

Elementi di UML (7): Diagrammi dei componenti e di deployment

Elementi di UML (7): Diagrammi dei componenti e di deployment Elementi di UML (7): Diagrammi dei componenti e di deployment Università degli Studi di Bologna Facoltà di Scienze MM. FF. NN. Corso di Laurea in Scienze di Internet Anno Accademico 2004-2005 Laboratorio

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Gestione posta elettronica (versione 1.1)

Gestione posta elettronica (versione 1.1) Gestione posta elettronica (versione 1.1) Premessa La presente guida illustra le fasi da seguire per una corretta gestione della posta elettronica ai fini della protocollazione in entrata delle mail (o

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i!

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i! Manuale Utente S e m p l i c e m e n t e D a t i M i g l i o r i! INDICE INDICE... 3 INTRODUZIONE... 3 Riguardo questo manuale...3 Informazioni su VOLT 3 Destinatari 3 Software Richiesto 3 Novità su Volt...3

Dettagli

Introduzione a Puppy Linux: installazione su una chiavetta USB

Introduzione a Puppy Linux: installazione su una chiavetta USB Introduzione a Puppy Linux: installazione su una chiavetta USB Alex Gotev 1 Contenuti Che cos'è Puppy Linux? Come posso averlo? Come si avvia? Che programmi include? Installazione su Chiavetta USB Domande

Dettagli

INFORMATIVA FINANZIARIA

INFORMATIVA FINANZIARIA Capitolo 10 INFORMATIVA FINANZIARIA In questa sezione sono riportate le quotazioni e le informazioni relative ai titoli inseriti nella SELEZIONE PERSONALE attiva.tramite la funzione RICERCA TITOLI è possibile

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

PROVINCIA AUTONOMA DI TRENTO

PROVINCIA AUTONOMA DI TRENTO PROVINCIA AUTONOMA DI TRENTO Microsoft Windows 30/10/2014 Questo manuale fornisce le istruzioni per l'utilizzo della Carta Provinciale dei Servizi e del lettore di smart card Smarty sui sistemi operativi

Dettagli

MANUALE D USO G.ALI.LE.O GALILEO. Manuale d uso. Versione 1.1.0. [OFR] - Progetto GALILEO - Manuale d uso

MANUALE D USO G.ALI.LE.O GALILEO. Manuale d uso. Versione 1.1.0. [OFR] - Progetto GALILEO - Manuale d uso [OFR] - - G.ALI.LE.O Versione 1.1.0 MANUALE D USO pag. 1 di 85 [OFR] - - pag. 2 di 85 [OFR] - - Sommario 1 - Introduzione... 6 2 - Gestione ALbI digitale Ordini (G.ALI.LE.O.)... 7 2.1 - Schema di principio...

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory.

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory. @ PC (Personal computer): Questa sigla identificò il primo personal IBM del 1981 a cura di R.Mangini Archiviazione: Il sistema operativo si occupa di archiviare i file. Background (sfondo): Cursore: Nei

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Funzioni di base. Manualino OE6. Outlook Express 6

Funzioni di base. Manualino OE6. Outlook Express 6 Manualino OE6 Microsoft Outlook Express 6 Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito,

Dettagli

Documentazione Servizio SMS WEB. Versione 1.0

Documentazione Servizio SMS WEB. Versione 1.0 Documentazione Servizio SMS WEB Versione 1.0 1 Contenuti 1 INTRODUZIONE...5 1.1 MULTILANGUAGE...5 2 MESSAGGI...7 2.1 MESSAGGI...7 2.1.1 INVIO SINGOLO SMS...7 2.1.2 INVIO MULTIPLO SMS...9 2.1.3 INVIO MMS

Dettagli

Manuale istruzioni. 01942 Comunicatore GSM-BUS

Manuale istruzioni. 01942 Comunicatore GSM-BUS Manuale istruzioni 01942 Comunicatore GSM-BUS Indice 1. Descrizione 2 2. Campo di applicazione 2 3. Contenuto della confezione 2 4. Vista frontale 3 5. Funzione dei tasti e led 4 6. Operazioni preliminari

Dettagli

Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili

Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili Guida all'installazione di WiFi Booster WN1000RP per dispositivi mobili 2012 NETGEAR, Inc. Tutti i diritti riservati. Nessuna parte della presente pubblicazione può essere riprodotta, trasmessa, trascritta,

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

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

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

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Guida all'installazione di SLPct Manuale utente Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Premessa Il redattore di atti giuridici esterno SLpct è stato implementato da Regione

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

Manuale d'istruzioni. Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280

Manuale d'istruzioni. Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280 Manuale d'istruzioni Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280 382280 Introduzione Congratulazioni per aver acquistato l'alimentatore DC Programmabile 382280 della Extech.

Dettagli

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e non contiene il certificato di autenticazione: è necessario

Dettagli

Software 2. Classificazione del software. Software di sistema

Software 2. Classificazione del software. Software di sistema Software 2 Insieme di istruzioni e programmi che consentono il funzionamento del computer Il software indica all hardware quali sono le operazioni da eseguire per svolgere determinati compiti Valore spesso

Dettagli

Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option

Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Il software descritto nel presente

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:...

INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:... INFORMAZIONI GENERALI...2 INSTALLAZIONE...5 CONFIGURAZIONE...6 ACQUISTO E REGISTRAZIONE...11 DOMANDE FREQUENTI:...13 CONTATTI:...14 Ultimo Aggiornamento del Documento: 23 / Marzo / 2012 1 INFORMAZIONI

Dettagli

Guida funzioni di importa /esporta pratiche e anagrafiche; importa dati R.I.

Guida funzioni di importa /esporta pratiche e anagrafiche; importa dati R.I. Guida funzioni di importa /esporta pratiche e anagrafiche; importa dati R.I. 1. PREMESSA sulle MODALITA' di UTILIZZO Fedra Plus 6 può essere utilizzato in: in modalità interattiva; da interfaccia (GUI),

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test Prefazione, Contenuto Parte 1: Sviluppo di programmi Parte 2: Uso e test SIMATIC Parte 3: Descrizione del linguaggio Programmazione di blocchi Appendici Glossario, Indice analitico Manuale Numero di ordinazione

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa di Ilaria Lorenzo e Alessandra Palma Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa Code::Blocks

Dettagli

[Operazioni Preliminari]

[Operazioni Preliminari] [Operazioni Preliminari] Si consiglia di leggere interamente questo manuale prima di procedere alle operazioni di aggiornamento del KeyB Organ. 1] Per aggiornare firmware, suoni e parametri del KeyB Organ

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

Mini manuale di Audacity.

Mini manuale di Audacity. Mini manuale di Audacity. Questo mini manuale è parte del corso on-line Usare il software libero di Altrascuola. Il corso è erogato all'interno del portale per l'e-learning Altrascuola con la piattaforma

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette.

Dettagli

Installazione LINUX 10.0

Installazione LINUX 10.0 Installazione LINUX 10.0 1 Principali passi Prima di iniziare con l'installazione è necessario entrare nel menu di configurazione del PC (F2 durante lo start-up) e selezionare nel menu di set-up il boot

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Arcserve Replication and High Availability

Arcserve Replication and High Availability Arcserve Replication and High Availability Guida operativa per Oracle Server per Windows r16.5 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli