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