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

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

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

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

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

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Il software Dipartimento di Ingegneria dell Informazione Universitàdegli Studi di Parma SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il Sistema Operativo Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Cos

Dettagli

uomo Software (sistema operativo) hardware

uomo Software (sistema operativo) hardware uomo Software (sistema operativo) hardware 1 Sistema operativo Insieme di programmi che svolgono funzioni essenziali per l uso del sistema di elaborazione Questi programmi sono i primi ad essere eseguiti

Dettagli

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

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

Dettagli

DATA: 21-09-08 CLASSE: V a EL. TITOLO: ELABORAZIONE DEL SISTEMA OPERATIVO PER mp0

DATA: 21-09-08 CLASSE: V a EL. TITOLO: ELABORAZIONE DEL SISTEMA OPERATIVO PER mp0 DATA: 21-09-08 CLASSE: V a EL. TITOLO: ELABORAZIONE DEL SISTEMA OPERATIVO PER mp0 nelle lezioni precedenti abbiamo preso in esame tutte le caratteristiche e le funzionalità del microprocessore didattico

Dettagli

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

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

Dettagli

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Introduzione: 1. Principi di base dei sistemi operativi 2. Sistemi

Dettagli

Funzioni del Sistema Operativo

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

Dettagli

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

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

Dettagli

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

Calcolo numerico e programmazione. Sistemi operativi

Calcolo numerico e programmazione. Sistemi operativi Calcolo numerico e programmazione Sistemi operativi Tullio Facchinetti 25 maggio 2012 13:47 http://robot.unipv.it/toolleeo Sistemi operativi insieme di programmi che rendono

Dettagli

Definizione e storia dei sistemi operativi

Definizione e storia dei sistemi operativi Definizione e storia dei sistemi operativi Dipartimento di Informatica Università di Verona, Italy Che cos è un Sistema Operativo? E un insieme di programmi agisce come intermediario tra HW e uomo per

Dettagli

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

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

Dettagli

Cosa è un Sistema Operativo (S.O.)

Cosa è un Sistema Operativo (S.O.) Cosa è un Sistema Operativo (S.O.) Modulo software costituito da un insieme di programmi per: permettere all utente l uso dell elaboratore senza la conoscenza approfondita dell hardware S.O. supporto all

Dettagli

1. I dispositivi periferici

1. I dispositivi periferici La gestione dell I/O 1. I dispositivi periferici Un ulteriore aspetto fondamentale del SO è la gestione dei dispositivi periferici (periferiche) Dal punto di vista del sistema operativo per periferiche

Dettagli

Ing. Paolo Domenici PREFAZIONE

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

Dettagli

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi Il calcolatore elettronico Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi Introduzione Un calcolatore elettronico è un sistema elettronico digitale programmabile Sistema: composto da

Dettagli

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI Il Software Software di Base Sistema Operativo (Software di base essenziale) Software di base non essenziale Utility Driver Software applicativi (Applicazioni)

Dettagli

Infrastrutture Software

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

Dettagli

Come funziona un sistema di elaborazione

Come funziona un sistema di elaborazione Introduzione Cosa è un Sistema Sste aoperativo? Come funziona un sistema di elaborazione Proprietà dei Sistemi Operativi Storia dei Sistemi di Elaborazione Sistemi Mainframe Sistemi Desktop Sistemi i Multiprocessori

Dettagli

Il sistema di elaborazione

Il sistema di elaborazione Il sistema di elaborazione Stefano Brocchi stefano.brocchi@unifi.it Stefano Brocchi Il sistema di elaborazione 1 / 37 Informatica Il termine informatica deriva dalle parole informazione e automatica Stefano

Dettagli

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione Introduzione Fondamenti di Informatica: Sistemi Operativi 1 Elaboratori necessitano di SOFTWARE SOFTWARE DI SISTEMA (SISTEMI OPERATIVI): fanno funzionare le varie componenti del computer e permettono all

Dettagli

La gestione della memoria

La gestione della memoria La gestione della memoria Nella gestione della memoria il sistema operativo deve perseguire l'obiettivo di allocare il maggior numero di processi in memoria centrale per aumentare la probabilità che ci

Dettagli

Architettura di un sistema di calcolo

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

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Cos è un Sistema Operativo? Per capirlo, immaginiamo inizialmente

Dettagli

Sistema Operativo Compilatore

Sistema Operativo Compilatore MASTER Information Technology Excellence Road (I.T.E.R.) Sistema Operativo Compilatore Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il Sistema

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

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

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

Dettagli

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica www.dis.uniroma1.it/~midlab Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Prof. Roberto Baldoni Complementi: Buffer I/O Gestione dei buffer e I/O scheduling: 1. Richiami sulle tecniche

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

Architettura di un computer

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

Dettagli

SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)-

SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)- SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)- Nella cartella SIMATIC, a cui si accede dal menù di AVVIO, è contenuta la cartella STEP 7- Micro/Win32.Questa contiene a sua volta l icona

Dettagli

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

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

Dettagli

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 11/01/08 Nota Questi lucidi sono

Dettagli

Programmazione modulare 2012-2013

Programmazione modulare 2012-2013 Programmazione modulare 2012-2013 Indirizzo: Informatica Abacus Disciplina: SISTEMI DI ELABORAZIONE E TRASMISSIONE DELLE INFORMAZIONI Classe: A e B Docenti: Buscemi Letizia Ore settimanali previste: 5

Dettagli

CORSO WEB SERVER, DBMS E SERVER FTP

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

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Sistemi Operativi. Struttura astratta della memoria. Gerarchia dei dispositivi di. Memoria centrale. Memoria secondaria (di massa)

Sistemi Operativi. Struttura astratta della memoria. Gerarchia dei dispositivi di. Memoria centrale. Memoria secondaria (di massa) Struttura astratta della memoria Memoria centrale il solo dispositivo di memoria al quale la CPU puo accedere direttamente Memoria secondaria (di massa) Estensione della memoria centrale che fornisce grande

Dettagli

CAPITOLO 5 - Sistemi Operativi Moderni

CAPITOLO 5 - Sistemi Operativi Moderni CAPITOLO 5 - Sistemi Operativi Moderni PRESENTAZIONE DI INSIEME Vedremo ora come si è evoluta nel tempo la struttura di un sistema operativo, per passare dalle vecchie strutture di tipo normalmente modulari,

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Cos e` un Sistema Operativo? Cos è un sistema operativo?

Cos e` un Sistema Operativo? Cos è un sistema operativo? Cos e` un Sistema Operativo? È un programma (o un insieme di programmi) che agisce come intermediario tra l utente e l hardware del computer: fornisce un ambiente di sviluppo e di esecuzione per i programmi

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

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

Dettagli

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore Dispensa di Fondamenti di Informatica Architettura di un calcolatore Hardware e software La prima decomposizione di un calcolatore è relativa ai seguenti macro-componenti hardware la struttura fisica del

Dettagli

01/05/2014. Dalla precedente lezione. Ruolo dei sistemi operativi. Esecuzione dei programmi

01/05/2014. Dalla precedente lezione. Ruolo dei sistemi operativi. Esecuzione dei programmi Marco Lapegna Laboratorio di Programmazione Dalla precedente lezione 6. I sistemi operativi LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica I Sistemi Operativi Il linguaggi di programmazione

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Il supporto al Sistema Operativo

Il supporto al Sistema Operativo Il supporto al Sistema Operativo Obiettivi e funzioni del S.O. Il Sistema Operativo è il software che controlla l esecuzione dei programmi e amministra le risorse del sistema. Ha due obiettivi principali:

Dettagli

Il processore - CPU (CENTRAL PROCESSING UNIT)

Il processore - CPU (CENTRAL PROCESSING UNIT) Il processore - CPU (CENTRAL PROCESSING UNIT) Funzionamento Programmi e dati risiedono in file memorizzati in memoria secondaria. Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella

Dettagli

Funzionalità di un calcolatore

Funzionalità di un calcolatore Funzionalità di un calcolatore Il calcolatore: modello concettuale 1. Elaborazione 2. Memorizzazione Interconnessione 3. Comunicazione (interfaccia) Architettura di un computer componenti per elaborare

Dettagli

Software di base. Corso di Fondamenti di Informatica

Software di base. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Software di base Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

C. P. U. MEMORIA CENTRALE

C. P. U. MEMORIA CENTRALE C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato

Dettagli

Architettura dei calcolatori

Architettura dei calcolatori Architettura dei calcolatori Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007 2007 SISTEMI OPERATIVI Gestione della memoria Domande di verifica Luca Orrù Centro Multimediale Montiferru 18/06/2007 Gestione della memoria 1. Si descriva il concetto di memoria virtuale (esame del 19-06-2006)

Dettagli

Il Sistema Operativo (1)

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

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

MACCHINA DI VON NEUMANN

MACCHINA DI VON NEUMANN I seguenti appunti non hanno la pretesa di essere esaustivi, ma hanno l unico scopo di illustrare in modo schematico i concetti necessari allo sviluppo del programma di Informatica della 1D del Liceo Scientifico

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Il processore - CPU. PDF created with pdffactory trial version www.pdffactory.com

Il processore - CPU. PDF created with pdffactory trial version www.pdffactory.com Il processore - CPU (CENTRAL PROCESSING UNIT) Funzionamento o Programmi e dati risiedono in file memorizzati in memoria secondaria. o Per essere eseguiti (i programmi) e usati (i dati) vengono copiati

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo di Daniele Margutti CONTATTI Mail: daniele@malcombsd.com AIM/iChat: malcombsd Web: http://www.malcombsd.com INDICE: 1. Nota introduttiva 2. La gestione dei processi di

Dettagli

Prefazione. Contenuti

Prefazione. Contenuti Prefazione Il sistema operativo costituisce uno dei componenti fondamentali di ogni sistema di elaborazione, in particolare è quello con cui l utente entra direttamente in contatto quando accede al sistema,

Dettagli

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU Il sistema operativo Sistema operativo Gestione della CPU Primi elaboratori: Monoprogrammati: un solo programma in memoria centrale Privi di sistema operativo Gestione dell hardware da parte degli utenti

Dettagli

Parte VI SISTEMI OPERATIVI

Parte VI SISTEMI OPERATIVI Parte VI SISTEMI OPERATIVI Sistema Operativo Ogni computer ha un sistema operativo necessario per eseguire gli altri programmi Il sistema operativo, fra l altro, è responsabile di riconoscere i comandi

Dettagli

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI Informatica con esercitazioni Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo

Dettagli

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E Lezione 5: Software Firmware Sistema Operativo Architettura del Calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti: Hardware e Software Firmware: strato di (micro-)programmi

Dettagli

Lezione 3: Architettura del calcolatore

Lezione 3: Architettura del calcolatore Lezione 3: Architettura del calcolatore Architettura di Von Neumann BUS, CPU e Memoria centrale Ciclo di esecuzione delle istruzioni Architettura del calcolatore Il calcolatore è: uno strumento programmabile

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Funzioni dei Sistemi Operativi!2 Le funzioni principali del SO Gestire le risorse dell elaboratore

Dettagli

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI Buona lezione a tutti!! SISTEMI OPERATIVI Gli appunti sono disponibili per tutti gratis sul sito personale del Prof M. Simone al link: www.ascuoladi.135.it nella pagina web programmazione, sezione classi

Dettagli

Anatomia e fisiologia del computer: l architettura del calcolatore

Anatomia e fisiologia del computer: l architettura del calcolatore Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 01 Anatomia e fisiologia del computer: l architettura del calcolatore Marzo 2009 L architettura del calcolatore 1 Nota bene Alcune parti

Dettagli

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni LEZIONE 2 (HARDWARE) a.a. 2011/2012 Francesco Fontanella Tre concetti Fondamentali Algoritmo; Automa (o anche macchina); Calcolo; 2 Calcolatore MACCHINA

Dettagli

Introduzione all Informatica

Introduzione all Informatica Lezione 3 Davide Di Ruscio Alfonso Pierantonio Dipartimento di Informatica Università degli Studi dell Aquila Università degli Studi dell Aquila alfonso@di.univaq.it diruscio@di.univaq.it. Sommario 2 2»

Dettagli

Conoscere la terminologia di base attraverso la presentazione delle principali componenti hardware di un computer.

Conoscere la terminologia di base attraverso la presentazione delle principali componenti hardware di un computer. Classe 3^ Istituto Istruzione Superiore di Baronissi ind. tecnico PROGRAMMAZIONE DIDATTICA DI Sistemi e Reti Articolazione: Informatica Anno scolastico 2012-2013 MODULI CONTENUTI OBIETTIVI METODOLOGIE

Dettagli

Sistemi Operativi. Il Sistema Operativo. Gestione Risorse (3) Gestione Risorse (2) Cos'è un sistema operativo? Utenti di un SO.

Sistemi Operativi. Il Sistema Operativo. Gestione Risorse (3) Gestione Risorse (2) Cos'è un sistema operativo? Utenti di un SO. Sistemi Operativi Il Sistema Operativo Corso di Informatica Generale (Roberto BASILI) Cos'è un sistema operativo? Un sistema operativo e': La astrazione logica del livello macchina hardware e microprogrammata

Dettagli

Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A.

Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A. Il Sistema Operativo Introduzione Gestione dei processi Gestione della memoria Memoria cache (cenni) Informatica B Prof. A. Morzenti Il sistema Operativo Il sistema operativo (SO) è uno strato software

Dettagli

INFORMATICA E COMPUTER : INTRODUZIONE

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

Dettagli

INTRODUZIONE AI SISTEMI OPERATIVI

INTRODUZIONE AI SISTEMI OPERATIVI INTRODUZIONE AI SISTEMI OPERATIVI Il sistema operativo è il software che permette l esecuzione di programmi applicativi e lo sviluppo di nuovi programmi. CARATTERISTICHE Gestisce le risorse hardware e

Dettagli

Microprocessori, Microcontrollori e DSP (Digital Signal Processors)

Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Il microprocessore è un dispositivo integrato digitale che può essere programmato con una serie di istruzioni per effettuare una specifica

Dettagli

Il contesto! Gestione della Memoria! Reg. di Base e reg. Limite! Associazione tra dati/istruzioni e memoria!

Il contesto! Gestione della Memoria! Reg. di Base e reg. Limite! Associazione tra dati/istruzioni e memoria! Il contesto Gestione della Memoria Per essere eseguiti, i programmi devono essere trasferiti (dal disco) in memoria e tradotti in processi. Obiettivi: accesso rapido e protezione. Accesso rapido La CPU

Dettagli

Sistemi Operativi. ugoerr+so@dia.unisa.it 8 LEZIONE MEMORIA CENTRALE 1 PARTE CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. ugoerr+so@dia.unisa.it 8 LEZIONE MEMORIA CENTRALE 1 PARTE CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 8 LEZIONE MEMORIA CENTRALE 1 PARTE CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Introduzione

Dettagli

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare

Dettagli

Calcolatore: Elaborare: Input: Output: John von Neumann: Device: Embedded: Sistemi programmabili:

Calcolatore: Elaborare: Input: Output: John von Neumann: Device: Embedded: Sistemi programmabili: Autore: Maria Chiara Cavaliere Informatica di base Lezione 1 del 21/3/2016 Il corso di Informatica di base si baserà sulla spiegazione di tre moduli: -Architettura Hardware; -Sistema operativo; Parte teorica

Dettagli

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

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

Dettagli

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann Elementi di Informatica e Programmazione Architettura del calcolatore (prima parte) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Problema:

Dettagli

Il software. la parte contro cui si può solo imprecare. Il software

Il software. la parte contro cui si può solo imprecare. Il software Il software la parte contro cui si può solo imprecare Il software L hardware da solo non è sufficiente per il funzionamento dell elaboratore ma è necessario introdurre il software ovvero un insieme di

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO PROGRAMMA Descrizione funzionale di un calcolatore elementare, COS'E' UN ELETTRONICO HARDWARE SOFTWARE HARDWARE

Dettagli

NozionidiBase di Informatica

NozionidiBase di Informatica Università degli Studi di Parma Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica NozionidiBase di Informatica Roberto Alfieri Giulio Destri Nozioni Base di Informatica - 1 R. Alfieri e G. Destri

Dettagli

1.4a: Hardware (Processore)

1.4a: Hardware (Processore) 1.4a: Hardware (Processore) 2 23 nov 2011 Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III : cap. 3.8, 3.9 IV ediz.: cap. 2.6, 2.7 Questi lucidi 23 nov 2011

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Informatica di Base - 6 c.f.u.

Informatica di Base - 6 c.f.u. Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Informatica di Base - 6 c.f.u. Anno Accademico 2007/2008 Docente: ing. Salvatore Sorce Architettura dei calcolatori I parte Introduzione,

Dettagli

Indice. settembre 2008 Il File System 2

Indice. settembre 2008 Il File System 2 Il File System Indice 4. Il File System 5. Vantaggi del FS 6. Protezione 7. Condivisione 8. I file - 1 9. I file - 2 10. Attributi dei file 11. Directory 12. Livelli di astrazione - 1 13. Livelli di astrazione

Dettagli