02-Architettura [modalità compatibilità]

Università degli Studi di Cagliari
Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica e Meccanica
Sommario
FONDAMENTI DI INFORMATICA 1
Breve storia dell’informatica e dei calcolatori elettronici
Calcolatori elettronici come esecutori di algoritmi
Architettura di Von Neumann
http://www.diee.unica.it/~marcialis/FI1
A.A. 2010/2011
Docente: Gian Luca Marcialis
ARCHITETTURA DEI CALCOLATORI
SISTEMI OPERATIVI
la memoria centrale
l’unità centrale di elaborazione (CPU)
i dispositivi di ingresso e uscita
il bus di sistema
estensioni dell’architettura di Von Neumann
Il Sistema Operativo: cenni
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
La preistoria (metodi e modelli teorici)
Breve storia dell’informatica
La storia dell’informatica non inizia con quella del suo
strumento principale (il calcolatore), nel XX secolo, ma
ha radici in discipline molto antiche come l’aritmetica
Si può considerare la sua evoluzione da tre punti di vista
metodi e modelli teorici alla base della disciplina
strumenti hardware (calcolatori, reti,...) e software (sistemi operativi,
linguaggi di programmazione,...)
applicazioni
Informatica: disciplina dell’elaborazione
rigorosa dell’informazione
Primi elementi di informatica si trovano in:
precisa
e
Euclide, 300 a.C. circa (es.: algoritmo per il calcolo del MCD)
Aristotele , 384-322 a.C. (es.: sillogismi, codifica rigorosa di alcuni
sistemi di ragionamento umano)
XX sec.: assiomatizzazione dell’aritmetica (G. Peano) e definizione di
Algebra Booleana (G. Boole)
anni ’30 (XX sec.): sviluppo della teoria degli algoritmi e della loro
esecuzione automatica (Church, Gödel, Turing)
3
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
2
4
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
La preistoria (i primi strumenti
meccanici)
Gli anni ’30 - ’50: l’era dei Colossi
Anni ’30 - ’40
Primi calcolatori meccanici: XVII sec.
Pascal (1642): addizione e sottrazione
Leibniz (1700): le 4 operazioni fondamentali
Nuove idee solo 150 anni più tardi!
Babbage (1834): “motore analitico” (a vapore), un calcolatore programmabile,
capace di eseguire istruzioni elementari per risolvere diversi problemi
XX sec.: inizia l’era calcolatori general purpose
uno stesso calcolatore può essere programmato per svolgere compiti
diversi (es. elaborazione testo, calcoli scientifici, posta elettronica, ecc.)
1936: primo calcolatore elettromeccanico
(funzionante con relé)
1943: primo calcolatore elettronico (valvole
termoioniche): il Colosso Mark I, progettato
per la decifratura del codice Lorenz
1946: ENIAC - J. Von Neumann per
applicazioni militari (calcoli balistici): è
considerato il primo calcolatore moderno
Anni ’50
applicazione principale: calcoli numerici per
elaborazioni scientifiche
limitazioni fisiche: tecnologia delle valvole
elettroniche
sviluppo dei linguaggi Assembler e dei primi
linguaggi di alto livello
5
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Gli anni ’60 e ’70: dal salone alla
scrivania
Gli anni ’80 e ’90: dalla scrivania alla
tasca
Anni ’60
Anni ’80
nuovi metodi di progettazione del software
(Ingegneria del Software)
tecnologia dei semiconduttori (minori
dimensioni dei calcolatori, maggiore
affidabilità)
sviluppo dei primi Sistemi Operativi e sistemi
di gestione di basi di dati
strumenti di sviluppo per harware e
software
elaborazione distribuita
− interazione
tra
tecnologia
informatica e telecomunicazioni:
nascita della telematica
nuove applicazioni: controllo dei
processi
industriali,
calcolatori
embedded (centraline elettroniche per
auto, elettrodomestici ecc.)
Anni ’70
rapido sviluppo dell’hardware (maggiore
potenza di calcolo, riduzione di costi e
dimensioni): primi personal computer
linguaggio C, sistema operativo Unix
applicazioni diverse da quelle scientifiche
Anni ’90
reti di calcolatori, Internet
rapida obsolescenza dei
hardware e software
7
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
6
prodotti
Finalmente il 2000…
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
8
Definizione di algoritmo
Algoritmi e programmi
Sequenza precisa (comprensibile) di passi elementari
che consentono di realizzare un compito
passi elementari: eseguibili dall’esecutore dell’algoritmo
es.: istruzioni di montaggio di un mobile, prelevamento di denaro da un
terminale Bancomat, calcolo del massimo comun divisore di due
numeri naturali...
Compito principale di un calcolatore:
esecuzione di un algoritmo espresso sotto forma di programma
programma: sequenza di operazioni elementari (direttamente eseguibili
dal calcolatore) su dati codificati in forma binaria
Ogni calcolatore mette a disposizione un certo numero
(finito) di operazioni elementari su dati rappresentati in
codifica binaria
Qualsiasi algoritmo deve essere espresso come
sequenza di operazioni elementari effettivamente
eseguibili dal calcolatore (programma)
es.: molti calcolatori non forniscono l’operazione di estrazione della
radice quadrata, ma solo le operazioni di somma e prodotto;
l’estrazione della radice quadrata deve essere espressa come
sequenza di somme e prodotti
9
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
10
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Architettura di un calcolatore
Architettura di Von Neumann
Con il termine “architettura” di un calcolatore
intenderemo l’insieme delle parti e delle loro
interconnessioni che consentono determinate
funzionalità “visibili” al programmatore
Es. un calcolatore mette a disposizione un’operazione per fare la
somma di due numeri. Questa operazione fa parte dell’architettura del
calcolatore e potrà essere usata dal programmatore
L’architettura
astrazione
può
essere
vista
a
vari
livelli
di
Livello puramente “fisico”: unità centrale, tastiera, monitor, disco
Livello “logico” (nel senso “non fisico”) o delle istruzioni: architettura di
Von Neumann
11
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Bus di sistema
CPU
Memoria
centrale
Periferica1
(I/O)
Periferica2
(I/O)
...
Dispositivi di ingresso e uscita (I/O)
12
Componenti dell’architettura di Von
Schema di funzionamento della
macchina di Von Neumann
Neumann
Memoria centrale
I programmi sono composti da istruzioni codificate in binario:
contiene i programmi in esecuzione e i dati su cui operano
Unità di elaborazione (Central Processing Unit, CPU)
contiene i dispositivi elettronici in grado di eseguire le istruzioni
(operazioni elementari) del programma, e di coordinare il
funzionamento dell’intero calcolatore
Periferiche
dispositivi che permettono l’ingresso e l’uscita (I/O) delle informazioni
(dati e programmi). Es.: tastiera, monitor, stampante, ecc.
istruzioni di elaborazione (ad es. operazioni numeriche)
istruzioni di trasferimento di dati tra due componenti della macchina
Il funzionamento della macchina di Von Neumann è un ciclo
continuo:
la CPU estrae le istruzioni dalla memoria principale...
...le decodifica (determina l’operazione da eseguire e i gli operandi)...
...e le esegue
Bus di sistema
collega i diversi componenti dell’architettura
13
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Il modulo di memoria
La memoria centrale
Quattro livelli:
Registri, capaci di memorizzare parole singole
− Tipicamente dati “in transito” relativi ad un particolare dato o
istruzione in esecuzione
Memoria cache
− Area di memoria ad accesso rapido finalizzata a contenere
istruzioni e dati usati più frequentemente
Memoria centrale o primaria
− Contiene istruzioni e dati del programma in esecuzione
Memoria secondaria
− Fa parte dei moduli periferici
15
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
14
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Conserva le istruzioni e i dati dei programmi in esecuzione
Dati memorizzati in bit (binary digit): ogni unità elementare di memoria
contiene un’informazione di tipo binario: 1 oppure 0
realizzazione mediante dispositivi fisici a due stati (transistor a semiconduttori, due
livelli di tensione)
E’ organizzata come sequenza di celle o parole:
Parola: insieme di più byte (una potenza di 2: tipicamente 1, 2, 4, 8)
Byte: insieme di 8 bit
Ogni cella è individuata da un indirizzo:
numero che indica la posizione relativa rispetto alla prima cella, che ha indirizzo 0
Parallelo tra:
− Indirizzo == numero di collocazione in una biblioteca
− Cella == scaffale corrispondente alla collocazione
− Contenuto (Dato) == libro
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
16
Struttura della memoria centrale
Capacità della memoria
Con un registro indirizzi di k bit, si possono indirizzare 2k
parole di memoria: gli indirizzi vanno da 0 a 2k-1
Può essere pensata come una tabella:
ogni riga corrisponde ad una “word”
il numero di colonne è pari al numero di bit componenti la “word”
Es.: memoria con parole da un byte (8 bit)
Indirizzo delle celle
000 (0)
001 (1)
010 (2)
011 (3)
100 (4)
...
bit
7
6
5
4
3
2
1
0
es.: k=10: 210 = 1024 celle (una kilo-parola)
k=20: 220 = 1048576 celle (una mega-parola)
La capacità della memoria si misura sempre in byte
(non si esprime in “parole”, che, a seconda della
memoria, possono avere dimensioni differenti)
es.: k=10, parole di 2 byte: 2⋅210=211=2048 byte (2 kilo-byte)
k=20, parole di 4 byte: 4⋅220=22⋅220=222=4194304 byte (4 mega-byte)
17
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Caratteristiche della memoria centrale
Velocità di accesso elevata: decine di ns (10-9 sec)
Tempo di accesso indipendente dalla posizione del dato
nella memoria
RAM: Random Access Memory
si contrappongono alle memorie ad accesso sequenziale, come i nastri
magnetici
Dimensione limitata: oggi alcuni GB
230 byte = 1073741824 byte ≅ 109 byte (un giga-byte)
L’informazione viene persa se
l’alimentazione elettrica (volatilità)
18
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
si
interrompe
Memorie RAM e ROM
Un valore può essere memorizzato/recuperato dalla
memoria specificando l’indirizzo
il tempo di accesso è indipendente dall’indirizzo (ecco perché il nome
di RAM)
Memorie ROM (Read Only Memory)
sono memorie di sola lettura, pre-impostate dal fabbricante
sono di fatto memorie RAM (ROM e RAM non sono termini
contrapposti!) ma non sono volatili
tipicamente contengono le istruzioni per l’avvio del calcolatore
(firmware)
sono usate anche in auto, elettrodomestici, ecc.
19
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
20
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Il processore
Insieme di istruzioni di una CPU
Il Processore (CPU, Central Processing Unit) contiene tre elementi
funzionali:
Unità di controllo:
−
−
−
−
recupera le istruzioni dalla memoria centrale
decodifica le istruzioni
preleva i dati necessari e li trasferisce alle unità coinvolte nell’esecuzione
invia i segnali di controllo alle unità coinvolte nell’esecuzione
Unità Aritmetico-Logica (ALU, Arithmetic and Logic Unit)
− Modulo capace di eseguire un certo insieme di operazioni aritmetiche e
logiche
Orologio (clock) di sistema
− sincronizza le operazioni di tutto il sistema
− la frequenza di clock vincola il numero di istruzioni che possono essere
eseguite dal calcolatore
Istruzioni di calcolo
operazioni aritmetiche (somma, sottrazione, prodotto, divisione ecc.)
operazioni logiche (algebra booleana)
L’elaborazione dei dati avviene nella ALU
Una ALU è in grado di eseguire un insieme di operazioni predefinito (in fase di progetto) su dati
codificati in binario
Istruzioni di prelievo dati dalla memoria o dalle periferiche
Istruzioni di trasferimento dati su memoria o su periferiche
I programmi eseguibili dal calcolatore sono espressi come sequenza di
istruzioni codificate in binario, ognuna corrispondente ad una delle
operazioni precedenti
linguaggio macchina
21
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
22
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Esecuzione di un programma:
funzionamento elementare
Ciclo di esecuzione: i registri coinvolti
Si carica in memoria centrale il programma in codice
binario
il programma occupa una sequenza contigua di “word” di
memoria
Ogni istruzione è sottoposta, sequenzialmente, a un
“ciclo di esecuzione”
L’ultima istruzione indica esplicitamente il termine
delle operazioni (“halt”)
Modulo di memoria
MAR = Memory Address Register
− Contiene l’indirizzo del dato (istruzione/operando) da prelevare/scrivere
MBR = Memory Buffer Register
− Contiene il dato (istruzione/operando) da leggere/scrivere
Modulo di controllo
PC = Program Counter
− Contiene, all’istante t, l’indirizzo dell’istruzione da eseguire all’istante
successivo
IR = Instruction Register
− Contiene, all’istante t, l’istruzione in esecuzione
23
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
24
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Un semplice esempio in “linguaggio
macchina”
Ciclo di esecuzione delle istruzioni
Prelievo (“fetch”) delle istruzioni
Disponiamo di un modulo di memoria ad 8 indirizzi
Supponiamo che la nostra architettura disponga delle
seguenti istruzioni
La CPU legge un’istruzione dalla memoria
PC MAR
Memoria MBR IR
PC PC + 1
Interpretazione delle istruzioni
L’istruzione viene decodificata per determinare quale azione è stata richiesta
Il sistema “separa” l’azione dagli operandi
Prelievo (“fetch”) dei dati
L’esecuzione dell’istruzione potrebbe richiedere dei dati dalla memoria o da un dispositivo di I/O
Elaborazione dei dati
Può essere richiesta l’esecuzione di operazioni aritmetiche o logiche sui dati.
I valori degli operandi sono trasferiti in registri locali della ALU
Scrittura dei dati
Load X Carica in un registro di servizio (SR) il valore all’indirizzo X
Add Y Somma al contenuto di SR il valore all’indirizzo Y
Store X Memorizza il contenuto di SR nell’indirizzo X
Halt il ciclo di esecuzione termina
Si può richiedere di trasferire i dati elaborati in memoria o ad un modulo di I/O.
Registri locali ALU MBR Memoria
Passaggio all’istruzione successiva
25
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Ciclo di esecuzione delle istruzioni:
prelievo della prima istruzione
Un semplice esempio in linguaggio
macchina
Scriviamo un algoritmo per la somma di due numeri A e B che
sono memorizzati rispettivamente in 100 e 101, e vogliamo che la
somma sia memorizzata in 110
Una possibile soluzione è:
Load 100 (carico in SR il valore di A)
Add 101 (gli sommo il valore di B)
Store 110 (memorizzo il risultato in 110)
Halt (l’algoritmo termina)
Il programma viene caricato nella memoria centrale a partire dalla
prima locazione disponibile
Parte quindi il ciclo di esecuzione delle istruzioni
27
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
26
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Load 100
000
Add 101
001
Store 110
010
Halt
011
50
100
250
101
110
111
MAR
PC
000
000
001
SR
MBR
Load 100
Modulo di memoria
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
IR
Load 100
CPU
ALU
28
Ciclo di esecuzione delle istruzioni:
intepretazione della prima istruzione
Ciclo di esecuzione delle istruzioni: prelievo
dell’operando, elaborazione e risultato
IR
Load 100
Codice operativo: viene
identificata una sequenza
di segnali appropriata per
attivare il trasferimento
dati da memoria a registro
E’ l’indirizzo dell’operando,
verrà prelevato nella fase
successiva
000
Load 100
001
Add 101
010
Store 110
011
Halt
SR
100
50
50
101
250
110
111
29
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
MAR
PC
100
001
MBR
50
Modulo di memoria
CPU
ALU
30
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Esercizio
Soluzione
Provate ad applicare gli stessi passaggi
precedenti per capire come vengono prelevate,
interpretate ed eseguite, le istruzioni successive
In particolare, l’istruzione ADD
Il prelievo dell’istruzione è esattamente identico al caso
precedente
L’interpretazione richiede la separazione del codice
operativo (ADD) dall’operando
Il prelievo dell’operando è ancora simile al caso
precedente
La differenza risiede nella fase di elaborazione
31
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
IR
Load 100
32
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Elaborazione di ADD e risultato
Dispositivi di ingresso e uscita (I/O)
000
Load 100
001
Add 101
010
Store 110
011
Halt
SR
100
50
50
101
250
110
111
MAR
PC
101
010
MBR
250
Modulo di memoria
Sono anche detti unità periferiche per sottolineare il loro
ruolo di completamento delle funzioni di base della CPU
IR
Add 101
CPU
300
ALU
unità di memorizzazione secondaria, non volatile (dischi,
nastri)
unità per l’ingresso dei dati (tastiera, mouse, schede di
acquisizione dati, microfono, telecamera, ecc.)
unità per l’uscita (video, stampante, plotter, dispositivi
audio, ecc.)
unità per il collegamento ad altri calcolatori (scheda di
rete, modem, ecc.)
34
33
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Esempio: l’hard disk
Unità di memorizzazione secondaria
Servono per archiviare in modo permanente programmi e dati
(su supporti non volatili)
dischi magnetici, ottici (CD-ROM) e magneto-ottici
nastri magnetici
Rispetto alla memoria principale: elevata capacità di
memorizzazione, bassa velocità di accesso, basso costo
E’ un piatto circolare di
metallo, o di plastica, ricoperto
con materiale magnetico.
Il
meccanismo
di
lettura/scrittura è una spira
conduttrice detta testina.
Durante
un’operazione
di
lettura/scrittura la testina è
ferma sopra il piatto che ruota.
l’accesso avviene per mezzo di organi meccanici
tempo di accesso a un disco dell’ordine dei ms (10-3 sec.), tempo d’accesso
alla memoria centrale dell’ordine dei ns! (10-9 sec.)
il tempo d’accesso varia a seconda della posizione del dato nel dispositivo di
memorizzazione: non sono RAM!
35
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
36
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Interfacce interne
Interfacciamento di unità periferiche
EIDE o SCSI (collegamento con “flat cable”)
Hard Disk / CDROM / DVD
Le periferiche hanno caratteristiche molto diverse tra loro
velocità di trasferimento
− es.: un monitor richiede una quantità di dati molto maggiore rispetto
ad una stampante, nell’unità di tempo
operazioni di I/O eseguibili
Il trasferimento di dati e istruzioni fra CPU e periferiche
avviene per mezzo di elementi circuitali detti interfacce
fanno parte del calcolatore, non della periferica
contengono registri (insiemi di bit per memorizzazione temporanea di
informazioni) per inviare comandi alla periferica, scambiare dati e controllare lo
stato della periferica
37
Connettore floppy (“flat cable”)
Floppy Disk
Slot PCI (Peripheral Component Interconnect)
Schede varie (rete, audio, modem interno, grafica)
Slot AGP (Accelerated Graphic Port)
Scheda grafica 3D
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
38
Il bus di sistema
Interfacce esterne
Insieme di connessioni elementari (linee) lungo le quali viene
trasferita l’informazione
ogni linea trasporta un bit
Collega il processore, la memoria e le interfacce di I/O
In ogni istante di tempo (intervallo di clock) il bus è dedicato a
collegare due unità: una trasmette, l’altra riceve
Di norma è sotto il controllo del processore (master), che
seleziona le unità di elaborazione (slave) da collegare
40
39
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Limiti dell’architettura di von Neumann
Il bus di sistema (cont.)
Tre insiemi di linee funzionalmente distinte:
Bus dati: l’insieme di linee impiegate per trasmettere i dati tra due
unità; il numero di linee è di norma pari al numero di bit di una parola di
memoria (ad es. 32, 64 bit)
Bus indirizzi: l’insieme di linee impiegate per trasmettere l’indirizzo del
dato che si deve trasferire (ad es. l’indirizzo della cella di memoria che
contiene l’istruzione da trasferire al processore, ecc.); l’ampiezza è pari
a quella del registro indirizzi del processore
Bus controlli: l’insieme di linee impiegate per trasmettere i codici di
controllo della trasmissione (ad es. i segnali di controllo della CPU per
l’esecuzione delle operazioni della ALU, ecc.)
Limite principale: stretta sequenzialità delle operazioni
Esecuzione delle istruzioni
tre fasi: prelievo, decodifica, esecuzione; ma durante la decodifica l’unità
preposta al prelievo resta inattiva, e durante l’esecuzione resta inattiva anche
quella preposta alla decodifica...
Esecuzione dei programmi
le istruzioni vengono eseguite una alla volta, ma potrebbero esserci gruppi di
istruzioni che potrebbero essere eseguite in parallelo da processori diversi
…oppure gruppi di istruzioni che si ripetono frequentemente
Dialogo con le periferiche
sono di norma molto più lente del processore, che resta a lungo inattivo
durante il trasferimento di dati...
41
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Estensioni dell’architettura di Von
Neumann
Motivazioni dell’uso delle gerarchie di
memoria
Negli anni sono state introdotte diverse modifiche all’architettura, per
sfruttare varie forme di parallelismo
Ciclo di esecuzione delle istruzioni condotto in parallelo (pipelining): architetture CISC
e RISC
Aggiunta di unità dedicate
− calcoli in virgola mobile (Floating Point Unit, FPU, all’interno della ALU) o
per la grafica su video
− per operazioni di I/O (interfacce intelligenti)
• es.: Direct Memory Access (DMA): l’interfaccia trasferisce i dati direttamente in
memoria principale anzichè al processore
Architetture multiprocessore
Capacità
Velocità
e costo
CPU
Memoria Cache
Memoria Primaria
Disco (Memoria Secondaria)
− Intel Core 2 Duo, Core 2 Quad, AMD Phenom
Uso di gerarchie di memoria
− memorie caratterizzate da costi e prestazioni crescenti (e quindi
dimensioni decrescenti); ad es. disco, memoria centrale, cache
43
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
42
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
• Purtroppo, le esigenze di basso costo, alta capacità e velocità sono in contrasto fra
loro
• Utilizzare gerarchie di memorie è un compromesso finalizzato a equilibrare tali
esigenze perché consente di virtualizzare la memoria
44
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
La “virtualizzazione” della memoria
Un esempio
Dare all’utente la sensazione di una memoria “grande” e “veloce”
Principio di località:
Consideriamo il vecchio algoritmo per la conversione
binario-decimale:
Durante l’esecuzione di un programma, in un breve intervallo di tempo, è probabile
che:
− Si acceda a dati ed istruzioni contenuti in locazioni di memoria contigue
(“cluster” di locazioni)
Vengano eseguite istruzioni contenute in locazioni vicine a quella dell’istruzione
corrente
Queste istruzioni vengano ripetute nel tempo
Alla virtualizzazione della memoria concorre anche il sistema
operativo nel rapporto memoria centrale/memoria di massa
i=0;
X = 0;
Ripeti
− X = X + bi * 2i
−i=i+1
Finché i < N
Le coppia Ripeti-Finché e le
istruzioni all’interno vengono
eseguite N volte nel tempo
(località temporale) e sono
anche contigue (località
spaziale)
45
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Realizzazione della memoria virtuale
Esempio di uso della gerarchia
Si connettono tra loro memorie con caratteristiche diverse,
costituenti diversi “livelli” della gerarchia (dal più alto al più basso):
Memoria Cache: capacità bassa (centinaia di KB), tempi di accesso bassi (nsec)
Memoria Primaria: capacità alta (centinaia di MB), tempi di accesso alti (decine di
nsec)
Disco: capacità molto alta (centinaia di GB), tempi di accesso molto alti (msec)
La cache contiene le istruzioni e i dati usati più di frequente
L’informazione viene prima cercata in cache
La ricerca passa via via ai livelli più bassi della gerarchia se
l’informazione non viene trovata, e viene quindi trasferita nelle
memorie di livello più alto
Da cache a primaria, da primaria a disco
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
46
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Riprendiamo l’algoritmo per la conversione binariodecimale
Abbiamo visto che le istruzioni dentro Ripeti-Finché
vengono eseguite N volte
Supponiamo che
il prelievo di un dato dalla memoria centrale richieda 50 nsec
Il prelievo di un dato dalla memoria cache richieda 5 nsec
47
48
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Non uso gerarchie: tutto rimane in
memoria primaria
Uso gerarchie: copio Ripeti-Finché in
cache
Consideriamo il vecchio algoritmo per la conversione
binario-decimale:
i=0;
X = 0;
Ripeti
− X = X + bi * 2i
−i=i+1
Finché i < N
50 nsec
50 nsec
50 nsec * N
Consideriamo il vecchio algoritmo per la conversione
binario-decimale:
i=0;
X = 0;
Ripeti
− X = X + bi * 2i
−i=i+1
50 nsec * N
50 nsec * N
50 nsec * N
Finché i < N
50 nsec
50 nsec
5 nsec * N
5 nsec * N
5 nsec * N
5 nsec * N
49
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Esempio di uso della gerarchia
Il Sistema Operativo (SO)
E’ evidente che riusciamo a risparmiare molto tempo
usando una gerarchia di memoria, tanto più quanto è
grande N
N=100 T(memoria centrale) = 2*50+4*50*100=20100 nsec
Insieme di programmi (software) con le seguenti funzioni
gestire le risorse (hardware) del calcolatore in modo corretto,
efficiente e sicuro
fornire agli utenti e ai programmatori un'interfaccia semplificata con
l'hardware
Risorse del calcolatore
− Ciclo Ripeti-Finché in centrale
tutti i componenti hardware necessari per l'esecuzione dei programmi:
T(cache+centrale) = 2*50+4*50+4*5*99=2280 nsec
− memoria centrale, processore, periferiche, ecc.
− Prima iterazione del ciclo Ripeti-Finché in centrale
− Iterazioni successive del ciclo Ripeti-Finché in cache
Interfaccia utente\hardware
insieme di funzionalità software che "nascondono" agli utenti i dettagli
dell'hardware (ad es., I\O su memoria secondaria)
Risparmio di circa il 88% del tempo
51
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
50
52
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Sistema operativo come gestore delle
risorse
Architettura a livelli del SO
Gestione corretta, efficiente e sicura delle risorse
correttezza: l'accesso a qualsiasi risorsa hardware è permesso solo al
SO; ad es., si evitano errori nelle routine di gestione dell'hardware (non
è necessario per i programmatori conoscere i dettagli del
funzionamento delle periferiche, ecc.)
efficienza: le risorse (ad es. memoria, CPU, stampanti) sono limitate, e
devono essere condivise tra diversi utenti e programmi
sicurezza: gli utenti non hanno il controllo diretto dell'hardware; il SO
utilizza meccanismi di protezione per evitare "interferenze" tra utenti
diversi e tra utenti e lo stesso SO
53
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Schema dell'architettura a livelli del SO
Gli utenti possono interagire solo con la shell del SO
ad es.: lanciare un programma, visualizzare il contenuto di una
directory, ecc.
Applicazioni e programmi utente
maschera le caratteristiche dell'hardware sottostante, e offre ai livelli
superiori un insieme ben definito di funzionalità software
nei sistemi multiutente, offre a ciascun utente l'illusione di una macchina
dedicata: ogni utente è isolato dagli altri
I diversi livelli sono indipendenti tra loro
se un livello viene modificato ma mantiene le stesse funzionalità,
l'interfaccia verso i livelli superiori non cambia: questi livelli non devono
54
essere
modificati
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Architettura a livelli del SO
Gestore dei processi (programmi in esecuzione)
condivisione della CPU tra i vari processi (concorrenza)
gestione delle fasi di attesa per operazioni di I\O
Gestore della memoria principale
Interprete dei comandi (shell)
allocazione della memoria tra i diversi processi
Gestore delle periferiche
Gestore del File System (memoria secondaria)
Gestore delle periferiche (I\O)
Gestore della memoria principale
Gestore dei processi
Hardware
55
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Un moderno SO è organizzato a livelli (progettazione
modulare)
Ogni livello si occupa di gestire una parte dell'hardware
Ogni livello realizza una macchina virtuale
insieme di programmi (driver) che gestiscono le operazioni di I\O con le
periferiche
Anch’esse risultano come macchine “dedicate”
I dettagli HW-SW sono mascherati agli utenti, che si trovano a
comunicare con esse attraverso primitive ad alto livello (leggi/scrivi)
56
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Gestione dei processi
Architettura a livelli del SO (cont.)
Processo: programma in esecuzione (entità dinamica)
Gestore del file system
organizza la memoria di massa (secondaria) gerarchicamente in file e
directory
gestisce le operazioni sui file (creazione, scrittura, lettura, ecc.)
Interprete dei comandi (shell)
è l'interfaccia tra il calcolatore e gli utenti (a linea di comando o grafica)
mette a disposizione un insieme di comandi, consentendo ad es. di
lanciare l'esecuzione di programmi, "navigare" nel file system, ecc.
Nei Sistemi Operativi è realizzato attraverso interfacce grafiche
(Graphic User Interface, GUI), con le quali si semplifica il concetto
dell’operazione da svolgere
− Es. spostare un file nel cestino equivale a scrivere e far eseguire
57
da riga di comando un’istruzione del tipo “cancella il file”
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
programma (entità statica)
contenuto della memoria centrale e dei registri della CPU (in particolare
PC), e stato del processo (entità dinamiche)
Ad un programma possono essere associati più processi
− Es. Word: mentre scriviamo un documento (processo principale)
ne facciamo stampare un altro (processo secondario) senza
interrompere la scrittura
Stati di un processo
in esecuzione: la CPU sta eseguendo le istruzioni del programma
associato (un solo processo in esecuzione in ogni istante su una CPU)
in attesa: attendono il verificarsi di un evento "esterno" (I\O)
pronti: possono passare in esecuzione quando la CPU si libera
58
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Diagramma dell'evoluzione dei processi
Le informazioni sui processi pronti e in attesa sono mantenute in strutture
dati dette “code”, proprio come le code di clienti in fila in un negozio. I
“clienti” sono in questo caso i processi. Il “commesso” è la CPU.
C’è una coda di processi “pronti” e una coda di processi “in attesa”
Un processo “in esecuzione” è come il cliente che in un dato istante viene “servito”
Un processo “pronto” è il cliente successivo
Un processo “in attesa” è come il cliente che sta provando un capo d’abbigliamento (nel
frattempo il commesso segue un altro cliente)
Termine quanto di
tempo
Processo
in esecuzione
Primo processo pronto
Fine
esecuzione
Processo
Interruzione
in attesa
(richiesta di operazione I/O)
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
L'obiettivo del gestore dei processi è rendere efficiente
l'uso della CPU condivisa da più processi:
mantenere occupata la CPU per il maggior tempo possibile
minimizzare tempi di attesa e di esecuzione dei processi
Questi obiettivi sono in contrasto tra loro...
Inizio
esecuzione
Es. se la CPU esegue un processo alla volta, riduciamo il tempo di
esecuzione del processo, ma aumenta il tempo d'attesa e di
esecuzione degli altri...
Processo
pronto
Evento esterno
atteso (I\O)
Politiche di gestione della CPU
...è quindi necessario un compromesso, definendo i
criteri di scelta di uno dei processi pronti da mandare in
esecuzione (“schedulazione” dei processi)
59
60
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Deadlock o stallo (mi si è piantato il
PC!)
Gestione dei deadlock
Molte risorse possono essere utilizzate da un solo processo
alla volta
CPU, stampanti, CD, scanner, ecc.: risorse esclusive
Alcune di queste sono non “prerilasciabili”
Algoritmo dello struzzo
si ignora il problema: in caso di deadlock, il sistema viene riavviato
è la soluzione più semplice, adatta per casi in cui il deadlock è molto raro
Identificazione e risoluzione
es.: la CPU sì, un masterizzatore di CD no!
Spesso i processi hanno la necessità di utilizzare più di una
risorsa
es.: registrare su CD un documento acquisito da uno scanner
identificare un deadlock può essere complesso
risoluzione: forzare il rilascio di una o più risorse, o eliminazione di processi
(CTRL+ALT+CANC
per visualizzare il Task Manager di Windows
NT\2000\XP)
Prevenzione
Il deadlock si verifica quando si verifica un’attesa circolare:
un insieme di processi è in attesa di un insieme di risorse esclusive non
prerilasciabili, tutte assegnate ad altri processi dell'insieme
es. il processo A è in attesa del CD assegnato al processo B; il processo B61è
in attesa dello scanner, già assegnato al processo A...
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
il SO tiene traccia dell'allocazione delle risorse e dei possibili stati di attesa
circolare, impedendo che si verifichino
è l'approccio più complesso
62
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Un esempio con Windows XP
Gestione della memoria centrale
Ogni processo occupa una parte della memoria centrale
Problemi
la memoria principale ha dimensioni ridotte: può contenere pochi
processi
bisogna evitare che un processo acceda a celle di memoria allocate ad
altri processi (di altri utenti o del SO!)
il programma associato ad ogni processo deve poter essere caricato a
partire da un indirizzo qualsiasi, ma i programmi al loro interno devono
fare riferimento ad indirizzi precisi (es.: operandi delle istruzioni)...
64
63
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Tecniche di allocazione della memoria:
allocazione contigua
Esempio di allocazione contigua
0
Ogni programma occupa una sequenza contigua di celle di
memoria (area di memoria)
Un nuovo programma viene allocato in una delle aree libere,
se possibile
Es.: si supponga che i primi 400 KB siano occupati dal SO, e
che sia richiesta l'esecuzione di 5 processi utente, nell'ordine:
Processo Memoria
Word
600 KB
Excel
1000 KB
Outlook
300 KB
Doom 2
700 KB
Int. Explorer 500 KB
Tempo (ore)
10
5
20
8
15
400 K
0
sistema
operativo
400 K
Word
400 K
1000 K
1000 K
1000 K
Outlook
Outlook
2300 K
2560 K
Excel termina
65
0
sistema
operativo
2300 K
2560 K
alloca Doom 2
Internet
Explorer
Doom 2
Doom 2
2000 K
Outlook
sistema
operativo
400 K
900 K
1000 K
1000 K
1700 K
2000 K
2000 K
2560 K
400 K
Doom 2
Excel
2300 K
0
sistema
operativo
Word
Word
2000 K
(cont.)
0
sistema
operativo
2000 K
Outlook
2300 K
2300 K
Outlook
2560 K
2560 K
Word termina
alloca I.E.
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
66
Paginazione e segmentazione
Problemi con allocazione contigua
Frammentazione: possono
esistere tante aree di
memoria libere, nessuna in
grado di contenere un
intero processo
Compattamento
− Raggruppare
le
aree
libere in un’unica più
ampia potrebbe richiedere
molto tempo
0
400 K
900 K
1000 K
Tecniche di allocazione non contigua
Paginazione
Dopo
Prima
0
sistema
operativo
Internet
Explorer
400 K
900 K
sistema
operativo
la memoria è divisa in blocchi
i programmi sono divisi in pagine
pagine e blocchi hanno tutti uguale dimensione
le pagine di uno stesso programma possono occupare blocchi di
memoria non contigui
Il Sistema Operativo tiene traccia delle pagine fisiche allocate
attraverso una “Page Map Table” assegnata ad ogni processo
Internet
Explorer
Doom 2
Doom 2
Deframmentazione
− Le
aree
occupate
vengono
riallocate
in
modo contiguo
Alternativa:
Allocazione non contigua
Outlook
2000 K
2300 K
Segmentazione
Outlook
2560 K
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
2560 K
67
i programmi vengono divisi in segmenti di lunghezza anche diversa,
68
che possono essere caricati in aree di memoria non contigue
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Un esempio di paginazione
Word
Pagina 0
Pagina 1
Pagina 2
Pagina 3
Excel
Gestione della memoria virtuale
Memoria fisica
Sis. Op.
Questo sistema permette di far eseguire programmi che occupano
uno spazio di memoria superiore a qella della primaria
A livello del Sistema Operativo, la virtualizzazione della memoria
viene gestita utilizzando la paginazione su richiesta
Blocco 1
Blocco 2
Si carica la pagina in memoria centrale solo quando “serve”
− Swapping
Blocco 3
Quando tutti i blocchi della memoria centrale sono occupati, occorre applicare
opportune politiche di “thrashing”:
− Quale pagina in memoria centrale deve essere rimpiazzata da quella da
allocare?
− Es. posso sostituire la pagina che è stata meno frequentemente chiamata
in un certo lasso di tempo (Least Frequently Used), o più semplicemente
applicare un algoritmo a rotazione (First In First Out, come per le code di
processi)
Blocco 4
Pagina 0
Blocco 5
Pagina 1
Blocco 6
Blocco 7
69
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Gestione del file system
Organizzazione di dati e programmi in memoria
secondaria:
indipendente dal dispositivo fisico (nastri, dischi magnetici e ottici, ecc.)
unità di memorizzazione: file
i file sono organizzati in strutture gerarchiche ad albero: directory
File
qualsiasi dato o programma si trova all'interno di un file
proprietà dei file:
− nome (lo distingue dai file all'interno della stessa directory)
− attributi (proprietario, permessi di accesso, tipo, dimensioni, data di
71
creazione e modifica, ecc.)
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
70
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Gestione del file system (cont.)
Directory
struttura che può contenere un numero arbitrario di file e altre directory
la directory a livello più alto è detta root (radice)
due tipi:
− directory di sistema: contengono i programmi e i dati del SO
− dirtectory utente: contengono applicazioni e dati degli utenti
proprietà:
− Nome . Estensione
− Nome: 8 caratteri; Estensione: 3 caratteri
• Vincoli non presenti nei SO più moderni (XP, MacOSX)
− Attributi (proprietario, permessi di accesso, ecc.)
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
72
Esempio di organizzazione del file
system
Operazioni su file e directory
Root
programmi
utenti
mario
Tesi.doc
ugo
Testo.txt
Il SO mette a disposizione degli utenti (attraverso
l'interprete dei comandi) e delle applicazioni (chiamate di
sistema) un insieme di operazioni su file e directory
progetti
piero
Tabella.xls foto programmi
...
...
Ogni file e directory è identificato univocamente dal path name, che
include l'intero cammino dalla directory radice. Es. (notazione Windows):
\Root\utenti\ugo\Testo.txt
\Root\utenti\mario\Tesi.doc
creazione di file e directory nella directory corrente
elenco del contenuto della directory corrente
cambiamento della directory corrente
copia, cancellazione e ridenominazione
apertura di un file (esecuzione o visualizzazione)
modifica dei permessi
File e directory contenuti in directory diverse possono avere lo stesso
nome
In Windows la cartella ”root” corrisponde alla cartella “Desktop”
73
Ogni operazione può essere eseguita solo se si dispone
dei permessi necessari
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
Per saperne di più…
Architettura dei calcolatori
Ceri, et al., Capitolo 2
Estensioni dell’architettura di Von Neumann: architetture
CISC e RISC
Ceri, et al., Capitolo 12
Il Sistema Operativo
Ceri, et al., Capitolo 13
75
Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis
74