Cap.1 - Caratteristiche generali dei sistemi operativi 1 Introduzione pag. 52 1 SISTEMA OPERATIVO Un software (o meglio un insieme di programmi) che sovrintende il funzionamento di un computer, eseguendo molti compiti diversi. Tra i più noti: DOS (pc), ), Windows (pc), Linux (pc), Mac OS X (pc), Unix (mini), VMS (mini), MVS (mainframe),. I compiti e gli aspetti funzionali più importanti di un S.O.: 1. Gestire l’interazione Utente – Computer 2. Fornire una interfaccia tra applicazioni e risorse 3. Gestire la condivisione di risorse 4. Ottimizzare l’uso delle risorse 5. Fornire servizi per lo sviluppo del software e per l’amministrazione del Sistema Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 2 1. Interazione utente - computer L’utente interagisce con la macchina grazie all’interfaccia messa a disposizione dal S.O (shell). L’utente non deve conoscere i dettagli del funzionamento della macchina ma deve solo conoscere i comando o le modalità di svolgimento delle varie operazioni (es.: cliccare su una icona per avviare un programma, premere Canc per cancellare un file, ecc.) L’interfaccia di un S.O. può utilizzare due modalità: Modalità a linea di comando (DOS, UNIX, MVS, …) Modalità grafica (Windows, Linux, Mac OS X) In realtà i sistemi che adottano la modalità grafica consentono anche l’interazione attraverso comandi, per utenti più esperti. Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 3 2. Interfaccia tra applicazioni e risorse Le applicazioni software possono interfacciarsi con la macchina senza conoscerne i dettagli di funzionamento. Il S.O. fornisce i servizi necessari per lo svolgimento dei diversi compiti. Il programma deve solo sapere come utilizzare questi servizi. In questo modo scrivere programmi è molto più semplice. Es.: un programma di video scrittura (es. Word) deve salvare un testo. • Il programma prepara i dati da salvare su disco (il testo creato dall’utente) e invia una richiesta al s.o. • Il S.O. preleva i dati dalla memoria centrale e li copia su disco. • Il programma non deve conoscere i dettagli dell’operazione (a che indirizzo di memoria si prelevano i dati, in quale posizione su disco vanno salvati, ecc.). Queste informazioni le conosce e le gestisce il sistema operativo. Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 4 3. Gestire la condivisione di risorse Le risorse di un computer sono: CPU, memoria centrale, memorie di massa (disco, ecc.), periferiche. Queste risorse devono poter essere utilizzate da diversi utenti o programmi, a volte anche “contemporaneamente”. Ma i diversi programmi non devono intralciarsi a vicenda. Es: • CPU: la usano molti programmi: chi ha la precedenza? quanto tempo può usarla? • Memoria centrale: quanto spazio può occupare un programma? Come evitare che un programma scriva sullo spazio di un altro? • Disco: dove e come registrare un file? Come gestire gli spazi disponibili? Come garantire la riservatezza dell’accesso a un file? • Periferiche (es. stampante): diversi utenti o programmi lanciano contemporaneamente un stampa. Come evitare che le stampe si mescolino? Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 5 4. Ottimizzare l’uso di risorse Le risorse condivise devono essere utilizzate in modo efficiente. Devono essere evitati sprechi e sotto-utilizzi. Es: • CPU: se diversi programmi la richiedono, bisogna evitare che rimanga inutilizzata in certi momenti. • Memoria centrale: non basta mai! Bisogna evitare di tenere in memoria dati che al momento non sono utilizzati. Bisogna evitare che un programma occupi aree di memoria più grandi di quelle di cui ha bisogno. • Disco: gli accessi a disco richiedono molto tempo. Bisogna cercare di minimizzare questi tempi. Gli spazi disponibili devono essere usati in modo efficiente. • Periferiche: considerazioni analoghe valgono per diversi tipi di periferiche. Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 6 5. Fornire servizi per la gestione e l’amministrazione del computer Il S.O. deve mettere a disposizione dell’utente (o dell’amministratore di sistema) i servizi attraverso cui controllare l’uso del computer e delle sue risorse. Es: • Quanto spazio è occupato sul disco? Come si fa a liberare spazio? • Quali programmi stanno usando molta memoria? Quali stanno monopolizzando il processore? • Come modificare i diritti di accesso a un file o a una cartella? Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 7 Alcune caratteristiche di un S.O. Multiutenza / Monoutenza Un sistema multiutente (multiuser) consente a diversi utenti (anche decine o centinaia) di utilizzare lo stesso computer contemporaneamente mediante dei “terminali”. In un sistema monoutente solo un utente per volta può usare il computer. Multitasking / Monotasking In un sistema multitask possono essere in esecuzione diverse applicazioni in uno stesso intervallo di tempo. In un sistema monotask, una sola. Quando le applicazioni possono essere di diversi utenti si usa anche il termine multiprogrammazione. Dos: monoutente, monotask Windows XP, Mac OS-X: monoutente, multitask Unix, Linux, VMS: multiutente, multitask (o multiprogrammato) Caratt. gen. dei sis.op. (2.1, Introduzione, pag.52-54) 8 Cap.2 - Caratteristiche generali dei sistemi operativi 2 Risorse hardware e software del computer pag. 54 9 Computer System = Sistema per l’elaborazione di dati Un computer system comprende: hardware, sistema operativo, software (di sistema e applicativo) Utenti finali I programmatori interagiscono direttamente con il S.O. tramite le System Call Ogni strato usa servizi e funzionalità del livello sottostante … Software Applicativo Word, Excel, Giochi, browser, ecc. Software di Sistema Shell, editor, Compilatori, Loader, DBMS, ecc. Programmatori di applicazioni Sistema operativo Programmatori di sistema Hardware con qualche eccezione es. DBMS che gestiscono direttamente l’Hw per una migliore efficienza Caratt. gen. dei sis.op. (2.2, Risorse, pag.54-58) 1 0 System call = Chiamate a sistema Possono essere effettuate dal linguaggio assembly e da alcuni linguaggi ad alto livello, come C. Sono note anche come API (Application Programming Interface). Permettono di interagire direttamente con il S.O. per richiederne i servizi (es.: aprire un file, avviare un programma, ecc.) Il S.O. dal p.d.v. dell’utente finale Per l’utente finale il computer è essenzialmente un esecutore di applicazioni. L’utente interagisce con il sistema solo attraverso la shell (shell dei comandi oppure shell grafica) Shell Sistema Operativo Caratt. gen. dei sis.op. (2.2, Risorse, pag.54-58) 1 1 Shell a comandi Prompt dei comandi Comando richiesto dall’utente Risposta dal S.O. 12 Shell grafica Caratt. gen. dei sis.op. (2.2, Risorse, pag.54-58) 13 KERNEL di un S.O. Il kernel (nucleo) di un s.o. ha il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware e di gestire il processore. Di solito il kernel è sempre residente in memoria centrale, pronto per l’esecuzione. Nota: • In alcuni s.o. (detti a kernel monolitico) il kernel comprende anche i meccanismi di gestione di altre risorse (es. Linux). L’intero sistema operativo tende a identificarsi con il nucleo. • In altri s.o. (detti a microkernel) le funzioni del kernel riguardano il minimo indispensabile cioè la gestione del processore e dei processi. Le altre risorse sono gestite da processi separati. • Altri s.o. (detti a kernel ibrido, tra cui Windows NT e successivi) sono dei microkernel che includono anche funzioni aggiuntive rispetto alla sola gestione dei processi. Ogni processore moderno può funzionare in due modalità: riservata e utente. • Modalità riservata: possono essere eseguiti tutti i tipi di istruzioni. • Modalità utente: per ragioni di sicurezza, può essere eseguito solo un sottoinsieme di istruzioni. La modalità riservata è anche detta modalità supervisor, modalità kernel, o modo di sistema. Solo il Sistema Operativo deve poter eseguire istruzioni in modalità riservata. Caratt. gen. dei sis.op. (2.2, Risorse, pag.54-58) 14 Cap.2 - Caratteristiche generali dei sistemi operativi 3 Caratteristiche dei primi sistemi operativi pag. 58 15 Evoluzione dei S.O. memoria • Primi calcolatori (anni 40): nessun s.o. Il programma in codice binario viene caricato direttamente in memoria. Ingressi e uscite mediante lettori e perforatori di schede. Programma • Successivamente, passaggio ai linguaggi simbolici (assembly). Si carica in memoria il programma e l’assemblatore. memoria • Sistemi batch (anni 50). Compaiono i primi linguaggi ad alto livello (fortran). Il programma viene compilato, linkato, eseguito. Ogni lavoro dell’utente è chiamato job. L’input e l’output avviene mediante lettori di schede e stampe risultati. I programmi non sono interattivi. Il sistema è monoprogrammato. Viene eseguito un solo job per volta. Interprete JCL Routine di servizio Programmi utente e di sistema Caratt. gen. dei sis.op. (2.3, I primi s.o., pag.58-61) 16 Nei primi sistemi batch e in generale in un sistema monoprogrammato la CPU risulta sempre sottoutilizzata. Perché? Esiste una netta differenza nei tempi di accesso alla memoria centrale e alle memorie di massa (da 1000 a 10000 volte). Es.: anni ’60: istruzioni eseguite in … microsecondi, operazioni su disco in … centesimi di secondo oggi: istruzioni eseguite in … nanosecondi, operazioni su disco in … millisecondi. Anche se le velocità attuali sono molto maggiori, in proporzione la differenza tra i due tipi di accesso è sempre altissima. Quando un programma deve effettuare anche una singola operazione di lettura (input) o scrittura (output) di dati su disco, la CPU rimane inutilizzata, in attesa del completamento. Di solito la maggior parte del tempo di esecuzione di un job è dovuta all’I/O, solo una piccolissima percentuale è tempo di uso della CPU. Caratt. gen. dei sis.op. (2.3, I primi s.o., pag.58-61) 17 Esecuzione monoprogrammata: esempio Programmi: P1 e P2. Tcpu = Tempo utilizzo della CPU Ti/o = Tempo per input /output Ttot = Tempo totale = Tcpu + Ti/o Esecuzione in sequenza: P2 deve aspettare che termini P1, anche se nei primi 12 ms la CPU in realtà è quasi sempre libera! Altro problema: I job possono avere differenti durate. Es.: P1 (3 ore), P2 (5 ore), P3 (2 minuti) . Se i job vengono eseguiti in questo ordine, P3 deve aspettare 8 ore. Come si può minimizzare il tempo medio di attesa? Caratt. gen. dei sis.op. (2.3, I primi s.o., pag.58-61) 18 Cap.2 - Caratteristiche generali dei sistemi operativi 4 Sistemi operativi multiprogrammati pag. 61 19 S.O. multiprogrammati Anni ’60: Per migliorare l’utilizzazione della CPU si passa al concetto di elaborazione batch multiprogrammata. memoria Multiprogrammazione • Più programmi sono contemporaneamente residenti in memoria centrale. Sistema operativo P1 • Quando il programma in esecuzione deve fare un’operazione di i / o, la CPU, invece di rimanere inattiva, inizia ad eseguire un altro programma. • Grado di multiprogrammazione = numero programmi residenti in memoria • Maggiore è il Gmp , minore è la probabilità che la CPU rimanga inattiva. P2 Si presentano però nuove problematiche e nuove esigenze: P3 1. Necessità di protezione della memoria da accessi illeciti 2. Controllare l’uso della CPU e evitare la monopolizzazione 3. Limitare l’intervento della CPU nelle operazioni di lettura / scrittura su disco (introduzione del DMA) 4. Gestione degli interrupt 5. Tecniche di spooling per l’input / output Caratt. gen. dei sis.op. (1.4, s.o. multiprog., pag.61-63) 20 1. Protezione della memoria memoria Utilizzo di registri limite Sistema operativo • I due registri vengono caricati al momento in cui il programma entra in esecuzione. P1 24568 • L’hardware controlla che ogni indirizzo rientri nei limiti ammessi, altrimenti interrompe l’esecuzione e dà il controllo al s.o. P2 35897 P3 2. Controllo dell’uso della CPU E’ necessario utilizzare un timer • Quando scade il tempo limite prefissato il controllo deve tornare al s.o. 3. Evitare di impegnare la CPU nel controllo di operazioni di i/o Si introduce il DMA (Direct Memory Access) • Il DMA si occupa di gestire autonomamente il trasferimento di dati da disco a memoria centrale e viceversa. • Il processore deve solo inizializzare l’operazione. Durante il trasferimento dei dati la CPU può eseguire altri programmi. Caratt. gen. dei sis.op. (1.4, s.o. multiprog., pag.61-63) 21 4. Gestione degli interrupt • L’interruzione può avvenire per vari motivi (es: violazione di memoria, necessità di effettuare i/o, ecc.) • Il s.o. deve interrompere il programma in esecuzione, salvando lo stato di esecuzione, in modo da poterlo fare riprendere successivamente dal punto in cui era stato interrotto. • Far partire un altro programma. 5. SPOOL per le operazioni di input / output SPOOL = Simultaneous Peripheral Operation On Line • In ambiente multiprogrammato due programmi in esecuzione (processi) che effettuano stampe potrebbero produrre in stampa righe mescolate. (Il problema è analogo per la lettura da un lettore di schede) • La tecnica dello spooling consiste nell’utilizzare un’apposita area del disco per effettuare virtualmente le operazioni di input / output. • In questo modo non è necessario bloccare l’esecuzione di un programma fino a quando il primo non ha terminato la sua stampa. P1 Disco Stampe di P1 Stampe di P2 P2 Processo di spool del s.o. Caratt. gen. dei sis.op. (1.4, s.o. multiprog., pag.61-63) 22 Multiprogrammazione Esercizio: Calcolare la percentuale di utilizzo della CPU in caso di multiprogrammazione ed in caso di monoprogrammazione P1: 1ms di cpu, 6ms di i/o, 01 ms di cpu , 4ms di i/o (12 ms in tutto) P2: 2ms di i/o, 6ms di CPU, 2 ms i/o (10 ms in tutto) Inizia P1 Attenzione: solo un programma per volta usa la CPU. Le operazioni di I/O possono invece avvenire in parallelo. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 P1 P2 Multiprogrammazione P2 termina dopo 11 ms P1 termina dopo 14 ms T cpu = 8 ms T tot = 14 ms Perc. utilizzo CPU = Tcpu / Ttot = 57% Monoprogrammazione P1 termina dopo 12 ms P1 termina dopo 22 ms T cpu = 8 ms T tot = 22 ms Perc. utilizzo CPU = Tcpu / Ttot = 36% Caratt. gen. dei sis.op. (1.4, s.o. multiprog., pag.61-63) 23 Cap.2 - Caratteristiche generali dei sistemi operativi 5 Sistemi time sharing e sistemi basati sulla priorità pag. 63 24 La multiprogrammazione così come descritta in precedenza tende a privilegiare i programmi CPU bound. Programmi CPU bound = programmi che utilizzano per la maggior parte del tempo la CPU e fanno poco I/O Programmi I/O bound = programmi che per la maggior parte del tempo fanno I/O e utilizzano poco la CPU I programmi interattivi (che sono I/O bound) sono fortemente penalizzati. Per evitare il problema si introducono le tecniche di time sharing e di priorità. Multiprogrammazione con priorità • Ai programmi si assegna una priorità. Al momento di mandare in esecuzione un programma il s.o. sceglie quello con la priorità più alta. Se è in esecuzione uno a priorità più bassa, questo viene interrotto. Multiprogrammazione con time sharing (divisione di tempo) • E’ tipica dei sistemi interattivi. • Il tempo di CPU viene suddiviso tra i diversi programmi in esecuzione. • La politica più semplice è nota come Round Robin. I sistemi operativi attuali adottano entrambe le tecniche (priorità e time sharing) Caratt. gen. dei sis.op. (2.5, time sharing, pag.63-64) 25 Politica ROUND ROBIN • E’ la politica di divisione del tempo più semplice • I programmi sono tutti considerati paritari e sono inseriti in una coda. • Ad ognuno viene assegnato un quanto di tempo (time slice), uguale per tutti. • Se allo scadere del time slice il programma è ancora in esecuzione viene interrotto e torna in coda. • Se richiede un I/O prima dello scadere del time slice torna in coda. • A rotazione vengono eseguiti tutti per un time slice finché non terminano. P1 entra in esecuzione (max per un time slice) P5 P4 P3 P2 P1 CPU Allo scadere del time slice: P1 torna in coda ed entra in esecuzione P2 P1 P5 P4 P3 P2 CPU P1 Caratt. gen. dei sis.op. (2.5, time sharing, pag.63-64) 26 Parallelismo reale e simulato Le tecniche di time sharing permettono di realizzare un parallelismo virtuale tra i programmi in esecuzione (pseudo-parallelismo o parallelismo simulato). Ogni programma è eseguito come se avesse a disposizione il processore e lo potesse usare solo lui. In realtà il processore esegue a turno e a rotazione tutti i programmi ma in ogni istante è in esecuzione un solo programma. Se il time slice assegnato è abbastanza breve (di solito pochi millisecondi o anche meno), l’utente non percepisce nessuna discontinuità nell’esecuzione. Per aver un parallelismo reale (e non simulato) è necessario avere più processori. Esempio: architetture SMP (Simmetric Multi Processor) CPU CPU CPU CPU Memoria Caratt. gen. dei sis.op. (2.5, time sharing, pag.63-64) 27 Cap.2 - Caratteristiche generali dei sistemi operativi 6 Funzioni e struttura del sistema operativo pag. 65 28 Risorse di un sistema Un S.O. deve gestire le risorse di un sistema di elaborazione (computer). Le risorse principali sono: Processore/i: il s.o. deve decidere come quando e a quali processi assegnare la CPU Memoria centrale: come e quanta memoria assegnare a ogni processo Dispositivi di I/O: gestire i trasferimenti di dati da e verso le periferiche e le mem. di massa Informazioni: organizzare il sistema di gestione dei file (file system) Per questi compiti cosa è necessario? Tenere conto dello stato delle risorse. Servono strutture dati per sapere ad es. se e quanta memoria è disponibile, se il processore è libero o no, ecc. Politiche per l’allocazione di risorse. Es.: con quali criteri assegnare o togliere memoria, come assegnare il processore, ecc. Metodi per allocare e togliere risorse ai processi. Strumenti hardware e software per assegnare o togliere memoria, per allocare un processo, per avviarlo o interromperlo, ecc. Il Sistema Operativo è un software di grande complessità. L’architettura e il modello organizzativo di un S.O. è molto importante sia per progettarlo che per comprenderne il funzionamento. Caratt. gen. dei sis.op. (2.6, funz.&strut. s.o., pag.65-67) 29 Modello a strati di un sistema operativo 5. Shell dei comandi 4. Gestione informazioni 3. Gestione periferiche 2. Gestione memoria 1. Gestione processi e processore Hardware Ogni livello ha compiti specifici. Utilizza servizi del livello inferiore e offre servizi al livello superiore. Ogni livello è visto come una macchina virtuale. Ogni livello opera sulla macchina virtuale del livello inferiore e costruisce una macchina virtuale più potente. Ogni livello non deve preoccuparsi di come sono gestite le problematiche del livello sottostante. 1. Gestione processore. Fornisce una macchina virtuale che funziona come se ogni processo avesse un suo processore privato. Il livello superiore non deve più preoccuparsi della condivisione della risorsa processore. 2. Gestione memoria centrale. Fornisce una macchina virtuale in cui ogni processo ha un suo processore e una memoria tutta a sua disposizione. 3. Gestione periferiche. Fornisce una macchina virtuale in cui ogni processo oltre alle risorse precedenti ha anche delle periferiche dedicate. 4. Gestione informazioni . Fornisce una macchina virtuale in cui ogni programma in esecuzione interagisce con le proprie informazioni in modo riservato. 5. Shell. Le applicazioni girano (cioè sono eseguite) su una macchina virtuale completamente dedicata all’applicazione stessa. L’utente finale opera sulla macchina virtuale di alto livello, molto più potente e facile da utilizzare rispetto alla macchina reale (hardware). Caratt. gen. dei sis.op. (2.6, funz.&strut. s.o., pag.65-67) 30 Architettura a microkernel Il nucleo del sistema operativo esegue un minimo di funzioni essenziali (gestione processore, interruzioni, comunicazioni tra processi, …). Tutte le altre funzioni sono svolte fuori dal kernel e trattate alla stregua di applicazioni. Solo il kernel del s.o. è eseguito in modalità riservata, tutto il resto opera in modalità utente. Gestione della memoria Microkernel Gestione dell’ I / O Hardware Gestione delle informazioni Gestione processi e processore Shell dei comandi Vantaggi: Sistemi operativi più semplici e flessibili. Aggiornamento e manutenzione semplificata (si aggiornano delle applicazioni). Comunicazioni tramite scambio di messaggi tra i diversi componenti del s.o. Caratt. gen. dei sis.op. (2.6, funz.&strut. s.o., pag.65-67) 31 Kernel Monolitico vs. Microkernel • Nei S.O. a kernel monolitico il kernel comprende i meccanismi di gestione del processore ma anche di tutte le altre risorse (es. Linux). L’intero sistema operativo tende a identificarsi con il nucleo. • Nei S.O. a microkernel le funzioni del kernel riguardano il minimo indispensabile cioè la gestione del processore e dei processi. Le altre risorse sono gestite da processi separati. • Nei S.O. a kernel ibrido (tra cui Windows NT e successivi) si ha un microkernel che include anche funzioni aggiuntive per migliorare le prestazioni. Kernel monolitico Svantaggi: • maggiore complessità di integrazione di nuovo codice • se si aggiunge nuovo hardware bisogna ricompilare il kernel. Tuttavia i kernel monolitici più moderni come il Kernel Linux e FreeBSD possono caricare dei moduli in fase di esecuzione. Vantaggi: • È più semplice progettarli correttamente • quando l'implementazione è completa e sicura, la stretta integrazione interna dei componenti rende un buon kernel monolitico estremamente efficiente. Microkernel Sistemi operativi più semplici e flessibili nell’aggiornamento e nella manutenzione (si aggiornano delle applicazioni). Caratt. gen. dei sis.op. (informazioni complementari) 32 Cap.2 - Caratteristiche generali dei sistemi operativi 8 La memoria cache e la gerarchia delle memorie pag. 76 33 Contrariamente a ciò che si potrebbe pensare le prestazioni di un processore non sono direttamente proporzionali alla velocità del processore. Ad esempio raddoppiando la velocità del processore i tempi di esecuzione non raddoppiano. Come mai? I tempi di accesso alla memoria centrale sono in proporzione molto più alti dei tempi di accesso ai registri e dei tempi della ALU. Esempio: Esecuzione istruzione: MUL 2A8C (moltiplica il contenuto di memoria all’indirizzo 2A8C per il contenuto del registro AL e mette in AX il risultato) Ipotizziamo i seguenti tempi: • 2 ns trasferimento dati dal registro all’ALU e viceversa • 6 ns esecuzione prodotto • 70 ns trasferimento dati da memoria 3° moltiplica zione CPU Memoria ALU 4° 2° 1° Registro 2A8C 45 AX Tempo totale = (2 + 70 + 6 + 2) ns = 80 ns Immaginiamo di raddoppiare la velocità del processore. Si dimezza il tempo di esecuzione del prodotto, ma non il tempo di trasferimento da CPU a memoria centrale e viceversa. Tempo totale = (1 + 70 + 3+ 1) ns = 75 ns Il miglioramento ottenuto è di 5 ns su 80 ns (appena il 6%) Caratt. gen. dei sis.op. (2.8, memoria cache e gerarchia memorie, pag.76-78) 34 La velocità dei processori è molto maggiore di quella dell’accesso alla RAM. Esistono però delle memorie ad accesso molto più veloce (memorie associative), ma sono troppo costose per sostituirle alla RAM. La soluzione è quella di creare un livello intermedio tra memoria centrale e CPU: la memoria cache. RAM cache abcdef CPU abcdef • Il processore cerca una parola di memoria nella cache. • Se la parola non è in cache, viene trasferita dalla RAM alla cache, insieme a un blocco di locazioni vicine (es: 8 locazioni). • E’ molto probabile che entro breve tempo si dovrà accedere a queste locazioni (principio di località). • Si possono anche avere più livelli di cache tra memoria centrale e CPU (cache livello1, cache livello2, ecc.). Lo stesso principio si può applicare a tutti i supporti di memorizzazione, costituendo una Gerarchia delle Memorie. Tipo memorie volatili Tempo accesso Livelli gerarchia Capacità 1 ns Registri CPU < 1 KB 2-5 ns Memorie cache 1-2 MB 20-200 ns Memoria centrale (RAM) 1-4 GB 20-30 ns Dischi magnetici 50-1000 GB Diversi secondi Nastri magnetici > 100 GB Freq. accessi Quantità dati trasferiti per operaz. Costo per bit permanenti Caratt. gen. dei sis.op. (2.8, memoria cache e gerarchia memorie, pag.76-78) 35 Obiettivo della gerarchia delle memorie Si vuole fare in modo che: • Memorie più lente e più capienti: si accede meno frequentemente ma si trasferiscono più dati per volta. • Memorie più veloci e meno capienti: si accede più frequentemente ma si trasferiscono meno dati per volta Si cerca così di realizzare un sistema in cui virtualmente la memoria complessiva ha capacità che si avvicinano a quelle delle memorie fisiche più grandi (dischi, nastri) e tempi di accesso vicini a quelli delle memorie più veloci (registri, cache). Trasferimento dati nei registri della CPU Lettura nelle cache successive Lettura dati da disco Lettura da RAM a cache L3 Fare click per iniziare lettura dati Registri Cache L1 Cache L2 Cache L3 RAM Caratt. gen. dei sis.op. (2.8, memoria cache e gerarchia memorie, pag.76-78) Memoria di massa 36 Il meccanismo delle memorie cache e in generale l’organizzazione gerarchica delle memorie, rende l’accesso ai dati più efficiente in quanto gli accessi in memoria non avvengono in modo totalmente casuale. Valgono infatti i PRINCIPII DI LOCALITA’. 1. Principio di località temporale: se un programma accede a una data locazione di memoria è molto probabile che dovrà accedere di nuovo alla stessa locazione entro breve tempo. Ciò implica che quando si deve accedere ad un dato che si trova in una memoria relativamente lenta, convenga trasferire il dato per un certo periodo in una memoria più veloce in modo che gli accessi successivi siano più efficienti. 2. Principio di località spaziale: se un programma accede a una data locazione di memoria è molto probabile che dovrà accedere entro breve tempo a locazioni di memoria vicine. Ciò implica che quando si deve accedere ad un dato che si trova in una memoria relativamente lenta convenga trasferire in una memoria più veloce anche i dati ad esso vicini, in modo che gli accessi a tali dati siano più efficienti. Esempi: 1. Località Temporale.: L’accesso alla variabile i indice di un ciclo, es.: for (i=0;i<10000;i++){…}. La lettura del codice di una istruzione del loop. 2. Località Spaziale: L’accesso agli elementi di un array. La lettura delle istruzioni di un programma Trasferimento dati nei registri della CPU Lettura nelle cache successive Lettura dati da disco Lettura da RAM a cache L3 Fare click per iniziare lettura dati Registri Cache L1 Cache L2 Cache L3 RAM Memoria di massa