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
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
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
Interazione tra processore, cache, memorie e dispositivi di I/O PROCESSORE UC ALU CLOCK L1 HARD DISK MONITOR L2 BUS MEMORIA CENTRALE LETTORE CD_ROM TASTIERA
Il Software L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: 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
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 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.)
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
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
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
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
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
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
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
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 uomomacchina
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
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
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
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
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
Esempio dat Monitor dat Tastiera BUFFER BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Disco rigido 148.608.043.200.010 timer Ogni carattere dato in input dalla tastiera viene ricevuto dal terminal driver che lo invia al monitor per la visualizzazione
Esempio date<cr> Monitor date<cr> Tastiera BUFFER BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Disco rigido 148.608.043.200.020 timer Quando viene immesso il carattere Enter <cr> il terminal driver passa la stringa date al programma listener che interpreta il comando
Esempio Monitor Tastiera BUFFER BUFFER MEMORIA CENTRALE listener directory manager file manager terminal driver disk driver Disco rigido 148.608.043.200.032 timer 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 Monitor Tastiera BUFFER BUFFER 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 Monitor Tastiera BUFFER BUFFER 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 Monitor Tastiera BUFFER BUFFER 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.