Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
I Modelli dei Calcolatori
• Macchina di Turing (1936):
– Modello teorico legato alla
logica matematica
• Macchina di von Neumann
(194346)
– Calcolatore reale (ENIAC)
dotato di capacità di scelta, di
funzionalità programmata e
digitale (ma non binario bensì
decimale)
– Calcola esattamente le stesse
funzioni della MdT
(purché dotato di memoria
sufficientemente grande) 2
Macchina di von Neumann
• Di tipo sequenziale: può elaborare una sola
istruzione per volta
• Oggi esistono altri modelli di computazione
(es.: le macchine parallele)
– Tutti computano esattamente le stesse funzioni
Altri tipi di calcolatore (paralleli, analogici,
ottici, quantistici, molecolari, …)
3
La Macchina di von Neumann
• L’Unità Centrale
(CPU) MM
• La Memoria Centrale
(RAM)
• La Memoria di Massa RAM
(MM) CPU BUS
• Il Bus di Sistema
UP1
(BUS)
..
• Le Unità Periferiche .
(UPi)
UPN
4
Architettura del Calcolatore:
Componenti Hardware
• Unità Centrale (CPU, o processore)
• Memoria Centrale (spesso tecnologia RAM)
• Memoria di Massa (dischi, chiavette, nastri, …)
• Unità Periferiche (monitor, casse, tastiera, …)
• Bus di Sistema (canale di comunicazione)
• Reti di Calcolatori
– canali di comunicazione a livello superiore
5
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
6
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
7
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
8
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
9
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
10
La macchina di von Neumann
canale di comunicazione
bus di sistema
Mem. Mem.
CPU Perif.
RAM Massa
11
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
12
Elementi funzionali
• Unità di elaborazione, o CPU
• elabora dati, coordina trasferimento dei dati
• esegue i programmi, cioè interpreta ed esegue
le loro istruzioni
• Memoria Centrale
• memorizza dati e programmi
• capacità limitata p.es. 512 MByte
– volatile
– accesso all’informazione molto rapido
13
• Memoria secondaria o memoria di massa
– memorizza grandi quantità di dati e programmi
– persistente
– accesso molto meno rapido della RAM
• Su PC: hard disk (p.es. 120 GByte), floppy disk (1.44
MByte), CD-ROM (p.es. 700 MByte), …
• Bus di sistema
– collega e consente scambio di dati
• Unità periferiche (I/O)
– comunicazione con l’ambiente esterno
– terminali, con tastiera, mouse, video, stampanti
– l’ambiente esterno non è sempre un utente umano
(impianti industriali, robot, strumenti di controllo)
• Sensori e attuatori
14
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
15
Le memorie di massa
• Informazione memorizzata su supporto magnetico
(o ottico o altro...) di costo contenuto
• Memoria permanente: le informazioni sono
raggruppate in file gestiti dal sistema operativo.
• Dischi rigidi: tempi di accesso dell’ordine delle decine
di millisecondi; floppy disk: dell’ordine delle centinaia
di millisecondi DIMENSIONE: centinaia di GB
• Nastri e Cartucce: per memorizzare informazioni
“storiche” (back-up)
• CD-ROM e DVD-ROM: sola lettura (700 MB e 5 GB)
16
Struttura dei dischi rigidi (Hard Disk)
• testine
• superfici
• tracce
• cilindri
• settori
17
Solid State Drive
• I dischi SSD utilizzano delle memorie flash rispetto ai classici dischi rigidi.
• Gli hard disk per anni hanno puntato su una capacità d’archiviazione
sempre più grande mentre le unità a stato solido puntano alla sicurezza, alla
velocità e in maniera particolare a migliorare le prestazioni della macchina
dove vengono installate.
• Le unità a stato solido, a differenza dei dischi rigidi, non hanno parti
meccaniche, come testine o piatti di rotazione. Senza parti meccaniche è
molto più difficile che in seguito a danni o cadute l’SSD possa rompersi.
• La rimozione delle parti meccaniche è stata
possibile grazie all’uso dei collettori SATA
(Serial Advanced Technology Attachment),
compatibili praticamente con qualsiasi
scheda madre.
• Lavorando con dei collettori a livello di RAM
le prestazioni migliorano, ma i dischi SSD
hanno una durata temporale ben precisa. In
media la vita degli SSD è di 5-6 anni.
18
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
19
La memoria centrale
• Contiene le istruzioni e i dati su cui la CPU
può operare
– Contiene, cioè, sia i dati che i programmi
– Tutta l’informazione, per poter essere elaborata,
deve passare dalla memoria centrale (e
successivamente caricata in uno dei registri della
CPU)
• Rispetto alla memoria di massa
– è memoria a breve-medio periodo
– è volatile
20
La memoria centrale
• Dimensioni ridotte
– ordine dei MegaByte... ormai GigaByte
• Tempi di accesso
– ordine delle decine di nanosecondi
• circa 1 milione di volte più veloce delle memorie di massa
• È un insieme ordinato di parole (celle)
– Una parola = n elementi di memoria binari (8, 16, 32, 64 bit)
– La posizione di ogni parola è identificata da un indirizzo
• La capacità di indirizzamento in memoria è definita dalle
dimensioni del bus indirizzi e del registro indirizzi
21
Indirizzamento della memoria centrale
• Esiste un registro (registro Celle
- hanno un indirizzo
indirizzi - AR) della CPU per - contengono parole
indirizzare la memoria
• Registro di k bit: può indirizzare
2k celle
– Con 10 bit indirizzo 1.024 celle
• 1 “kilo-parole”
– Con 20 bit, 1.048.576 parole
• 1 “mega” parole
– 30(giga), 40(tera), 50(peta), 60(exa)
22
La Memoria Centrale (MM)
• Contiene i programmi
(sequenza di istruzioni) in
esecuzione ed i relativi dati
• È schematizzata come una
sequenza di celle.
La Memoria Centrale (MM)
Indirizzo = 10 bit
esecuzione ed i relativi dati 0
• È schematizzata come una 1
sequenza di celle.
• Ogni cella contiene h bit, i.e.,
una Parola (word)
• Ogni cella ha un indirizzo e
deve essere scritto in binario
• Se ho a disposizione k bit per
scrivere l’indirizzo, lo spazio
di indirizzamento è 2k celle
1023
La Memoria Centrale (MM)
• Contiene i programmi (sequenza di
istruzioni) in esecuzione ed i relativi
dati Parola bit h = 16 bit
Indirizzo = 10 bit
• È schematizzata come una sequenza 0
di celle. 1
• Ogni cella contiene h bit, i.e.,
una Parola (word)
• Ogni cella ha un indirizzo e deve
essere scritto in binario
• Se ho a disposizione k bit per scrivere
l’indirizzo, lo spazio di indirizzamento è
2k celle
1023
h =16 bit
cella selezionata
4.096 parole
4.095
29
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
30
La CPU
• Contiene gli elementi circuitali che regolano il
funzionamento del calcolatore:
– L’unità di controllo è responsabile della decodifica e
dell’esecuzione delle istruzioni. È la parte che "dirige" l'esecuzione
di tutte le altre parti
– L’orologio di sistema (clock) permette di sincronizzare le
operazioni temporizzando il funzionamento del calcolatore
– L’unità aritmetico-logica (ALU) realizza le operazioni aritmetiche
e logiche eventualmente richieste per l’esecuzione dell’istruzione.
È priva di facoltà di scelta
– I registri sono piccole memorie velocemente accessibili, utilizzate
per memorizzare risultati parziali o informazioni necessarie al
controllo. L’insieme dei valori contenuti nell'insieme di tutti i registri
in un dato istante dell’elaborazione viene chiamato contesto
31
L’Unità di Elaborazione (CPU)
• La Central Processing Unit (CPU) coordina il
funzionamento del calcolatore ed esegue i
programmi:
estrae, decodifica ed esegue le istruzioni in memoria.
• Le istruzioni possono comportare elaborazione o
trasferimento dell’informazione
• La CPU contiene a sua volta:
– l’Unità di Controllo che preleva e decodifica istruzioni dalla
MM, invia segnali per eseguire le istruzioni
– Il Clock di sistema, opera come un metronomo per la CPU
– L’Unità Aritmetico Logica: operazioni aritmetiche e logiche
L’Unità di Elaborazione (CPU)
Unità
aritmetico
logica
(ALU)
Unità di controllo
(CU)
Clock
L’Unità di Elaborazione (CPU)
Unità
aritmetico
logica
(ALU)
Unità di controllo
(CU)
Clock
Controllo:
-Prelievo
-Decodifica
-Esecuzione
L’Unità di Elaborazione (CPU)
Operazioni
aritmetiche
e logiche
Unità
aritmetico
logica
(ALU)
Unità di controllo
(CU)
Clock
L’Unità di Elaborazione (CPU)
Unità
aritmetico
logica
(ALU)
Unità di controllo
(CU)
Clock
Sincronizzazione
L’Unità di Elaborazione (CPU)
• La Central Processing Unit (CPU) coordina il funzionamento
del calcolatore ed esegue i programmi:
estrae, decodifica ed esegue le istruzioni in memoria.
• Le istruzioni possono comportare elaborazione o
trasferimento dell’informazione
• La CPU contiene a sua volta:
– l’Unità di Controllo che preleva e decodifica istruzioni dalla MM, invia
segnali per eseguire le istruzioni
– Il Clock di sistema, opera come un metronomo per la CPU
– L’Unità Aritmetico Logica: operazioni aritmetiche e logiche
• La CPU contiene inoltre molti registri: memorie rapide per
informazioni richieste dalla CU (es due numeri da sommare, il
loro risultato)
L’Unità di Elaborazione (CPU)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
Istruzione in (CU)
elaborazione (h bit) Clock
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Registro di stato
(SR) Registri operandi
Registro contatore
di programma (PC)
ALU
Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registri generali
Registro istruzione
corrente (CIR)
Unità di controllo
Clock (CU)
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro indirizzi
Registro dati (DR) (AR)
L’Unità di Elaborazione (CPU)
Informazioni sui
risultati ALU
Registro di stato
Registro contatore (SR)
di programma (PC) Unità
A
aritmetico
Registro logica
interruzioni (INTR) B (ALU)
Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock
Registro indirizzi
Registro dati (DR) (AR)
Velocità della CPU
• La soluzione di molti problemi importanti richiede una grossa potenza di
calcolo:
• I progettisti tentano di rendere le macchine più veloci. Fino ad un certo
punto, le macchine possono essere accelerate velocizzando l’hardware.
• Limiti fisici di vario tipo si profilano all’orizzonte.
– Niente può andare più veloce della luce, che è di circa trenta centimetri per
nanosecondo nel vuoto e di venti centimetri per nanosecondo in un filo di rame.
– Per costruire un computer con un tempo di un nanosecondo per istruzione, la
distanza totale su cui il segnale elettrico può viaggiare, all’interno della CPU,
verso la memoria e ritorno, non può essere maggiore di venti centimetri.
– Perciò computer molto veloci devono essere molto piccoli.
Sfortunatamente i computer veloci producono più calore di quelli lenti, e
comprimere i computer in uno spazio ristretto rende difficile dissipare il
calore.
– I super computer sono immersi nel freon, come liquido di raffreddamento, per
trasferire all’esterno il calore il più velocemente possibile.
Parallelismo
• Tuttavia è possibile velocizzare le operazioni il
problema da un’altra prospettiva.
• Invece di un’unica CPU ad alta velocità, è possibile
costruire una macchina con molte ALU più lente
(ed economiche) o perfino con diverse CPU
complete, per ottenere la stessa potenza di calcolo
ad un costo minore.
• Molta ricerca è dedicata alla costruzione di macchine
parallele.
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
49
Il bus di sistema
• Insieme di connettori (conduttori elettrici) che
trasportano bit di informazioni collegando fra
di loro l’unità di elaborazione, la memoria e le
varie interfacce di ingresso/uscita
• I trasferimenti sono gestiti dalla CPU
(modalità master/slave) e si chiamano cicli
del bus, che con la sua capacità ne
determina la velocità
50
Componenti del bus di sistema
• Bus Dati
– trasferisce dati da master a slave e viceversa
• Bus Indirizzi
– trasferisce indirizzi, per esempio l’indirizzo di un
dato dal registro indirizzi alla memoria, per
accedere al dato stesso
• Bus di Controllo
– Da master a slave: codice dell’istruzione da
eseguire (per es. lettura da disco).
– Da slave a master: informazioni sul successo
dell’operazione
51
Cicli di bus: esempi
• Operazione di lettura da memoria centrale (LOAD):
– la CPU carica l’indirizzo della parola di memoria nel registro indirizzi e lo
trasmette alla memoria via bus indirizzi
– la CPU invia il comando di Read Memory sul bus di controllo
– la memoria trasmette sul bus dati il contenuto della parola verso il registro dati
– la memoria segnala al processore sul bus di controllo che l’operazione è
stata completata con successo: il dato si trova nel registro dati
• Operazione di scrittura in memoria centrale (STORE):
– la CPU carica indirizzo della parola di memoria dove si vuole scrivere nel
registro indirizzi e lo trasmette alla memoria via bus indirizzi
– la CPU carica nel registro dati la parola da scrivere in memoria
– la CPU invia il comando di Write Memory sul bus di controllo
– la CPU trasmette sul bus dati il contenuto del registro dati verso l’indirizzo di
memoria segnalato
– la memoria segnala al processore sul bus di controllo che l’operazione è
stata completata con successo: il dato si trova nella parola di memoria
destinazione
52
Esempio di istruzioni in linguaggio assemblatore
(o “assembler”)
Cod. binario Cod. simbolico Significato
0000 LOADA poni in A il valore della cella <op> della RAM
0001 LOADB poni in B il valore della cella <op> della RAM
0010 STOREA poni nella cella <op> della RAM il valore in A
0011 STOREB poni nella cella <op> della RAM il valore in B
0110 ADD poni in A il valore di A+B restituito dalla ALU
0111 DIF poni in A il valore di A-B restituito dalla ALU
1010 JMP la prossima istr. da eseguire è nella cella <op>
1011 JMPZ se A=0, la prossima istr. da eseguire è in <op>
1100 NOP istruzione nulla: nessun effetto [...HA senso]
1101 HALT fine del programma
0100 READ leggi (I/O) un valore e ponilo nella cella <op>
0101 WRITE scrivi (I/O) il valore contenuto nella cella <op>
0110 ...
53
Piccolo esempio di programma assembler
Cella di mem. Cod. Oper. Operando
0 READ 8
1 READ 9
2 LOADA 8
3 LOADB 9
4 ADD
5 STOREA 8
6 WRITE 8
7 HALT
8 (INT)
9 (INT)
54
Esecuzione dei programmi
Esempio: calcolare espressione (x + y) - (z + w)
55
4. esegui l’addizione di x e y:
1. copia da cella 16 a registro A;
2. copia da cella 17 a registro B;
3. somma i registri (operazione eseguita dalla ALU
che lascia il risultato nel registro A);
5. esegui la sottrazione di (x + y) e (z + w):
1. copia da cella 20 a registro B;
2. sottrai il contenuto dei due registri (operazione
eseguita dalla ALU che lascia il risultato nel reg. A);
6. scrivi il risultato sul dispositivo di uscita:
1. copia da registro A a cella 20;
2. copia da cella 20 a registro dati della periferica
7. arresta l’esecuzione del programma
56
0 READ X
Il programma in assembler 1 READ Y
2 READ Z
0-3: acquisizione dei dati 3 READ W
4 LOADA Z
16-20: spazio per rappresentare i dati 5 LOADB
– le cinque variabili simboliche X, Y, Z, W, W
RIS menzionate nel programma. Ognuna 6 ADD
identifica una cella di memoria 7 STOREA RIS
• I nomi simbolici sono più comodi degli 8 LOADA X
indirizzi, ma bisogna supporre che 9 LOADB Y
qualcuno (il compilatore!) gestisca la 10 ADD
corrispondenza con un numero opportuno 11 LOADB
di celle allocate per rappresentare i dati RIS
4-6 e 8-10: Somme (Z+W e X+Y) 12 MULT
7: salvataggio del risultato intermedio 13 STOREA RIS
14 WRITE
11: recupero del risultato intermedio RIS
14: Visualizzazione del risultato 15 HALT
16 ...int....(X).....
17 ...int....(Y).....
18 ...int....(Z).....
57
19 ...int....(W).....
0. 0100000000010000
Il programma in 1. 0100000000010001
linguaggio 2.
3.
0100000000010010
0100000000010011
macchina 4.
5.
0000000000010010
0001000000010011
6. 0110000000000000
indirizzi delle celle 7. 0010000000010100
8. 0000000000010000 istruzioni
9. 0001000000010001
codici operativi 10. 0110000000000000
11. 0001000000010100
12. 0111000000000000
operando significativo 13. 0010000000010100
(indirizzo della cella RIS) 14. 0101000000010100
15. 1101000000000000
16. ................
operando non significativo 17. ................
18. ................
19. ................ dati
20. ................
58
Il programma in C
int main() {
int x, y, z, w, ris;
scanf("%d%d%d%d", &x, &y, &z, &w);
ris = (x+y)*(z+w);
printf(“\n\n Il risultato e’ : %d“, ris);
return 0;
}
59
I Programmi nella Macchina di Von Neumann
•Le istruzioni sono (necessariamente) codificate in binario e,
come i dati, sono salvate in parole nella MM
Supponiamo una MM con parole da bit ed indirizzi da bit, con
istruzioni così codificate:
Codice operativo (4bit) 00 Indirizzo Operando (10bit)
ad esempio, 0100000000010000
Consideriamo le seguenti istruzioni eseguibili dalla CPU
– Lettura da periferica, scrittura su periferica
– Caricare un dato da MM in un registro della CPU (load)
– Salvare in MM un dato di un registro della CPU (store)
– Operazioni aritmetiche (le gestisce la ALU)
– Istruzioni di salto (per cambiare il flusso di esecuzione)
I Programmi nella Macchina di Von Neumann
dati
Spazio riservato per c 18
Spazio riservato per d 19
Spazio riservato per z 20
Le Tre Fasi Per Eseguire un’Istruzioni
1. Fetch: Acquisizione dell’istruzione dalla MM
1. Trasferimento da PC a AR dell’ indirizzo cella
contenente l’istruzione da eseguire.
2. Lettura dalla MM della cella all’indirizzo in AR,
contenuto trasferito sul DR (l’istruzione è un dato)
3. Sposta da DR a CIR (riferimento istr. in esecuzione)
4. Incrementa PC (definisce la prossima istruzione:
incremento di 1 = sequenzialità)
2. Decodifica: riguarda il codice operativo, legge
dal CIR
3. Esecuzione: dipende dall’istruzione specifica.
Esempio: più nel dettaglio
82
1. Videoscrittura (editing)
• Il testo del programma sorgente, costituito da
una sequenza di caratteri, viene composto e
modificato usando uno specifico
programma: l’editor
• Così otteniamo un File Programma
Sorgente memorizzato in memoria di massa
in un file di testo di nome:
– XXX.asm per programmi in assembler
– XXX.c per programmi in C
– XXX.cpp per programmi in C++
–… …
83
2. Traduzione
• Linguaggio di alto livello Linguaggio
macchina (compilatore)
• Durante questa fase si riconoscono i simboli,
le parole e i costrutti del linguaggio:
– eventuali messaggi diagnostici segnalano errori
lessicali e sintattici
• Si genera la forma binaria del codice
macchina corrispondente: a partire dal File
Programma Sorgente si genera un File
Programma Oggetto, cioè in un file binario
di nome XXX.obj
84
3. Collegamento (linking)
• Il programma collegatore (linker) deve collegare fra loro il file
oggetto e i sottoprogrammi richiesti (es. le funzioni di C)
• I sottoprogrammi sono estratti dalle librerie oppure sono
individuati tra quelli definiti dal programmatore (nel qual caso si
trovano anch’essi nel file oggetto)
• Si rendono globalmente coerenti i riferimenti agli indirizzi dei
vari elementi collegati
• Si genera un File Programma Eseguibile, un file binario che
contiene il codice macchina del programma eseguibile
completo, di nome XXX.exe
• Messaggi di errore possono essere dovuti ad errori nel citare i
nomi delle funzioni da collegare
• Il programma sarà effettivamente eseguibile solo dopo che il
contenuto del file sarà stato caricato nella memoria di lavoro
(centrale) del calcolatore (a cura del Sistema Operativo)
85
4. Caricamento (loading)
• Il caricatore (loader) individua una
porzione libera della memoria di lavoro
e vi copia il contenuto del file XXX.exe
– Eventuali messaggi rivolti all’utente
possono segnalare che non c'è
abbastanza spazio in memoria
86
5. Esecuzione
• Per eseguire il programma occorre fornire in
ingresso i dati richiesti e in uscita riceveremo i
risultati (su video o file o stampante)
• Durante l’esecuzione possono verificarsi degli errori
(detti “errori di run-time”), quali:
· calcoli con risultati scorretti (per esempio un overflow)
· calcoli impossibili (divisioni per zero, logaritmo di un numero
negativo, radice quadrata di un numero negativo,….)
· errori nella concezione dell’algoritmo (l’algoritmo non risolve
il problema dato)
Tutti gli esempi citati si riferiscono ai cosiddetti errori semantici
87
Nel caso del C le fasi sono sei
1. Videoscrittura
• produzione del programma, svolta dal programmatore
tramite un programma di videoscrittura (editor)
2. Pre-compilazione (pre-processing)
• svolta da un programma detto preprocessore
3. Traduzione (compilazione)
• svolta dal compilatore (compiler)
4. Collegamento (linking)
• svolto dal collegatore (linker)
5. Caricamento (loading)
• svolto dal caricatore (loader)
6. Esecuzione
• a cura del Sistema Operativo
88
89
Architettura del calcolatore
RAM ROM
MEMORIA
CPU CENTRALE
BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO
INTERFACCE
UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT
90
Interfacce di I/O
(verso le periferiche)
• Consentono il collegamento tra elaboratore e
periferiche
• Possono essere dispositivi elettromeccanici
• Contengono registri per
– inviare comandi alla periferica
• registro comandi periferica (PCR) – collegato al bus di controllo
– scambiare dati
• registro dati della periferica (PDR) – collegato al bus dati
– controllare il funzionamento della periferica
• registro stato periferica (PSR): pronto, occupato, errore, ...
92
Architettura del Calcolatore:
Software di Sistema
• Il sistema operativo
• I sistemi di gestione di basi di dati
• Il software di rete
• Gli ambienti di programmazione:
– editor, compilatori, assemblatori, traduttori,
collegatori, debugger, … strumenti CASE, IDE
• Gli strumenti di produttività:
– videoscrittura, fogli elettronici, strumenti per la
produzione di “slide”, strumenti per la produzione
di ipertesti…
93
Il sistema operativo
• Programma di grandi dimensioni e notevole complessità, che
permette all’utente di interagire con il calcolatore
• Sviluppo di un S.O.: centinaia di anni-uomo
• Poca teoria, solo in alcune aree:
– Perché prima sviluppo tecnologico, poi teorizzazione
– Perché aspetti non di calcolo ma di ottimizzazione, gestione di
interazione, gestione di malfunzionamenti etc.
– Perché il problema del progetto di S.O. è intrinsecamente complesso e
interdisciplinare
• Complessità estrema: studio per livelli di macchine astratte per
ragionare a diversi livelli di astrazione
• Funzioni:
– Gestione lavori
– Supporto per la programmazione
– Meccanismi di Ingresso / Uscita (I/O)
– Gestione archivi (file)
94
Architettura del Calcolatore:
Software Applicativo
• Gestionale
– sistemi informativi aziendali, elaborazione paghe, fatturazione,
automazione del terziario, ..., automazione d’ufficio
• Applicazioni numeriche
– meteorologia, applicazioni statistiche, …
• Telematico
– terminali bancari, prenotazioni aeree, …, Internet, ...
• Automazione industriale
– CAD/CAM, CAE, robotica, CIM, …
• Controllo di processi
– Impianti chimici, centrali elettriche e nucleari, traffico aereo…
• Realtà virtuale, interfacce utente, software multimediale
• Social networks
95