Universita' degli Studi di Roma - La Sapienza. Corso di laurea in Fisica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Universita' degli Studi di Roma - La Sapienza. Corso di laurea in Fisica"

Transcript

1 Universita' degli Studi di Roma - La Sapienza Corso di laurea in Fisica DISPENSE DEL CORSO DI CALCOLATORI ELETTRONICI (Modulo B) ======================================================== Tenuto dal Prof. Roberto Biancastelli N.B. Per ridurre le dimensioni del file tutta la grafica e' stata realizzata in modalita? testo, usando i caratteri grafici che devono essere disponibili nel programma di visualizzazione. Si puo' usare il programma NotePad, con caratteri Terminal. Anno Accademico Copyright ! PREFAZIONE Il corso e quindi anche le dispense sono suddivisi in tre 'moduli' A, B e C, organizzati come indicato nel programma. I primi due sono per la laurea quadriennale, mentre il modulo C (capitoli 6-14) e' per la laurea triennale (richiede la propedeuticita' dei corsi di Laboratorio di Calcolo e di Comunicazione Scientifica e Tecnologica). La relativa didattica e' stata organizzata in una serie di dispense in vista di un'informatizzazione completa del corso, con tecnologie multimediali e telematiche. Queste dispense, con tutti i programmi delle esercitazioni pratiche, sono distribuite gratuitamente su floppy disk in copia unica e per uso personale esclusivo, ai soli studenti regolarmente iscritti al corso del prof.roberto Biancastelli. Contenendo dei caratteri grafici, le dispense sono visualizzabili e stampabili con i programmi editor standard (in MS-DOS con EDIT o in Windows con NotePad, caratteri 'Terminal' e Formato senza "A capo automatico"). Se la dimensione di un file risultasse 'troppo estesa', occorre modificare le impostazioni di memoria della finestra DOS, cliccando prima con il pulsante destro sull'icona DOS o sulla barra del titolo della finestra DOS e poi con il pulsante sinistro su Proprieta' ed impostando quindi tutte le opzioni in 'Automatico').

2 I files scritti in formato Word invece possono essere letti dagli studenti, che non possiedono il programma MS-Word, scaricando gratuitamente dal sito della Microsoft ( --> Office --> Word Downloads ) il programma WordViewer97/2000 (wd97vwr32.exe). E' opportuno precisare che, essendo il resto del corso di laurea in fisica piuttosto povero di insegnamenti informatici, il compito che attende lo studente del corso di Calcolatori Elettronici e' piuttosto impegnativo. Cio' perche' questa materia, a differenza di altre, e' soggetta ad un continuo e rapido progresso tecnologico, che ha ampliato sempre di piu' negli ultimi anni il campo di insegnamento. Poiche' molti studenti arrivano a questo corso con una conoscenza iniziale della materia praticamente nulla, il docente deve risolvere due problemi di non poco conto: insegnare sempre di piu' nello stesso numero di lezioni e gestire didatticamente la crescente complessita' delle nuove tecnologie informatiche. La soluzione finora adottata e' stata quella di inserire gradualmente nel programma una parte su tecnologie avanzate e programmazione ad oggetti ed in rete. Gli studenti che, non avendo avuto una conoscenza iniziale della materia, si trovassero in difficolta' nella preparazione all'esame su quest'ultima parte non dovranno preoccuparsi, perche' nell'esame finale non verra' loro richiesta in modo fiscale una conoscenza approfondita di questi argomenti. Si tenga inoltre presente che in questo corso l'apprendimento non deve essere finalizzato al voto, ma all'acquisizione di una professionalita'in questa materia, che sia spendibile poi nel mondo del lavoro e della ricerca). Tuttavia gli studenti arrivati a questo corso senza precedenti conoscenze propedeutiche all'informatica di base (algebra di Boole, elettronica digitale, ecc.) sono invitati a studiare dall'inizio tutti gli argomenti esposti nel programma e spiegati nelle lezioni, tralasciando eventualmente gli ultimi argomenti riguardanti la programmazione in rete, applet java, ecc. Invece gli studenti arrivati a questo corso, con le conoscenze di base ed una certa esperienza di programmazione in un qualche linguaggio di alto livello precedentemente acquisita, potranno rinfrescare velocemente le loro conoscenze di base, esposte nella prima parte del programma e nelle lezioni, dedicando poi un tempo maggiore sulle ultime parti del programma riguardanti la programmazione ad oggetti, in rete, Internet, ecc. La modalita' di svolgimento delle esercitazioni e' stata organizzata in modo da permettere anche il lavoro parallelo di gruppi di studenti, che trattano argomenti diversificati in funzione della loro preparazione e degli obiettivi proposti (nell'ambito degli argomenti trattati nel corso). Ove possibile, con le cautele sotto indicate per impedire la diffusione di virus informatici, la prosecuzione del lavoro pratico sul computer di casa e' vivamente incoraggiata.! INDICE INDICE GENERALE PROGRAMMA DEL CORSO DI CALCOLATORI ELETTRONICI PROGRAMMA LOGICO DEL CORSO INTRODUZIONE Capitolo 1 - Elementi del linguaggio Pascal Capitolo 2 - Sistemi di numerazione e rappresentazione delle informazioni

3 Capitolo 3 - Strutture di dati Capitolo 4 - Introduzione all'algebre di Boole Capitolo 5 - Circuiti logici digitali Modulo C Capitolo 6 - Architettura di un calcolatore elettronico < Capitolo 7 - Sottoprogrammi e passaggio dei parametri Capitolo 8 - Programmazione Assembly Fine Modulo A Capitolo 9 - Sistema di Input/Output < > Inizio Modulo B Capitolo 10 - Programmazione concorrente Capitolo 11 - Sistema di memoria Capitolo 12 - Sistemi operativi Capitolo 13 - Sistemi in rete Capitolo 14 - Programmazione ad oggetti e linguaggio Java < Capitolo 15 - Programmazione sul Web: Apache, HTML, CGI, Java apple Capitolo 16 - Architetture avanzate Capitolo 17 - Acquisizione di dati sperimentali APPENDICE A - Sigle e definizioni utili APPENDICE B - Il simulatore H6809 APPENDICE C - Programma delle esercitazioni! Programma del Corso di CALCOLATORI ELETTRONICI Prof.R.Biancastelli - Dipartimento di Fisica Universita' di Roma - La Sapienza MODULO A RAPPRESENTAZIONE DELLE INFORMAZIONI (D,W): Sistemi numerici - Rappresentazioni posizionali - Conversioni di base - Rappresentazioni dei negativi Aritmetica binaria in complemento a due -Carry e Overflow - Rappresentazione dei numeri frazionari - Conversioni in virgola fissa e virgola mobile - Rappresentazione BCD - Codici binari. ELEMENTI DI PASCAL (W,D,G): Intestazioni, tipi e dichiarazioni di variabili, istruzioni semplici e composte, diagrammi sintattici - Procedure e funzioni - Parametri formali e passaggio dei parametri. STRUTTURE DI DATI (D,W): Vettori e matrici - Pile (Stack) - Code - Liste (a singolo e doppio 'link') - Gestione delle liste: free list e garbage collection. INTRODUZIONE ALL'ALGEBRA DI BOOLE (C,D): Operazioni e loro proprieta' - Teorema di De Morgan e legge di dualita' - Teorema di sviluppo: Mintermini, Maxtermini e forma canonica - Minimizzazione: il metodo delle mappe di Karnaugh - Operatori universali - Operatore OR-esclusivo (coincidenza e anticoincidenza).

4 CIRCUITI LOGICI DIGITALI (C,D): Circuiti combinatori SSI: Analisi e sintesi - Circuiti combinatori MSI, LSI - Sintesi a ROM e PLA - Circuiti sequenziali - Memorie ROM, RAM statiche, dinamiche e associative. Modulo C < ARCHITETTURA DI UN ELABORATORE (D,W): Organizzazione interna - Bus di memoria - Registri - Contatori di programma e unita' di controllo Unita' aritmetica - I/O bus - Istruzioni - Modi di indirizzamento: a registro, a registro indiretto, assoluto, assoluto indiretto, imme- diato, autoincremento, relativo, a registro base e indexato - Sistema di I/O: sistemi a bus dedicato e memory mapped - Porte di I/O - Proto- colli Handshake - Interruzioni - Microcomputer H6809 e sua simulazione in Pascal. PROGRAMMAZIONE ASSEMBLY (D,W) - Pseudo-istruzioni - Compilazione: PLC, tabella dei simboli e modulo oggetto - Correlatore (Link Editor) - Caricatore (Loader) - Rilocazione - Macro-istruzioni. MODULO B ELABORATORI NUMERICI (D,W): Organizzazione interna dell'unita' centrale - Microcomputer H6809 e sua simulazione in Pascal - Unita' di controllo canalizzate - Gestione della memoria - Memory Management Unit - Paginazione (memory mapping): mappa di traduzione degli indirizzi - Classificazione delle macchine: ad accumulatori (H6809), a registri generali (H8000) ed a stack (H11) - Processori RISC. SISTEMA DI INPUT/OUTPUT (W,D): Sistemi a bus dedicato e memory mapped - Porte di I/O - Protocolli Handshake - Interfacciamenti: Paralleli (Centronix, IEEE 488) e seriali (asincrono RS232C e sincroni BSC) - Programmazione I/O e sovrapposizione - I/O drivers - Sistema di inter- ruzione - Gestione delle priorita': geografica, daisy chain, mask bits, round-robin, polling e interruzioni vettorizzate - Interruzioni interne (traps) e software (system calls) - Programmazione delle interruzioni - Accesso diretto alla memoria (DMA) - Sottosistemi a dischi - Canali di I/O controllati da processori. PROGRAMMAZIONE CONCORRENTE (D,W): Processi e loro stati - Concorrenza con I/O in sovrapposizione - Variabili condivise e sezioni critiche - Errori timing-dependent e stallo (dead-lock) - Protezione delle sezioni critiche - Semafori - Bloccaggio di strutture di dati - Condivisione di struzioni. SISTEMA DI MEMORIA (D,P): Organizzazione gerarchica - Memoria a banchi, interleaved, multiport - Fetch multiplo - Registro di istruzioni a buffer - Memoria cache - Memoria virtuale - Gestione della memoria: partizioni fisse e variabili, paginazione, memoria virtuale. SISTEMI OPERATIVI E RETI (C,D,I): Dedicati, a lotti (batch) e interattivi (time-sharing) - Multitasking e multiprogrammazione - Reti locali - Software di rete ELEMENTI DEL LINGUAGGIO JAVA (D,J): Programmazione ad oggetti - Fondamenti del linguaggio Java: classi, oggetti, variabili e metodi - I/O in Java - Interfaccia grafica Swing (GUI) - Gestione degli eventi e delle eccezioni - Applicazioni e applet - Connessioni in rete e programmazione client-server. < INTERCONNESSIONE DI RETI E INTERNET (D,I,H) - Indirizzamento IP - Protocolli TCP - Inter-reti - Internet - Browser e linguaggio HTML - Web server - Script CGI e Javascript ARCHITETTURE AVANZATE (C,D): Classificazione dei sistemi di elaborazione parallela: MISD, SIMD,MIMD - Tipi di accoppiamento: Multiproces-

5 sor, multicomputer e reti locali - Esempi ACQUISIZIONE DI DATI SPERIMENTALI (D): Sistemi standard di acquisizione di dati (NIM, CAMAC, VME e FASTBUS) - Organizzazione di un sistema multitask in tempo reale - Supervisione dell'elaborazione parallela (centralizzata e distribuita) - Multiprocessing (esempi su VME e FASTBUS). ESERCITAZIONI Modulo A: Programmazione in Pascal - Simulatore del computer H Uso pratico del linguaggio binario e mnemonico Assembly del computer H6809 con simulatore e debugger. Modulo B: Programmazione concorrente su rete locale di PC (farm per la simulazione Montecarlo dello scattering coulombiano) - Uso pratico del linguaggio Java - Istallazione ed uso di Web server con uso di applet Java, Javascript e script CGI - Programmazione concorrente (client-server) su rete Intranet. Modulo C: Uso pratico del linguaggio binario e mnemonico Assembly del computer H6809 con simulatore e debugger - Programmazione concorrente su rete locale di PC (farm per la simulazione Montecarlo dello scattering coulombiano) - Uso pratico del linguaggio Java - Programmazione concorrente (client-server) su rete Intranet. PRINCIPALI RIFERIMENTI BIBLIOGRAFICI: Testo base: D: Dispense, esercizi e fotocopie di appunti/trasparenze distribuite gratuitamente dal docente su floppy disk. Testi per consultazione: W: J.Wakerly - Microcomputer Architecture and Programming - Ed. Wiley G: M.Gori et al. - Pascal e C - Ed. Mc Graw Hill C: G.Cioffi,V.Falzone - Manuale di Informatica - Ed. Calderini P: D.A.Patterson et al.- Struttura e progetto...- I/F Hard/Softw. J: Cay Horstmann - JAVA 2, i fondamenti - Ed. Mc Graw Hill I: D.Comer - Internet e reti di calcolatori - Ed. Addison-Wesley H: G.B.Shelly et al. - HTML imparare per progetti Per informazioni, spiegazioni e chiarimenti e' possibile concordare durante tutto l'anno accademico incontri con il professore al anche al di fuori degli orari di ricevimento (studenti lavoratori). Si puo' comunicare con il professore anche all'indirizzo di posta elettronica PROGRAMMA LOGICO DEL CORSO ========================== (Grafo che evidenzia le connessioni logiche tra i vari argomenti) RAPPRESENTAZIONE INFORMAZIONI

6 STRUTTURE DATI ALGEBRA DI BOOLE ELETTRONICA DIGITALE ARCHITETTURA ELABORATORE ^ UNITA' CENTRALE < SISTEMA SISTEMA > Modulo A I/O MEMORIA... PROGRAMMAZIONE Modulo B (ASSEMBLY,PASCAL,JAVA...) SISTEMA > PROGRAMMAZIONE MEMORY D'INTERRUZIONE CONCORRENTE MANAGEMENT v > SISTEMI OPERATIVI< MONOUTENTE SPECIALI ACCORGIMENTI HARDWARE SISTEMI OPERATIVI MULTIUTENTE,MULTITASK SOFTWARE DI RETE MULTIPROGRAMMAZIONE < > MULTIPROCESSING ARCHITETTURE AVANZATE RETI LOCALI/INTERNET/INTRANET > CAMAC ACQUISIZIONE DI DATI SPERIMENTALI > VME ( ed altre applicazioni ) > FASTBUS. > ECC...! INTRODUZIONE

7 Il campo dei calcolatori elettronici e' forse quello che piu' di tutti negli ultimi decenni ha mostrato un progresso sfrenato. Infatti non solo ha raccolto i frutti del rapidissimo progresso della microelettronica, ma ha anche contribuito al progresso della nostra societa' con le grandi innovazioni nel campo del software e della telematica. Questo enorme progresso, unito alla grande rapidita' di evoluzione di idee e sistemi, condiziona a nostro parere le modalita' di una didattica istituzionale in questa materia. Infatti, mentre da un lato gli studenti sono desiderosi di arrivare rapidamente all'apprendimento delle macchine e sistemi piu' moderni, dall'altro questi non risultano adatti ad un efficiente apprendimento di base della materia, poiche' mentre sono destinati ad una rapida obsolescenza, inevitabilmente la loro complessita' pone degli ostacoli, complicando e rallentando inutilmente la comprensione dei concetti di base, la cui acquisizione, anche se fatta in maniera piu' semplice, permette poi di capire meglio e piu' rapidamente il funzionamento non solo dei sistemi attuali (che hanno una VITA LIMITATA) ma anche e soprattutto di quelli futuri. Per questi motivi nel nostro corso adotteremo come macchina di riferimento il miglior processore tra quelli piu' semplici ad 8 bit prodotto alla fine degli anni settanta e addirittura lo semplificheremo ulteriormente riducendone il numero dei registri allo stretto indispensabile. In questo modo, per il nostro corso, il processore ideale H6809 che ne deriva assume lo stesso ruolo che il punto materiale svolge in Meccanica o che il gas perfetto svolge in Termodinamica: un'idealizzazione che non ha riscontro nella realta' ma che ci aiuta a comprendere i meccanismi che stanno alla base della materia. Per meglio comprendere i meccanismi di funzionamento impiegati nei moderni calcolatori elettronici, pur nella loro complessita', seguiremo nella nostra trattazione un criterio di evoluzione 'storica', con cui progrediremo con gradualita', dai sistemi uniprocessor con sistema d'interruzione alla programmazione concorrente ed alla multiprogrammazione per arrivare infine alle architetture avanzate di elaborazione parallela multiprocessore. Essendo nostra convinzione che un apprendimento di questa materia non puo' essere disgiunto dall'acquisizione di capacita' operative sull'uso dei computers, abbiamo associato alle lezioni teoriche delle esercitazioni pratiche svolte su personal computer dotati di un programma simulatore che fa funzionare il PC come se dentro ci fosse un processore H6809. In questo modo lo studente puo' meglio comprendere i principi della programmazione dei calcolatori elettronici che studia a lezione. Un'ultima osservazione riguarda gli studenti del corso di laurea in fisica, ai quali questo corso e' particolarmente diretto: come deve essere gia' loro noto, la fisica si occupa di scoprire e stu- diare le leggi fisiche della Natura ovvero i rapporti quantitativi che intercorrono tra le grandezze osservabili, cioe' suscettibili di misurazione e quindi quantificabili con numeri: per questo, come la matematica ed i calcoli numerici hanno un ruolo fondamentale in fisica, cosi' anche i calcolatori elettronici sono fondamentali per i fisici, come strumenti di calcolo (OFF-LINE). Inoltre i calcolatori elettronici sono anche l'elemento centrale di analisi e controllo in linea (ON-LINE) di tutti i moderni apparati sperimentali e vanno quindi visti come parte essenziale dello stru- mento con cui il fisico misura le grandezze fisiche osservabili, che sono oggetto della fisica sperimentale. Cosi' lo studio dei calcolatori elettronici e dei loro campi e modalita' di impiego va associato allo studio dei trasduttori della informazione fisica (per esempio i rivelatori di particelle), ed alle

8 metodologie di acquisizione ed analisi dei dati sperimentali, che concorrono a formare lo strumento con cui indaghiamo il mondo fisico.! AVVERTENZE IMPORTANTI PER LE ESERCITAZIONI ========================================== Licenza d'uso: Le dispense per loro natura devono fare riferimento ai libri di testo consigliati, sui quali lo studente puo' cosi' trovare, in modo omogeneo, le informazioni per gli ulteriori approfondimenti. Cio' e' stato fatto dal docente con la massima attenzione al rispetto delle disposizioni di legge sul diritto di autore e pertanto il materiale didattico consegnato allo studente non deve essere in nessun caso alterato ne' duplicato o diffuso senza specifica autorizzazione scritta dell'autore. Il software contenuto nei dischetti consegnati dal docente e' di proprieta' dei rispettivi fornitori e concesso in licenza all'universita' di Roma-La Sapienza. Puo' essere usato solo presso questa Universita' nel rispetto delle relative licenze, sui computer assegnati per le esercitazioni, per fini didattici e non puo' essere ne' asportato ne' copiato con qualsiasi mezzo. Lo stesso vale per il testo delle dispense, la cui circolazione deve essere limitata agli studenti iscritti al corso del prof.r.biancastelli. Eventuali responsabilita' civili e penali previste dalle leggi vigenti, conseguenti al mancato rispetto delle disposizioni impartite al riguardo dal docente e dagli organi universitari, sono solo dei trasgressori. Per il materiale scaricato dalla rete devono essere sempre rispettate le restrizioni di copyright indicate dai relativi fornitori. Poiche' spesso tra gli studenti si subiscono questi doveri come ingiuste vessazioni, il docente ritiene utile esprimere la propria opinione al riguardo: nei Paesi in cui e' consentito a liberi imprenditori di investire nella ricerca sul software, ripagandosi poi degli investimenti fatti con i GIUSTI proventi della vendita, una efficace tutela giuridica del software e dei diritti di autore permette, al Paese che la pratica, di sviluppare l'industria del software e di creare con essa numerosi posti di lavoro, che in prospettiva valgono molto di piu' del software trafugato (purche' le Autorita' sappiano contrastare le tendenze ai monopoli nel software per salvaguardare, con la concorrenza, il livello e la giustezza dei prezzi). Virus: Le esercitazioni si svolgeranno usando un dischetto personale per ogni studente: su questo dischetto vi saranno sia il file contenente le dispense del corso, che appunti (LEZ??.PAS) e programmi per le esercitazioni. Lo studente dovra' riconsegnare questo dischetto al docente al termine delle esercitazioni e non usare dischetti propri per ragioni di sicurezza e protezione dai 'virus'. Un virus e' un programma nascosto all'interno di un altro programma usato dell'utente. Quando viene lanciato in esecuzione esso modifica gli altri programmi eseguibili presenti sul dischetto e nel computer installandosi in maniera invisibile nella memoria e nel sistema operativo, in modo da rimanere stabilmente installato nella macchina, che risulta cosi' 'infettata' ed in grado di infettare tutti i programmi eseguibili presenti sui dischetti di utenti ignari. Questo processo di contagio dei dischetti

9 del nostro corso e' possibile anche nei vari computers dei nostri laboratori, poiche' sono aperti a tutti e qualcuno puo' portare dischetti infetti dall'esterno. I vostri dischetti, una volta infettati, se portati fuori del laboratorio possono infettare il vostro computer dell'ufficio, di casa, ecc. Per questi motivi lo studente deve riconsegnare il suo dischetto al docente al termine delle esercitazioni e non portare mai dischetti propri in laboratorio. I tecnici di laboratorio sono i custodi responsabili del funzionamento e del coordinamento nell'uso dei computer. Gli studenti devono pertanto attenersi alle disposizioni da essi impartite e segnalare loro eventuali anomalie riscontrate. PROGRAMMA DI LAVORO DURANTE LE ESERCITAZIONI PRATICHE: Lo svolgimento delle esercitazioni e' basato sul materiale didattico nel dischetto consegnato dal professore e su software scaricabile gratuitamente da Internet (dopo essersi registrati indicando il proprio indirizzo di E.mail: se non lo avete potete richiederlo ad un fornitore di servizio gratuito di posta elettronica, per esempio Netscape). Bisognera' quindi, al momento stabilito dal professore, eseguire il download dei programmi seguenti, dai siti indicati: Delphi (eserc. Pascal) Java Development Kit (eserc. Java) Perl (eserc. CGI) Apache Web-Server (eserc. Web) vedi (su Win95 potrebbe essere necessario scaricare anche l'upgrade Winsock2 da Il programma di lavoro, configurato in base alla preparazione dello studente, dovra' contenere, nell'ordine, i seguenti argomenti: 1) Uso dei comandi elementari del Sistema Operativo MS-DOS 2) Uso dell'editor del TURBOPASCAL 3) Prove di uso delle istruzioni Pascal in semplici programmi (xxxdemo.pas) 4) Comprensione ed ampliamento del programma ADDING.PAS 5) Studio del programma Monitor 6) Studio del programma di simulazione H6809BUG.PAS (con BINPROG.PAS); ricerca ed eliminazione degli errori ivi contenuti 7) Studio del microcomputer H6809 simulato su IBM-PC, scrivendo ed eseguendo un semplice programma in linguaggio macchina 8) Ampliamento del simulatore H6809 introducendovi altre istruzioni come quelle di branch condizionato o di I/O o il sistema d'interruzione 9) Uso dell'editor dell'ambiente JDK1.3 (Java Developmenti Kit) 10) Prove di uso delle istruzioni Java in semplici programmi (xxxdemo.java): FirstSample, Welcome, BigDebt, Test0, Root, NewRoot, SwapTest, SwapTest2, ShellSort, VirusLook, LotteryOdds: esempio con input da tastiera e chiamata a metodo EmployeeTest, H6809g: Monitor H6809 scritto in java Root, RootApplet: esempio di applet

10 Prova: programma contenente un errore da trovare 11) Studio del programma Monitor H6809g.java, con particolare attenzione all'uso dell' oggetto Byte (esempio di programmazione ad oggetti) 12) Realizzazione in Basic di un simulatore dello scattering coulombiano con il metodo di Montecarlo 13) Programmazione concorrente del Montecarlo su una LAN in elaborazione parallela ('farm' di computer). 14) Istallazione ed uso del Web server Apache con uso di applet Java e script CGI. 15) Programmazione concorrente su rete Intranet (facoltativo). AVVERTENZA IMPORTANTE ===================== Le esercitazioni si svolgeranno usando un dischetto personale per ogni studente: su questo dischetto vi saranno sia il file contenente le dispense del corso, che appunti (LEZ??.PAS) e programmi per le esercitazioni. Gli esercizi e le dispense su Internet, sulla programmazione ad oggetti e sul linguaggio Java saranno consegnati agli studenti all'inizio del modulo B (subito dopo Pasqua). Lo studente dovr? riconsegnare questo dischetto al docente al termine delle esercitazioni e non portare dischetti propri per ragioni di sicurezza e protezione dai 'virus'. Un virus e' un programma nascosto all'interno di un altro programma usato dell'utente. Quando viene lanciato in esecuzione esso modifica gli altri programmi eseguibili presenti sul dischetto e nel computer, installandosi in maniera invisibile nella memoria e nel sistema operativo in modo da rimanere stabilmente installato nella macchina. Questa risulta così 'infettata' ed in grado di infettare tutti i programmi eseguibili, presenti sui dischetti in essa inseriti da utenti ignari. Questo potenziale processo di contagio dei dischetti del nostro corso e' possibile sia nei computers del nostro laboratorio che in quelli del CATTID, poiche' sono centri aperti a tutti e qualcuno puo' portare dischetti infetti dall'esterno. I vostri dischetti, una volta infettati, se portati fuori dall'universita' possono infettare il vostro computer di casa, dell'ufficio, ecc. Per questi motivi lo studente deve riconsegnare il suo dischetto al docente al termine delle esercitazioni e non portare mai dischetti propri al laboratorio o al CATTID.! Per le esercitazioni si puo' utilizzare anche la sala computers del CATTID, dotata di 20 PC-IBM, ubicata come indicato nella piantina seguente: VIALE DEL POLICLINICO... EDIFICIO CATTID <--- ingresso

11 MINERALOGIA GEOLOGIA SCIENZE POLITICHE F I GIURISPRUDENZA S I C Piazza A della RETTORATO Minerva! I primi 9 capitoli sono contenuti nel file Corso_A.TXT (Modulo A)! CAPITOLO 10 - Programmazione concorrente Riassunto: Scopo essenziale di questo capitolo e' quello di introdurre le problematiche connesse con l'elaborazione simultanea di piu' compiti (processi) da parte di uno stesso elaboratore, quale si incontra per la prima volta usando il sistema di interruzione Processi e loro stati Il concetto astratto di 'processo' viene introdotto perche' aiuta a capire il funzionamento dei programmi in ambiente di interruzioni multiple. Definiamo inizialmente un processo come un compito che l'elaboratore svolge eseguendo le istruzioni di un apposito programma. Vedremo in seguito (Java) che un processo puo' anche avere piu' sottoprocessi (thread), funzionanti in concorrenza nella stessa area di memoria virtuale del processo, ognuno con un compito diverso, come per esempio quello di attendere il verificarsi di un certo evento o di eseguire un'elaborazione compatibile con la prosecuzione dell'elaborazione del programma (elaborazione in background). Quando un thread termina il suo compito, viene sospeso o eliminato. Nel capitolo precedente abbiamo visto come sia possibile, con il pieno impiego del sistema d'interruzione, far compiere al calcolatore elettronico piu' processi simultaneamente, come elaborazione, input, output, acquisizione di dati sperimentali, ecc. Con il termine 'simultaneamente' intendiamo dire che il computer esegue l'elaborazione contemporaneamente ad altri compiti, come quelli relativi all'i/o, nel senso che, mentre l'elaborazione procede, vengono serviti (durante le interruzioni) i vari dispositivi che inviano le interruzioni (input, output, acquisizione-dati, ecc.), in modo da farli funzionare tutti insieme alla loro massima velocita' (cosa resa possibile dalla maggior velocita' della CPU), e cio' 'contemporaneamente' al procedere dell'elaborazione principale. Nell'esempio citato diremo cosi' che i processi di elaborazione principale, input, output ed acquisizione-dati (identificabili come attivita' distinte della CPU) sono eseguiti in concorrenza tra loro, nel senso che la CPU esegue le istruzioni necessarie

12 alla loro esecuzione, saltando dall'un processo all'altro, in modo pilotato dal succedersi delle interruzioni (servite con le priorita' stabilite dal programmatore). Cosi' si riesce ad ottenere due risultati importanti: 1) far lavorare ogni dispositivo alla sua massima velocita' 2) ridurre i tempi morti solo a quelli necessari al salto da un processo all'altro ed al salvataggio e ripristino dello stato della macchina all'interruzione. Dopo aver definito un processo, vediamo di definire i suoi tre stati possibili. STATI DI UN PROCESSO: 1) inattivo (=inactive) 2) attivo sveglio (=active awake) 3) attivo dormiente (=active asleep). Consideriamo per esempio il processo di output di un messaggio sulla console dell'operatore (i relativi programmi Assembly e Pascal sono stati discussi nel capitolo precedente). Prima che il processo di elaborazione principale (main program) generi il messaggio, il processo di output e' nello stato inattivo. Quando la CPU genera il messaggio, attiva anche il processo di output, inviando (con il driver di output) il primo carattere alla console ed attivando l'interruzione relativa (vedi 9.7.2, dove la variabile BUSY=1/0 indica lo stato attivo/inattivo del processo di output). La CPU ritorna poi al processo di elaborazione principale. Da quel momento il processo di output e' nello stato attivo e dormiente (in attesa di risveglio, quando arrivera' il segnale d'interruzione, dopo il completamento della stampa del primo carattere). Successivamente, quando l'interruzione arriva (dopo che il primo carattere e' stato stampato), la CPU interrompe il processo di elaborazione principale, che va cosi' nello stato attivo dormiente, e salta alla routine di servizio dell'interruzione, cominciando ad eseguire le istruzioni del processo di output: in questo momento diremo che il processo di output e' nello stato attivo e sveglio. Quando poi la routine di servizio dismette l'interruzione, eseguendo l'apposita istruzione RTI (return from interrupt), il processo di output torna nello stato attivo dormiente, mentre il processo a cui si ritorna va nello stato attivo sveglio. In conclusione abbiamo definito i tre stati di un processo nel modo seguente: > DORMIENTE --- (esecuzione sospesa) INATTIVO < > ATTIVO < interrupt > SVEGLIO <--- (in esecuzione) INATTIVO: quando un processo non e' ancora iniziato; ATTIVO E SVEGLIO : un processo iniziato ed in esecuzione (cioe' la CPU ne sta eseguendo le istruzioni); ATTIVO E DORMIENTE: un processo iniziato, ma in attesa di essere continuato al momento dell'arrivo dell'interruzione (la CPU sta eseguendo le istruzioni di un altro processo). In ambiente multiprocessor possono essere svegli piu' processi contemporaneamente (con un solo processor un solo processo e' sveglio: quello su cui la CPU sta lavorando). MULTITASKING: Si possono anche attivare piu' processi di elaborazione, anziche' di I/O, ed averne l'elaborazione 'simultanea', nel modo sopra descritto, se si crea un apposito programma supervisore (chiamato

13 sistema operativo multitask o real time executive per le applicazioni in tempo reale), appositamente progettato per coordinare l'esecuzione dei vari processi, gestendone eventualmente anche le relative priorita'. In questo caso le interruzioni che fanno passare la CPU da un processo all'altro, possono essere non solo quelle generate dalle unita' di I/O, ma anche quelle generate da: - un 'real time clock' interno al calcolatore che, ad intervalli di tempo prefissati, invia segnali di interruzione (time sharing); - chiamate di sistema che sono inserite nel processo corrente per evitare che questo faccia perdere tempo alla CPU restando in un loop, in attesa che un altro processo si compia (vedi prossimo esempio). Si dice pre-emptive (cooperativo) un sistema operativo multitasking a partizioni di tempo (time-sharing), in cui la CPU assegna il controllo in ogni intervallo di tempo (time-slice) ad un task diverso e puo' interrompere un processo in corso, salvandone lo stato, per eseguirne uno piu' prioritario (riprendendo poi quello interrotto da punto in cui era). Nel multitasking non pre-emptive invece, quando un processo ottiene il controllo della CPU non puo' piu' essere interrotto e tiene il controllo finche' non e' terminato Programmazione dei processi - Sezioni critiche Per poter programmare i processi abbiamo bisogno di apposite istruzioni per dichiarare, risvegliare o mettere a dormire un processo. In Pascal queste possono essere indicate con le seguenti parole chiave (in maiuscolo): PROCESS nome_del_processo; (Dichiarazione di processo) WAKEUP nome_del_processo; (Risveglio di un processo) SLEEP UNTIL condizione; (Messa a dormire condizionata del processo) SLEEP; (Messa a dormire incondizionata del processo) In tal caso si parla di Pseudo-Pascal o Pascal concorrente. Come esempio di programmazione che usa queste nuove istruzioni esaminiamo quello che riporta i driver di I/O sotto interruzione gia' studiati nel (Programmazione delle interruzioni): PROGRAM ElaboraRighe (input,output); Istruzioni nuove:... <--- Dichiarazione variabili ================ PROCESS RigaIn; <---- PROCESS... BEGIN InputAvailable:=false; ClearInBuffer; REPEAT BEGIN KbIEN:=true; KbGO:=true; KbRDY:=false; SLEEP UNTIL KbRDY=true; SLEEP UNTIL InBuffer(KbData) END UNTIL KbData=tappo; InputAvailable:=true; SLEEP SLEEP END; PROCESS RigaOut;... BEGIN OutPrinted:=false; WHILE Buffer=pieno DO BEGIN DisplayData:=NextChar; DisplayIEN:=true; DisplayGO:=true; DisplayRDY:=false; PROCESS

14 SLEEP UNTIL DisplayRDY:=true SLEEP UNTIL END; DisplayIEN:=false; OutputPrinted:=true; SLEEP SLEEP END; END; PROCESS RigaElab;... BEGIN WAKEUP RigaIn; SLEEP UNTIL InputAvailable;... Elabora riga... SLEEP UNTIL OutputPrinted; WAKEUP RigaOut END; PROCESS WAKEUP SLEEP UNTIL SLEEP UNTIL WAKEUP BEGIN <--- Inizio Main Program OutputPrinted:=true; <--- Inizializzazione WAKEUP RigaElab; <--- Input+Elabora+Print WAKEUP... END. In questo esempio i processi funzionano come coroutines, in quanto quando sono risvegliati riprendono l'elaborazione dal punto in cui erano stati sospesi (con SLEEP). Questo fa capire come il compilatore deve tradurre in linguaggio macchina le parti di programma dichiarate come processi Sezioni critiche, errori timing-dependent La programmazione concorrente, in cui la CPU ripartisce il tempo di elaborazione tra piu' processi contemporaneamente attivi, presenta una problematica nuova. Per coprenderne l'origine, consideriamo un esempio: un processo in corso di elaborazione (attivo), tra un risveglio ed un altro puo' trovarsi inopinatamente variati i valori di alcune variabili memorizzate, perche' condivise con altri processi che sono entrati in elaborazione mentre lui era dormiente ed hanno usato quelle stesse variabili, cambiandone il valore. Le aree di programma dove sono utilizzate le variabili (o piu' in generale le risorse) condivise si chiamano 'sezioni critiche'. Questi problemi non solo possono creare errori di elaborazione, ma possono anche paralizzare l'attivita' del calcolatore: in tal caso si dice che si e' verificata una situazione di 'stallo' (dead-lock), in cui due processi si arrestano, ognuno in attesa che l'altro compia una certa azione. Per capire come cio' possa succedere, consideriamo il seguente esempio, in cui un processo MAIN preleva dati tramite un altro processo INPUT e li elabora: PROCESSO MAIN PROCESSO INPUT > interrupt > Legge dati no e' InputAvailable=true InputAvailable:=true? Preleva dati si e' no MainWaiting=true >?

15 InputAvailable:=false MainWaiting:=true si -----> MainWaiting:=false Elabora dati SLEEP Main < WAKEUP Main Se interrupt avviene < qui', Main va in SLEEP con MainWaiting cambiato in false SLEEP Input da Input; cosi' Input non eseguira' mai piu' WAKEUP Main ed entrambi i processi dormiranno per sempre (situazione di stallo)! Il punto indicato e' una sezione critica perche' usa una variabile condivisa (MainWaiting). E' istruttivo esaminare anche altri casi in cui si puo' verificare lo stallo. Un primo esempio e' quello in cui due processi per lavorare si condividono le stesse pagine di memoria, richiedendole, di volta in volta, al sistema di allocazione dinamica del sistema operativo (non ci sono pagine di memoria sufficienti da allocare ad entrambi i processi). In questo caso si verifica uno stallo quando il processo B non puo' procedere se non termina il processo A, il quale pero' non puo' terminare perche' la memoria che gli sarebbe necessaria e' stata gia' allocata a B (e rimane percio' per sempre in attesa che venga rilasciata). Si puo' verificare uno stallo anche nell'uso incorretto del bloccaggio di risorse condivise tramite semafori. Per esempio, due processi di compilazione di ordini, composti da articoli contenuti in records di un file random, da parte di due distinti operatori, possono andare in stallo se: - il primo processo accede al record dell'articolo A bloccandolo (perche' ne dovra' cambiare la giacenza all'invio dell'ordine); - il secondo processo accede al record dell'articolo B bloccandolo; - successivamente il primo processo chiede di accedere anche lui all'articolo B (bloccato) ed il secondo processo chiede poi di accedere all'articolo A, bloccato anch'esso (perche' li devono inserire nei rispettivi ordini); Ovviamente essendo gli articoli A e B gia' bloccati, l'accesso non viene concesso ed i due processi vanno a dormire per sempre perche' nessuno dei due rilascera' il bloccaggio del record che ha impegnato. La procedura corretta sarebbe quella in cui ogni processo compila l'ordine, bloccando poi i records o addirittura l'intero file (per un tempo brevissimo, durante l'aggiornamento delle giacenze), con un'unica operazione non interrompibile, solo all'invio dell'ordine. Questo tipo di errori sono assolutamente da evitare (con un'attenta progettazione e conoscendo i casi in cui possono verificarsi), perche' essendo timing-dependent, producono effetti non riproducibili. Cio' accade in quanto essi dipendono dall'istante di tempo in cui arriva l'interruzione che mette a dormire un processo e ne risveglia un altro: questo e' un evento non riproducibile nel senso che ripetendo la procedura l'interruzione non ricapitera' nello stesso microsecondo della volta precedente. Puo' cosi' capitare che un programma sembra funzionare correttamente; una volta reso operativo pero' mostra un'anomalia sporadica, che compare casualmente nel senso che, ripetendo le operazioni con le stesse modalita', l'anomalia non si ripete (perche' e' molto poco probabile che l'interruzione responsabile dell'anomalia interrompa il processo esattamente nello stesso istante, in cui la CPU sta elaborando le istruzioni della sezione critica; anzi piu' breve e' la sezione critica tanto meno sara' questa probabilita' e quindi

16 la riproducibilita' dell'anomalia) Controllo delle sezioni critiche: bloccaggio e semafori Abbiamo definito 'sezioni critiche' quelle parti del programma, che fanno riferimento a variabili condivise con altri processi e che pertanto possono variare in modo incontrollato in conseguenza di interruzioni che avvengono durante l'esecuzione delle istruzioni della sezione critica. Nella programmazione dei processi concorrenti e' percio' necessaria un'accurata analisi in fase progettuale di tutti gli eventi che possono verificarsi. Un primo modo di risolvere questi problemi, evitando stalli ed altri errori timing-dependent (molto difficili da diagnosticare), e' il BLOCCAGGIO ovvero l'accorgimento di impedire le interruzioni nelle sezioni critiche (per questo basta disabilitare temporaneamente il sistema d'interruzione). Questo rimedio, benche' semplice da attuare, non e' pero' privo di rischi: infatti e' possibile che la stessa disabilitazione del sistema di interruzione in una sezione critica possa generare stallo, se nella sezione critica c'e' un'istruzione di SLEEP, per esempio per l'attesa di un'input. Lo stallo si verificherebbe perche' il processo andato a dormire non si risveglierebbe mai piu', essendo l'interrupt disabilitato; cosi', non uscendo piu' dalla sezione critica, non si riabiliterebbe piu' il sistema d'interruzione disabilitato prima di entrare nella sezione critica. Un altro modo di proteggere le sezioni critiche del programma e' quello di regolare con SEMAFORI l'accesso alle risorse condivise, in modo che un solo processo alla volta possa usarle. Un semaforo e' una variabile condivisa che puo' assumere due valori (1=rosso e 0=verde). Basta fare un test su questa variabile prima di entrare nella sezione critica: se e' rosso non si entra (si attende o si mette in SLEEP il processo), se e' verde lo si mette rosso e si entra nella sezione critica impegnando la risorsa condivisa. La procedura e' descritta nel seguente diagramma: > Risorsa bloccata da altro processo no e' SEMAFORO=verde? si < interrupt? SEMAFORO:=rosso Uso risorsa Risorsa bloccata da questo processo SEMAFORO:=verde ecc. Attenzione pero': un interrupt, che arrivasse mentre l'elaborazione e' nel punto indicato dalla freccia, consentirebbe ad un altro processo di impegnare la risorsa (perche' SEMAFORO non e' ancora stato posto rosso) e ritornare dall'interruzione mantenendola ancora impegnata, cosicche' entrambi i processi la userebbero contemporaneamente. Per evitare questo, Test e Set del SEMAFORO devono essere fatti con un'unica istruzione indivisibile (come TSET, ISZ, DSZ, ecc.), oppure con un software interrupt, in cui si lascia disabilitato il sistema d'interruzione (senza mettere ovviamente istruzioni di SLEEP nel servizio dell'interruzione).

17 Condivisione di strutture-dati Le stesse problematiche si incontrano se le risorse condivise sono strutture di dati, scritte su disco. E' necessario evitare i seguenti errori: 1) Mentre il processo A sta leggendo, il processo B interrompe e aggiorna la struttura-dati; 2) Mentre il processo B sta scrivendo, il processo A interrompe per leggere; 3) Mentre un processo sta scrivendo, l'altro interrompe e scrive anche lui. N.B. Nessun errore avviene invece se i due processi leggono simultaneamente una stessa struttura-dati. Il bloccaggio in lettura o scrittura a livello di file o record, dev'essere messo a disposizione dal sistema operativo nei comandi di accesso ai dischi (file system) e serve a proteggere la strutturadati. Criteri analoghi si applicano a strutture-dati condivise su reti locali LAN o in ambiente di multiprocessing (un'apposita esercitazione mostrera' l'uso di questo bloccaggio nella realizzazione di una farm di computers per elaborazione parallela in rete locale) Condivisione di istruzioni. Programmi rientranti. La condivisione di istruzioni e' possibile, senza che produca errori, se il codice del programma e' scritto in maniera rientrante. Per essere rientrante un sottoprogramma deve usare soltanto i registri e lo stack per tutti i parametri e le variabili locali (come fa il Pascal, ma non il Fortran, per esempio). Devono inoltre essere evitate istruzioni automodificantesi durante la elaborazione (ovvero il programma non deve costruirsi con istruzioni di Store le successive istruzioni da eseguire): in altre parole il codice del programma dev'essere 'read-only'. Va inoltre evitata la memorizzazione di variabili in locazioni fisse di memoria (perche' sarebbero sovrascritte da un secondo processo che rientra nel sottoprogramma prima che il primo processo, che dorme perche' e' stato sospeso da un'interruzione, ne sia uscito). Il problema della generazione di codice rientrante e' gia' stata discussa nel capitolo riguardante la descrizione dei modi di indirizzamento. I programmi rientranti sono importanti in ambienti multiprogrammati perche' consentono di caricare nella memoria una sola copia delle routines di utilita', che grazie alla rientranza risultano disponibili simultaneamente a tutti gli utenti (per esempio: compilatori, text editor, ecc.). La programmazione concorrente e' facilitata dai moderni sistemi operativi e compilatori che prevedono apposite facilities e restrizioni che riducono il rischio di errori timing-dependent.! CAPITOLO 11 - Sistema di memoria Riassunto: Scopo essenziale di questo capitolo e' quello di descrivere gli accorgimenti messi in atto per migliorare le prestazioni del sistema di memoria di un calcolatore elettronico e come si possano poi risolvere i problemi connessi con il caricamento e l'elaborazione simultanea di piu' programmi nella memoria dell'elaboratore.

18 Organizzazione gerarchica del sistema di memoria Riportiamo in un'unico schema i vari elementi di memorizzazione usati in un'elaboratore per confrontarne le caratteristiche (i valori indicano solo gli ordini di grandezza): COSTO ALTO VELOCITA' ALTA ( $/Mb) CPU (registri) 1 ns 5 $ CACHE MEMORY 10 ns 1 $ MEMORIA PRIMARIA 100 ns 0.1 $ MEMORIA DI MASSA ns 0 $ MEMORIA IN RETE ns COSTO BASSO VELOCITA' BASSA Il divario tra la velocita' che si puo' rilevare tra la CPU e la memoria rende determinanti le prestazioni del sistema di memoria. Basta pensare che per ogni istruzione eseguita viene fatto almeno un accesso alla memoria (fetch): per questo le prestazioni dell'intero sistema di elaborazione vengono a dipendere dalle prestazioni del sistema di memoria ed e' quindi molto importante adottare tutti gli accorgimenti possibili per migliorarne le prestazioni Tecniche di miglioramento delle prestazioni del sistema di memoria Poiche' per ogni istruzione eseguita viene fatto almeno un accesso alla memoria (fetch), le prestazioni del sistema di memoria determinano le prestazioni dell'intero calcolatore elettronico. Per questo motivo vale la pena esaminare dapprima alcuni semplici accorgimenti che si possono adottare per velocizzare l'accesso alla memoria. 1) Memory banking: MSB LSB Bank 0 Bank 1 Bank 2 Bank Bank Offset Address Dividendo la memoria in banchi elettronici diversi (banking), si puo' avviare la lettura del fetch dell'istruzione seguente su un banco, mentre un altro banco sta completando (per esempio) il ciclo di scrittura che termina l'istruzione precedente. Naturalmente il vantaggio scompare se il banco interessato dalle due operazioni e' lo stesso (sarebbe come in assenza di banking). In questo caso pero' ci viene incontro la tecnica dell'interleaving. 2) Memory interleaving: si ottiene dal memory banking semplicemente

19 collegando in maniera diversa le linee di indirizzamento: MSB LSB Bank 0 Bank 1 Bank 2 Bank Offset Bank Address Usando i bit meno significativi come indirizzo del banco si ottiene la distribuzione degli indirizzi indicata in figura. Siccome locazioni di memoria contigue vengono ora a trovarsi su banchi distinti, risulta molto piu' frequente che i cicli di memoria capitino su banchi diversi. In questo modo si esalta il guadagno del memory banking. 3) Multiport memory: e' una tecnica costruttiva che consente all'elettronica del sistema di memoria di gestire piu' di un accesso simultaneo. E' una tecnica particolarmente utile nei sistemi multiprocessore o nei sistemi con I/O assistito da canale. 4) Multiword fetch: Siccome la fase di fetch dell'istruzione e' molto onerosa, in quanto comporta un ciclo di lettura della memoria per ogni istruzione eseguita, si puo' usare la tecnica di consentire la lettura di 2 locazioni contigue per ogni ciclo di memoria. Per esempio il computer IBM 370 eseguiva il fetch di 2 parole di 32 bit per ogni ciclo. In questo modo, se il successivo fetch era in sequenza (cioe' se non veniva eseguito un salto), l'istruzione era gia' pronta nei registri elettronici, senza bisogno di leggerla dalla memoria con un ciclo di lettura. 5) Buffered Instruction Register: La tecnica del multiword fetch, che mira a far trovare gia' pronta nei registri elettronici (molto piu' veloci della memoria) l'istruzione da eseguire, puo' essere spinta oltre, fino a prevedere un banco di molti registri elettronici che vengono caricati con le istruzioni via via lette dalla memoria. In questo modo nell'evenienza non improbabile di loop stretti si possono trovare per molte volte le istruzioni gia' pronte nel banco di registri, evitando cosi' di eseguire i cicli di lettura della memoria, ben piu' lenti. Lo schema di funzionamento, che prevede la funzione di 'freeze', che congela il contenuto del buffer nel caso dei loop stretti, e' il seguente: Prefetch MEMORIA > BUFFER > > si Fetch Freeze no PC < in Buffer < CPU <? 6) Tra gli accorgimenti hardware introdotti per migliorare le prestazioni del calcolatore elettronico, riportiamo la tecnica del pipelining (canalizzazione), anche se non riguarda direttamente il sistema di memoria. Si tratta di una tecnica che aumenta la velocita' di elaborazione, introducendo un parallelismo interno alla CPU nell'esecuzione delle istruzioni. Per comprendere l'idea di base consideriamo il caso semplificato in cui per compiere un'istruzione il calcolatore debba eseguire le tre fasi seguenti, che hanno una certa durata temporale: 1) Fetch, che preleva l'istruzione dalla memoria;

20 2) Decode, che decodifica l'istruzione ed imposta gli organi interni del calcolatore per eseguire l'istruzione; 3) Execute, che esegue l'istruzione. Normalmente queste fasi andrebbero eseguite sequenzialmente (in serie nel tempo), per cui per eseguire quattro istruzioni sono necessari dodici passi: Passo: Fase : F1 + D1 + E1 + F2 + D2 + E2 + F3 + D3 + E3 + F3 + D3 + E3 Supponiamo ora di aver costruito l'elettronica del nostro calcolatore in modo che le tre fasi possano essere eseguite indipendentemente. E' allora possibile far lavorare le tre sezioni che eseguono Fetch, Decode ed Execute in parallelo secondo lo schema seguente: Passo : Fetch : F1 F2 F3 F4 F5 F6 ecc. Decode : D1 D2 D3 D4 D5 Execute: E1 E2 E3 E4 E' evidente come il parallelismo di funzionamento delle tre sezioni del calcolatore permette di compiere il lavoro in un numero minore di passi e quindi di far funzionare piu' velocemente il calcolatore. Poiche' questo avviene facendo eseguire alla CPU il Fetch e Decode dell'istruzione seguente prima della fine dell'execute dell'istruzione precedente, e' possibile (nei casi di istruzioni di salto) che questo lavoro fatto, in cui la CPU cerca di avvantaggiarsi compiendo prima il lavoro che si prevede di dover fare subito dopo, si inutile. In questi casi (salti) il parallelismo del pipelining non funziona, la 'pipe' si svuota e l'elaborazione procede con la solita velocita' di una CPU non canalizzata per alcuni passi, finche' la 'pipe' si riempie di nuovo. Questa situazione e' mostrata nello schema seguente, in cui l'esecuzione dell'istruzione 3 esegue un salto: Passo : Fetch : F1 F2 F3 * * F4 F5 F6 Decode : D1 D2 D3 * * D4 D5 Execute: E1 E2 E3 * * E4 Come si puo' osservare dagli asterischi, lo svuotamento della 'pipe', prodotto dall'istruzione di salto, provoca una sospensione temporanea del funzionamento parallelo, con un conseguente rallentamento della elaborazione Cache memory (ad indirizzamento diretto) Per migliorare le prestazioni del sistema di memoria si possono sfruttare le caratteristiche di localita' spaziale e temporale dell'elaborazione: 1) Localita' spaziale: in assenza di salti a lungo range, l'elaborazione tende a ripetere gli accessi alle stesse locazioni entro un range limitato (basti pensare ai loop). 2) Localita' temporale: per gli stessi motivi il riutilizzo delle stesse memorie avviene con alta probabilita' a breve distanza di tempo. Queste caratteristiche sono alla base del successo della tecnica di accesso alla memoria con 'cache'. L'idea e' quella di trattenere, caricandolo in una memoria ausiliaria, non visibile al programmatore (cache=nascosta), che sia piccola ma molto veloce, il contenuto (istruzioni e dati) delle locazioni lette nella memoria principale, al fine di accedervi piu' rapidamente le volte successive, se il dato e' ancora nella memoria cache. La localita' spaziale e temporale rende molto frequente il successo di questo accesso alla memoria cache. Vediamo di comprenderne il funzionamento con un esempio di realizzazione

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

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

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

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

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

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

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

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

Guida all'uso di StarOffice 5.2

Guida all'uso di StarOffice 5.2 Eraldo Bonavitacola Guida all'uso di StarOffice 5.2 Introduzione Dicembre 2001 Copyright 2001 Eraldo Bonavitacola-CODINF CODINF COordinamento Docenti INFormati(ci) Introduzione Pag. 1 INTRODUZIONE COS'È

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

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

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

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

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

Come difendersi dai VIRUS

Come difendersi dai VIRUS Come difendersi dai VIRUS DEFINIZIONE Un virus è un programma, cioè una serie di istruzioni, scritte in un linguaggio di programmazione, in passato era di solito di basso livello*, mentre con l'avvento

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Schema Tipologia a Stella

Schema Tipologia a Stella Cos'e' esattamente una rete! Una LAN (Local Area Network) è un insieme di dispositivi informatici collegati fra loro, che utilizzano un linguaggio che consente a ciascuno di essi di scambiare informazioni.

Dettagli

MANUALE DOS INTRODUZIONE

MANUALE DOS INTRODUZIONE MANUALE DOS INTRODUZIONE Il DOS è il vecchio sistema operativo, che fino a qualche anno fa era il più diffuso sui PC, prima dell avvento di Windows 95 e successori. Le caratteristiche principali di questo

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

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

CALCOLATORI ELETTRONICI 15 aprile 2014

CALCOLATORI ELETTRONICI 15 aprile 2014 CALCOLATORI ELETTRONICI 15 aprile 2014 NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli a stampa 1 Di seguito è riportato lo schema di una ALU a 32 bit in grado

Dettagli

CALCOLATORI ELETTRONICI 29 giugno 2010

CALCOLATORI ELETTRONICI 29 giugno 2010 CALCOLATORI ELETTRONICI 29 giugno 2010 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si disegni lo schema di un flip-flop master-slave S-R sensibile ai fronti di salita e

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

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

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

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

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

ISTITUTO COMPRENSIVO STATALE di BORGORICCO SUGGERIMENTI PER LA COMPILAZIONE DEL P.D.P. PER ALUNNI CON DISTURBI SPECIFICI DI APPRENDIMENTO

ISTITUTO COMPRENSIVO STATALE di BORGORICCO SUGGERIMENTI PER LA COMPILAZIONE DEL P.D.P. PER ALUNNI CON DISTURBI SPECIFICI DI APPRENDIMENTO SUGGERIMENTI PER LA COMPILAZIONE DEL P.D.P. PER ALUNNI CON DISTURBI SPECIFICI DI APPRENDIMENTO Il documento va compilato in forma digitale per poter ampliare gli spazi dello schema (ove necessario) e togliere

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

Boot Camp Guida di installazione e configurazione

Boot Camp Guida di installazione e configurazione Boot Camp Guida di installazione e configurazione Indice 3 Introduzione 4 Panoramica dell'installazione 4 Passo 1: Verificare la presenza di aggiornamenti 4 Passo 2: Per preparare il Mac per Windows 4

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

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio:

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio: Flops FLOPS e' un'abbreviazione di Floating Point Operations Per Second e indica il numero di operazioni in virgola mobile eseguite in un secondo dalla CPU. (Top500 e il BlueGene) Ad esempio nel caso del

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame.

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. 1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. (a) Da quanti bit è costituito l indirizzo logico? (b) Da quanti bit

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Scopo di questo corso, vuole essere quello di fornire ad ognuno dei partecipanti, indipendentemente dalle loro precedenti conoscenze informatiche, l apprendimento

Dettagli

Sistemi Operativi Sincronizzazione tra Processi

Sistemi Operativi Sincronizzazione tra Processi Sistemi Operativi Processi Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo

Dettagli

Lezione 1. 1 All inizio di ogni capitolo vengono indicati gli obiettivi della lezione sotto forma di domande la cui risposta è lo scopo

Lezione 1. 1 All inizio di ogni capitolo vengono indicati gli obiettivi della lezione sotto forma di domande la cui risposta è lo scopo Lezione 1 Obiettivi della lezione: 1 Cos è un calcolatore? Cosa c è dentro un calcolatore? Come funziona un calcolatore? Quanti tipi di calcolatori esistono? Il calcolatore nella accezione più generale

Dettagli

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione.

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. COMPETENZE MINIME- INDIRIZZO : ELETTROTECNICA ED AUTOMAZIONE 1) CORSO ORDINARIO Disciplina: ELETTROTECNICA

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi.

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet: la rete delle reti Alberto Ferrari Connessioni

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

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

CALCOLATORI ELETTRONICI 31 marzo 2015

CALCOLATORI ELETTRONICI 31 marzo 2015 CALCOLATORI ELETTRONICI 31 marzo 2015 NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli a stampa 1. Tradurre in linguaggio assembly MIPS il seguente frammento di

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

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Programmazione di un dispositivo 1to4INTGEN

Programmazione di un dispositivo 1to4INTGEN Programmazione di un dispositivo 1to4INTGEN Realizzazione di un sistema timesharing Materiale didattico a cura di: Prof. A. Mazzeo Ing. L. Romano Ing. L. Coppolino Ing. A. Cilardo Dipartimento di Informatica

Dettagli

Comunicazione scuola famiglia

Comunicazione scuola famiglia Manuale d'uso Comunicazione scuola famiglia INFOZETA Centro di ricerca e sviluppo di soluzioni informatiche per la scuola Copyright InfoZeta 2013. 1 Prima di iniziare l utilizzo del software raccomandiamo

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

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

Procedura corretta per mappare con ECM Titanium

Procedura corretta per mappare con ECM Titanium Procedura corretta per mappare con ECM Titanium Introduzione: In questo documento troverete tutte le informazioni utili per mappare correttamente con il software ECM Titanium, partendo dalla lettura del

Dettagli

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 telecamere. I sistemi di acquisizione ed archiviazione

Dettagli

Allegato 8 MISURE MINIME ED IDONEE

Allegato 8 MISURE MINIME ED IDONEE Allegato 8 MISURE MINIME ED IDONEE SOMMARIO 1 POLITICHE DELLA SICUREZZA INFORMATICA...3 2 ORGANIZZAZIONE PER LA SICUREZZA...3 3 SICUREZZA DEL PERSONALE...3 4 SICUREZZA MATERIALE E AMBIENTALE...4 5 GESTIONE

Dettagli

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura Dev-Pascal 1.9.2 1 Dev-Pascal è un ambiente di sviluppo integrato per la programmazione in linguaggio Pascal sotto Windows prodotto dalla Bloodshed con licenza GNU e liberamente scaricabile al link http://www.bloodshed.net/dev/devpas192.exe

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

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

G e s t i o n e U t e n z e C N R

G e s t i o n e U t e n z e C N R u t e n t i. c n r. i t G e s t i o n e U t e n z e C N R G U I D A U T E N T E Versione 1.1 Aurelio D Amico (Marzo 2013) Consiglio Nazionale delle Ricerche - Sistemi informativi - Roma utenti.cnr.it -

Dettagli

Progetto VirtualCED Clustered

Progetto VirtualCED Clustered Progetto VirtualCED Clustered Un passo indietro Il progetto VirtualCED, descritto in un precedente articolo 1, è ormai stato implementato con successo. Riassumendo brevemente, si tratta di un progetto

Dettagli

Guida al ripristino e alla risoluzione dei problemi. Creare i dischi di ripristino subito dopo l'impostazione.

Guida al ripristino e alla risoluzione dei problemi. Creare i dischi di ripristino subito dopo l'impostazione. Guida al ripristino e alla risoluzione dei problemi Creare i dischi di ripristino subito dopo l'impostazione. Indice Trovare le informazioni necessarie... 3 Ripristino e backup... 4 Cos'è il ripristino

Dettagli

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO Precisione del riconoscimento Velocità di riconoscimento Configurazione del sistema Correzione Regolazione della

Dettagli

Lezione su Informatica di Base

Lezione su Informatica di Base Lezione su Informatica di Base Esplora Risorse, Gestione Cartelle, Alcuni tasti di scelta Rapida Domenico Capano D.C. Viterbo: Lunedì 21 Novembre 2005 Indice Una nota su questa lezione...4 Introduzione:

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

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

TeamViewer 8 Manuale Controllo remoto

TeamViewer 8 Manuale Controllo remoto TeamViewer 8 Manuale Controllo remoto Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 6 1.1 Informazioni sul software... 6

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

Equilibrio Termico tra Due Corpi

Equilibrio Termico tra Due Corpi Equilibrio Termico tra Due Corpi www.lepla.eu OBIETTIVO L attività ha l obiettivo di fare acquisire allo sperimentatore la consapevolezza che: 1 il raggiungimento dell'equilibrio termico non è istantaneo

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

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

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

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

DNS (Domain Name System) Gruppo Linux

DNS (Domain Name System) Gruppo Linux DNS (Domain Name System) Gruppo Linux Luca Sozio Matteo Giordano Vincenzo Sgaramella Enrico Palmerini DNS (Domain Name System) Ci sono due modi per identificare un host nella rete: - Attraverso un hostname

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

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guida introduttiva Questo documento descrive come installare e iniziare a utilizzare Acronis Backup & Recovery 10 Advanced Server Virtual Edition.

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi IL GESTIONALE DEL FUTURO L evoluzione del software per l azienda moderna Gestirsi / Capirsi / Migliorarsi IL MERCATO ITALIANO L Italia è rappresentata da un numero elevato di piccole e medie aziende che

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

Ottimizzazione della gestione del data center con Microsoft System Center

Ottimizzazione della gestione del data center con Microsoft System Center Ottimizzazione della gestione del data center con Microsoft System Center Declinazione di responsabilità e informazioni sul copyright Le informazioni contenute nel presente documento rappresentano le conoscenze

Dettagli

Lezione n 1! Introduzione"

Lezione n 1! Introduzione Lezione n 1! Introduzione" Corso sui linguaggi del web" Fondamentali del web" Fondamentali di una gestione FTP" Nomenclatura di base del linguaggio del web" Come funziona la rete internet?" Connessione"

Dettagli

CIRCUITI INTEGRATI ESEMPI: INTEL

CIRCUITI INTEGRATI ESEMPI: INTEL CIRCUITI INTEGRATI Costruzione di circuiti (logici e non) su un substrato di silicio. Non solo la parte attiva, ma anche le connessioni tra le porte. Incredibile miglioramento nelle prestazioni, nell affidabilità

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Guida Così si aggiornano i programmi Microsoft

Guida Così si aggiornano i programmi Microsoft Guida Così si aggiornano i programmi Microsoft Informazione Navigare in Internet in siti di social network oppure in siti web che consentono la condivisione di video è una delle forme più accattivanti

Dettagli

SCUOLANEXT, è l'esclusivo e rivoluzionario sistema informatizzato con cui far interagire docenti, studenti e famiglie in tempo reale!

SCUOLANEXT, è l'esclusivo e rivoluzionario sistema informatizzato con cui far interagire docenti, studenti e famiglie in tempo reale! SCUOLANET, è l'esclusivo e rivoluzionario sistema informatizzato con cui far interagire docenti, studenti e famiglie in tempo reale! SCUOLANET consente la piena digitalizzazione della scuola: completa

Dettagli