La memoria cache • Nello schema di funzionamento di un calcolatore il processore continuamente preleva informazioni ed istruzioni dalla memoria centrale e scrive in essa informazioni • La memoria centrale, il bus ed il processore lavorano a velocità diverse • La velocità complessiva è determinata dal componente più lento Informatica generale La memoria cache • Per accelerare questa interazione si impiega una memoria ad alta velocità localizzata tra processore e memoria centrale detta CACHE • Se il processore ha bisogno di leggere un dato o un’istruzione dalla memoria centrale la cerca prima nella cache che è molto più veloce • Se il dato o l`istruzione non si trovano memorizzati nella cache allora il processore chiede alla memoria centrale di fornire l’elemento richiesto • Ci sono alcune tecniche per decidere cosa memorizzare nella cache Informatica generale La memoria cache • Le memoria cache sono realizzate con SRAM (molto più veloci delle DRAM e molto più costose) • Si distinguono due livelli di memoria cache: • Cache di livello 1 (L1) che è integrata nel chip del microprocessore; capacità media di 256-512 KB • Cache di livello 2 (L2) che di solito è esterna al chip del microprocessore ma su circuiti molto veloci; capacità fino ad 1MB Informatica generale Interazione tra processore, cache, memorie e dispositivi di I/O PROCESSORE ALU UC CLOCK L1 HARD DISK MONITOR L2 BUS MEMORIA CENTRALE LETTORE CD_ROM TASTIERA Il Software • L’hardware da solo non è sufficiente funzionamento dell’elaboratore • È necessario introdurre il software: per il • un insieme di programmi che permettono di trasformare tanti circuiti elettronici in un oggetto in grado di svolgere delle funzioni di natura diversa • Un programma è un insieme di istruzioni che il processore può eseguire • La proprietà fondamentale dei computer è il fatto di essere programmabili Informatica generale Il Software • Una programmazione diretta della macchina hardware da parte degli utenti creerebbe delle serie difficoltà • l’utente dovrebbe conoscere l’organizzazione fisica dell'elaboratore e il suo linguaggio macchina (il tipo di istruzioni che il processore può eseguire); • ogni programma dovrebbe essere scritto utilizzando delle sequenze di bit (le istruzioni) ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso Informatica generale • programmi molto complessi (milioni di istruzioni) Il Software • Questo non è accettabile ed è necessario fornire all’utente un meccanismo per: • astrarre dall’organizzazione fisica della macchina; • usare nello stesso modo, o comunque in modo molto simile, macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware profondamente differente; • avere un semplice linguaggio di interazione con la macchina; • avere un linguaggio semplice e ad alto livello per programmare la macchina; • avere un insieme di programmi applicativi per svolgere diversi compiti (elaborazione testi, grafica, calcoli statistici, navigazione in Internet, ecc.) Informatica generale Il Software • Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale • Al di sopra della macchina hardware si crea un livello software che realizza una macchina virtuale astratta con le funzionalità desiderate e facile da utilizzare • Questa macchina si dice virtuale in quanto essa non esiste fisicamente ma viene realizzata mediante il software (software di base) Il Software di base • L’utente interagisce solo con la macchina virtuale grazie ad un opportuno linguaggio di comandi ad alto livello. • Il termine “alto livello” si riferisce al fatto che l’interazione avviene con comandi ad alto livello di astrazione (semplificazione), ovvero, che sono indipendenti dai dettagli della macchina hardware • La macchina virtuale si preoccuperà della traduzione dei comandi ad alto livello negli opportuni comandi che realizzano la stessa funzione e che sono riconosciuti dalla macchina hardware Informatica generale Il Software di base • Possiamo vedere il software di base come ad un insieme di programmi in linguaggio macchina la cui esecuzione permette di creare l'ambiente virtuale con cui l'utente si trova ad interagire • Il software di base fornisce un insieme finito di comandi che la macchina è in grado di eseguire Informatica generale Il Software di base: esempio Esempio: supponiamo che l'utente voglia stampare un file. A livello hardware questa operazione è complessa e richiede operazioni di trasferimento dati dal disco alla stampante (via memoria centrale) La macchina virtuale creata dal software di base fornisce all'utente un semplice comando di stampa: > print file1 mediante il quale si può richiedere la stampa delle informazioni contenute nel file di nome file1 Informatica generale Il Software di base: esempio • La macchina virtuale deve innanzitutto verificare se si tratta di un comando valido • Poi tradurlo nell’opportuna sequenza di comandi a basso livello per la macchina fisica • Una volta eseguito il comando, la macchina virtuale si pone in attesa di un nuovo comando da parte dell'utente • Grazie a questo livello software si può astrarre dalle caratteristiche fisiche della macchina Informatica generale Il Software di base • Si può anche fare in modo che macchine differenti siano usabili in modo simile: si tratta, infatti, di costruire al di sopra delle diverse macchine fisiche la stessa macchina virtuale • Per ogni comando della macchina virtuale si dovranno però avere diversi programmi di traduzione, uno per ogni tipo di hardware Informatica generale Tipi di funzioni fornite dal Software di base • Configurazione e accensione macchina • Gestione di informazione su memoria secondaria => FILE SYSTEM • Strumenti per accesso a tali informazioni • Gestione delle risorse • uso semplificato e astratto risorse per utente, es. stampanti, dischi, nastri ... • uso ottimale per sistema Informatica generale Tipi di funzioni fornite dal Software di base • Linguaggio di comandi astratto (semplice) per l’interazione con il sistema • Supporto per la comunicazione tra utenti e tra elaboratori • Supporto per programmi applicativi • Linguaggi e ambienti di programmazione ad alto livello Informatica generale Il Sistema Operativo L'insieme di programmi che realizza le funzionalità viste in precedenza prende il nome di SISTEMA OPERATIVO • Il sistema operativo è la componente software fondamentale di un computer • È formato da un insieme di programmi che interagiscono e cooperano tra di loro per realizzare due obiettivi fondamentali: • gestire efficientemente l'elaboratore e le sue periferiche, cercando di sfruttare al massimo tutte le componenti hardware • creare un ambiente virtuale per facilitare l'interazione uomoInformatica generale macchina Il Sistema Operativo: Esempio Il Sistema Operativo: Esempio Il Sistema Operativo: Esempio Il Sistema Operativo: Esempio • Le operazioni effettuate sembrano abbastanza semplici ma … • Provocano una serie di eventi in cui vengono coinvolte sia risorse hardware che risorse software • Il coordinamento e la gestione delle varie risorse viene effettuato dal Sistema Operativo • Il Sistema Operativo fornisce i servizi che sono necessari a tutti gli altri programmi in esecuzione Informatica generale Il Sistema Operativo: Esempio 1. Per ogni carattere immesso tramite la tastiera viene calcolato il codice ASCII corrispondente 2. Il codice viene memorizzato in un’area di memoria riservata (buffer) e viene inviato un segnale alla CPU (interrupt) 3. Quando la CPU riceve un interrupt dalla tastiera attiva un programma chiamato terminal driver 4. Il terminal driver invia al controller del monitor una copia del codice per visualizzare il carattere corrispondente Informatica generale Il Sistema Operativo: Esempio 5. Il codice corrispondente al carattere “Enter” indica che il comando immesso (date) è completo 6. Il terminal driver attiva un altro modulo chiamato listener (perché attende le richieste provenienti dagli utenti) 7. Il listener legge i caratteri dal buffer della tastiera, riconosce quale comando viene richiesto, ricerca un programma chiamato date, lo carica in memoria centrale e lo attiva Informatica generale Il Sistema Operativo: Esempio 8. Il programma date “va a leggere” un “orologio” (un contatore che tiene conto dello scorrere del tempo) e passa l’informazione letta al terminal driver attivandolo 9. Il terminal driver trasmette la data al monitor che la visualizza Informatica generale Il Sistema Operativo: Esempio Ognuno di questi eventi può essere descritto in dettaglio, per esempio vediamo la fase 7: • prima che il programma listener carichi il programma date in memoria deve localizzare la “cartella” dove tale comando si trova, ecc. • La fase di caricamento del programma comprende una fase di lettura dal disco rigido Informatica generale Esempio dat BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Monitor dat BUFFER Disco rigido 148.608.043.200.010 timer Tastiera Ogni carattere dato in input dalla tastiera viene ricevuto dal terminal driver che lo invia al monitor per la visualizzazione Esempio date<cr> BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Monitor date<cr> BUFFER Disco rigido 148.608.043.200.020 timer Tastiera Quando viene immesso il carattere Enter <cr> il terminal driver passa la stringa date al programma listener che interpreta il comando Esempio BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Monitor BUFFER Disco rigido 148.608.043.200.032 timer Tastiera Il listener richiede al directory manager di cercare (nella directory dei comandi) date. Il programma directory manager richiede al programma file manager, che a sua volta si avvale del programma disk driver, di localizzare sul disco rigido il programma date Esempio BUFFER Monitor BUFFER Tastiera MEMORIA CENTRALE date listener directory manager file manager terminal driver disk driver Disco rigido 148.608.043.200.045 timer Quando il comando date è stato localizzato (è un file eseguibile) il listener (mediante il file manager) lo carica in memoria. Per fare questa operazione il file manager utilizza il disk driver Esempio BUFFER Monitor BUFFER Tastiera MEMORIA CENTRALE date listener directory manager file manager terminal driver disk driver Disco rigido timer 148.608.043.200.101 Il listener manda in esecuzione il programma date che legge il timer ed effettua delle operazioni di conversione per trasformare il valore letto nella data del giorno Esempio 11/02/99 BUFFER Monitor BUFFER Tastiera MEMORIA CENTRALE date listener directory manager file manager terminal driver disk driver Disco rigido timer 148.608.043.200.104 Il programma date tramite il terminal driver visualizza sul monitor la data Il Sistema Operativo: esempio Sebbene le operazioni che abbiamo preso in esame “sembrino abbastanza semplici” e di uso frequente esse provocano una serie di eventi e azioni molto complesse e articolate L’immissione di un semplice carattere (tramite tastiera) può provocare l’esecuzione di una decina (o anche più) di funzionalità del S.O. Informatica generale