La struttura del calcolatore. Linguaggio macchina e assembler. Il

La struttura del calcolatore
1
Anno accademico 2010-2011
Sommario
• La struttura del calcolatore
 L’architettura a BUS
 La CPU
 La gerarchia di memorie
 La memoria centrale
 La memoria secondaria
 I dispositivi di I/O
• Linguaggio macchina e assembler
• Il sistema operativo
 Scopo del sistema operativo
 Architettura e servizi
2
Anno accademico 2010-2011
La struttura del calcolatore
IBM S/360 Mod 40 (1964)
1.6 MHz 32KB256KB
225.000$
IBM S/360 Mod 50 (1964)
2.0 MHz 128KB256KB
550.000$
IBM S/360 Mod 65 (1964)
5.0 MHz 256KB1MB
1.200.000$
3
Anno accademico 2010-2011
La struttura del calcolatore
• Si possono considerare diversi livelli di astrazione:
 Circuiti elettronici (hardware)
 Architettura e linguaggio macchina
 Sistema operativo (software di sistema)
 Linguaggi di programmazione
 Programmi applicativi
Silicon Graphics
Il calcolatore è basato su circuiti
elettronici digitali, ovvero modellabili con
l’algebra di Boole; i circuiti elettronici
implementano le funzioni logiche AND,
OR, NOT, permettono di memorizzare il
valore di variabili booleane, di effettuare
calcoli, etc.
Anno accademico 2010-2011
4
La macchina di Von Neumann  1
• Tutti i calcolatori attuali si rifanno all’architettura di Von Neumann,
costituita dalle quattro componenti:

CPU (Central Processing Unit)

Memoria centrale

Bus di sistema

Periferiche
Memoria
centrale
BUS di sistema
tastiera
Anno accademico 2010-2011
CPU
mouse
memoria di
massa
Periferiche
monitor
5
La macchina di Von Neumann  2
• Carratteristiche del modello di Von Neumann
 Proceduralità: possibilità di eseguire differenti programmi
memorizzati
 Il modello è basato sul paradigma di programmazione
procedurale: il programma indica la sequenza di istruzioni
da eseguire per ottenere la soluzione ad una data classe di
problemi
 Sequenzialità: regola della selezione dell’istruzione da
eseguire rigidamente fissata
 Connessione tra le unità funzionali con singolo flusso di
informazione tra memoria e processore: architettura a BUS
6
Anno accademico 2010-2011
Architettura a BUS
• L’architettura più consolidata per il calcolatore prevede quindi
unità funzionali fra loro collegate attraverso un unico canale di
comunicazione, il bus
• Il bus è fisicamente realizzato mediante un insieme di connettori
elettrici
Dispositivi di Input/Output
CPU
Memoria
principale
I/O
I/O
I/O
BUS
Indirizzi
Dati
Controllo
Anno accademico 2010-2011
7
Il BUS  1
• Il bus è utilizzato per trasferire dati fra le unità
funzionali
 L’unità che inizia il trasferimento (in genere la CPU)
fornisce l’indirizzo, che individua univocamente il dato,
sulle linee del bus indirizzi, e configura le linee del bus di
controllo, inviando un comando al dispositivo che
contiene il dato (es. READ, alla memoria principale)
 Il dato da trasferire è reso disponibile sul bus dati e
viene ricopiato nel dispositivo destinatario
8
Anno accademico 2010-2011
Il BUS  2
• Esempio
 Un bus indirizzi composto da 32 connettori indirizza 4 GB di
memoria
 Per una CPU a 32 bit, anche il bus dati è composto da 32
connettori
Indirizzo a
32 bit (32 fili)
0008AB38
CPU
0008AB38
Memoria
principale
0008AB38
CPU
5F66B102
Memoria
principale
5F66B102
0008AB38
5F66B102
READ1 MEM1
READ1 MEM1
5F66B102
Dato a 32 bit (32 fili)
trasferito dalla memoria principale alla CPU
Anno accademico 2010-2011
9
La CPU  1
• La Central Processing Unit è l’unità
centrale di elaborazione: esegue le
istruzioni dei programmi e ne
regola il flusso, esegue i calcoli
• La CPU è un dispositivo sincrono,
cioè può cambiare stato solo
quando riceve un impulso di clock,
Intel Pentium
l’orologio del sistema che fornisce al computer un
battito regolare
• La CPU lavora a N GHz: segue un ritmo di N miliardi di
impulsi al secondo (es., una CPU con un clock a 3 GHz è
temporizzata da tre miliardi di impulsi al secondo)
10
Anno accademico 2010-2011
La CPU  2
• La frequenza di clock determina la velocità di
elaborazione del computer: più alta è la frequenza di
clock, maggiore è la velocità di elaborazione
• La velocità e la potenza di un computer dipendono
però anche dalla larghezza del bus, ovvero dal numero
di bit (ampiezza del singolo dato) che il processore è
in grado di ricevere e di elaborare simultaneamente
 Attualmente, i processori sono in grado di elaborare dati
rappresentati con 64 bit
11
Anno accademico 2010-2011
La CPU  3
• La CPU è costituita da tre elementi fondamentali:
 Unità AritmeticoLogica (ALU)
 Registri
 Unità di Controllo (CU)
BIU
registri
Bus Interface
Unit
EU
}
Execution Unit
PC Contatore di programma
(Program Counter)
ALU
BUS
CU
IR
Registro Istruzione
(Instruction Register)
12
Anno accademico 2010-2011
La CPU  4
• A livello “macroscopico”, ad ogni impulso di clock, la CPU:
 “legge” il suo stato interno (determinato dal contenuto dei
registri di stato) e la sequenza di ingresso (determinata dal
contenuto dei registri istruzione e dati)
 produce un nuovo stato “dipendente” dallo stato in cui si
trovava originariamente
• In pratica, la CPU realizza una complessa funzione logica,
con decine di ingressi e di uscite
la corrispondente tabella di verità avrebbe un numero
enorme di righe (miliardi di miliardi)
13
Anno accademico 2010-2011
La CPU  5
• Lo stato della CPU è costituito da informazioni
(memorizzate negli opportuni registri) su:
 dati da elaborare (contenuti nei
 istruzione da eseguire (nel
registri dati)
registro istruzioni)
 indirizzo in memoria della prossima istruzione da eseguire
(nel program counter)
 eventuali
anomalie o eventi
l’elaborazione (nei registri flag)
verificatisi
durante
14
Anno accademico 2010-2011
La CPU  6
• Set di istruzioni di base:
 somma (da cui sottrazione)
 scorrimento (shift)
}
(da cui moltiplicazione e divisione)
 operazioni logiche
 operazioni di accesso alla memoria
 trasferimento di un dato da una locazione di memoria ad un’altra
 trasferimento da memoria a un registro della CPU
 trasferimento da un registro della CPU a memoria
 operazioni di confronto (sufficiente confronto con zero)
• Le operazioni (eccetto quelle di accesso alla memoria) sono
eseguite all’interno della ALU e “coordinate” dall’unità di controllo
Anno accademico 2010-2011
15
L’Unità AritmeticoLogica
• L’ALU (ArithmeticLogic Unit) è un circuito
in grado di eseguire operazioni aritmetiche
e logiche su 2 operandi, rappresentati su n
bit (es. 32/64 bit); oltre al risultato
dell’operazione può produrre informazioni
ulteriori su linee specifiche (il risultato è
zero, si è verificato un overflow, etc.)
ALU operation
a
AL U
Z ero
R e sult
O verflo w
b
C arryO ut
• Il tipo di operazione selezionata, in un dato istante, dipende dallo
stato di alcune linee di controllo provenienti dalla CU
• Le operazioni logiche (es. AND) vengono eseguite bit a bit fra i due
operandi
• Esiste una unità specializzata per le operazioni in virgola mobile (FPU)
16
Anno accademico 2010-2011
I registri
Name
31
EAX
0
Use
ECX
GPR 1
EDX
GPR 2
EBX
GPR 3
ESP
GPR 4
EBP
Registri del Pentium
GPR 0
CS
Code segment pointer
SS
Stack segment pointer (top of stack)
DS
Data segment pointer 0
ES
Data segment pointer 1
FS
Data segment pointer 2
GS
Data segment pointer 3
EIP
GPR 5
ESI
GPR 6
EDI
GPR 7
EFLAGS
Instruction pointer (PC)
Condition codes
• I registri sono dispositivi di memorizzazione che consentono un
accesso molto veloce ai dati che contengono; hanno dimensioni
prefissate (es. 32/64 bit)
• Alcuni registri hanno funzioni specifiche (es. contatore di
programma)
• Nella maggior parte delle architetture, le operazioni della ALU si
possono effettuare solo fra dati presenti nei registri ed anche il
risultato viene momentaneamente memorizzato in un registro
Anno accademico 2010-2011
17
Registri e loro funzioni
• Registri accumulatori: sono integrati alla ALU, che vi può operare
direttamente; mantengono risultati temporanei
• Registro di stato: PSW (Program Status Word), contiene i flag di
stato, bit impostati dall’HW della CPU dopo un’operazione, per
indicare particolari condizioni circa l’esito dell’esecuzione (es. segno,
risultato nullo, overflow, carry,…)
• Registro puntatore allo stack: SP (Stack
Pointer), lo stack è un insieme di celle di
memoria che può essere acceduto in
SP
modalità LIFO (LastInFirstOut); la 2000
posizione in cui si trova l’elemento inserito
2000
per ultimo è la testa dello stack, che viene
puntata dal registro SP; lo stack è 2100
organizzato in modo da crescere verso
indirizzi decrescenti: SP viene decrementato
ad ogni nuova immissione (push) ed
incrementato ad ogni prelievo (pop)
0
18
Anno accademico 2010-2011
L’unità di controllo
memoria
Istruzione 1
Istruzione 2
Istruzione 3
BUS
P
C
CU
Segnali di controllo
(ALU, Registri, etc.)
02AD77F2
IR
02AD77F2
• Esegue le istruzioni prelevandole dalla memoria nella fase di fetch
• La prossima istruzione da eseguire è individuata dall’indirizzo presente nel
registro contatore di programma (PC)
• L’istruzione in esecuzione è memorizzata nel registro istruzione (IR)
• L’istruzione è un codice binario che deve essere decodificato dalla CU;
specifica il tipo di operazione, gli eventuali operandi, etc.
• Normalmente le istruzioni sono eseguite in sequenza: dopo il fetch, il PC
viene incrementato, per fare riferimento all’istruzione successiva
Anno accademico 2010-2011
19
Come si eseguono i programmi  1
• Il processore esegue le istruzioni di un programma una
alla volta in sequenza: estrae le istruzioni dalla memoria,
le interpreta e le esegue una dopo l’altra
 Un programma indica la sequenza di istruzioni da eseguire
per ottenere la soluzione ad un data classe di problemi
• Il processore esegue ogni istruzione mediante una
sequenza ben definita di operazioni detta ciclo di
istruzione o ciclo macchina
 Estrazione di una istruzione: fase di fetch
 Esecuzione dell’istruzione: fase di execute
20
Anno accademico 2010-2011
Come si eseguono i programmi  2
• Fase di fetch
 L’unità
di controllo preleva dalla memoria centrale
l’istruzione, utilizzando l’indirizzo conservato nel PC
 L’ istruzione prelevata viene memorizzata nel registro IR
• Fase di Execute
 L’unità di controllo interpreta l’istruzione e determina le
operazioni da eseguire
 L’unità di controllo sovrintende all’esecuzione delle
operazioni
 Il PC viene incrementato per puntare all’istruzione
successiva
21
Anno accademico 2010-2011
Le memorie  1
• Le memorie sono dispositivi per “lo stoccaggio” delle
informazioni
• Ogni memoria è costituita da celle, a cui si accede
tramite un indirizzo
• In ogni elaboratore vi sono tre tipi di memorie:
 Registri:
contengono informazioni
elaborazione della singola istruzione
necessarie
alla
 Memoria centrale: contiene dati e istruzioni attualmente
elaborati dal processore
 Memorie di massa: contengono dati e programmi che
non sono oggetto di elaborazione immediata
Anno accademico 2010-2011
22
Le memorie  2
• I parametri fondamentali che definiscono una memoria sono:
 Dimensione della parola (locazione di memoria)
 Modalità di accesso (diretto o sequenziale)
 Permanenza o volatilità dei dati
 Capacità (numero di locazioni disponibili), espressa in KB, MB, GB,
etc.
 Tempo di accesso, necessario per accedere ad una locazione di
memoria per un’operazione di lettura o scrittura, espresso in
nanosec, millisec, sec
• In base agli ultimi due parametri, le memorie si collocano a
diversi livelli di una gerarchia, che va da memorie più capaci
ma più lente (memorie di massa) a memorie piccole e veloci
(registri)
23
Anno accademico 2010-2011
Gerarchia di memorie
Gbyte
Tbyte
24
Anno accademico 2010-2011
La memoria centrale  1
• La memoria centrale o memoria principale, detta anche
RAM (Random Access Memory, ovvero memoria ad
accesso casuale, perché qualsiasi cella può essere
letta/scritta in un tempo, mediamente, costante), è la
memoria in linea con il processore, che contiene i dati
e i programmi che sono attualmente utilizzati/in
esecuzione
• Un programma, quando non è oggetto di elaborazione,
è memorizzato su memoria di massa (dischi)
• Quando deve essere eseguito, viene caricato tutto o in
parte, in memoria centrale (memoria virtuale)
25
Anno accademico 2010-2011
La memoria centrale  2
• Le caratteristiche fondamentali della memoria centrale
sono:
 accesso diretto alle informazioni
 velocità elevata
 volatilità: quando il computer viene spento, i dati e i
programmi presenti in memoria vengono cancellati
• La tecnologia utilizzata per la memoria centrale è
quella dei dispositivi a semiconduttori, che la fanno
apparire come una matrice di bit
 Ogni bit è presente come stato (alto o basso) di
tensione
26
Anno accademico 2010-2011
La memoria centrale  3
• La memoria principale è un insieme di locazioni o celle
• L’unità di memorizzazione, la dimensione della singola
cella, è il byte
• Ciascun byte nella memoria è individuato da un
indirizzo che lo distingue da tutti gli altri, costituito da
un numero variabile da 0 a 2N1, dove N è la
dimensione in bit dell’indirizzo (es. numero di bit/fili sul
bus indirizzi)
27
Anno accademico 2010-2011
La memoria centrale  4
• Esempio: memoria con capacità di 4 GB
32 bit
00000000
227
128 MB
128 MB  27220 byte 
 137438953472 byte
00000xxxxxxxxxxxxxxxxxxxxxxxxxxx
07FFFFFF
27 bit  indirizzo all’interno
del blocco
28
Anno accademico 2010-2011
Architettura della memoria centrale
Registro indirizzi
• Esempio: un registro a 16 bit indirizza
65536 posizioni di memoria
Decodificatore indirizzi
• Il decodificatore di indirizzi è un
dispositivo in grado di selezionare la
cella il cui indirizzo corrisponde a
quello contenuto nel registro indirizzi
• Il registro dati contiene l’informazione
da scrivere/letta sulla/dalla cella
indirizzata; la dimensione del registro
è uguale a quella delle celle di
memoria
Anno accademico 2010-2011
BUS
• Il registro indirizzi contiene l’indirizzo
della cella che deve essere acceduta;
la sua dimensione deve essere tale da
permettere che tutte le celle di
memoria possano essere indirizzate
Memoria centrale
Registro dati
29
Processore e RAM
• La connessione tra memoria e processore rappresenta un
limite degli elaboratori di Von Neumann
 Limite architetturale: il bus permette l’accesso ad una sola
informazione per volta (“collo di bottiglia”)
 Limite tecnologico: la velocità con cui il processore ottiene le
informazioni dalla memoria centrale (velocità di accesso della
RAM) è inferiore alla velocità con cui è in grado di elaborarle
• Soluzioni
 Allargamento del bus dati, in modo da poter estrarre più
istruzioni e/o dati per volta
 Superamento del limite tecnologico mediante introduzione di
una memoria intermedia tra memoria centrale e processore
che approssimi la velocità del processore
30
Anno accademico 2010-2011
La memoria cache
• Piccola RAM molto veloce, interposta tra CPU e memoria
principale, per migliorare le prestazioni del sistema
 Quando viene indirizzata una parola, quella parola e alcune di
quelle vicine vengono trasferite dalla lenta memoria centrale
nella più piccola e veloce memoria cache, in modo che la
parola successiva sia accessibile più velocemente (principio di
località spaziotemporale del software)
31
Anno accademico 2010-2011
La memoria ROM
• Una parte della memoria centrale è la ROM (Read Only
Memory ), una memoria a sola lettura, destinata a
contenere informazioni non variabili
• Caratteristiche delle memorie ROM:
 accesso casuale alle informazioni
 velocità elevata (inferiore alle RAM)
• La ROM viene scritta in modo permanente in fase
costruttiva: le celle della ROM possono essere
successivamente lette, ma mai riscritte
• Viene usata per memorizzare programmi di sistema
32
Anno accademico 2010-2011
Il software della ROM  1
• La ROM contiene il software e i dati necessari ad
inizializzare il computer ed a far funzionare i dispositivi
periferici
• Il nucleo del software della ROM è costituito dalle
routine di avviamento che comprendono il caricatore di
bootstrap ed il ROM BIOS
• Le routine di avviamento realizzano l’inizializzazione del
calcolatore:
 Ne effettuano un rapido controllo di affidabilità, per
accertare che tutte le componenti hardware siano
perfettamente funzionanti
 Caricano il sistema operativo dal disco (caricatore di
bootstrap)
33
Anno accademico 2010-2011
Il software della ROM  2
• Il caricatore di bootstrap ha la funzione di leggere un
programma di lancio dal disco, detto bootstrap, e di
trasferire ad esso il controllo: il boostrap carica il nucleo
del sistema operativo e lo manda in esecuzione
• Il ROM BIOS  Binary InputOutput System  è la
parte della ROM attiva quando il computer è al lavoro: il
suo ruolo è quello di fornire un insieme di servizi di
base richiesti per il funzionamento delle periferiche
34
Anno accademico 2010-2011
Operazioni sulla memoria centrale
• Le operazioni che si effettuano sulla memoria sono
operazioni di lettura e scrittura
• Entrambe presuppongono l’utilizzo di un indirizzo che
identifica
univocamente
la
cella
interessata
all’operazione
• L’operazione di scrittura è distruttiva, cioè cancella
l’informazione precedentemente contenuta nella cella
• L’operazione di lettura preserva il contenuto della cella
indirizzata: all’esterno della memoria centrale viene
trasferita copia dell’informazione
35
Anno accademico 2010-2011
La memoria secondaria
• Esistono diversi dispositivi di memoria
secondaria: dischi magnetici (hard disk),
dischi ottici (CD, DVD), dispositivi USB,
memorie flash
• Memoria non volatile ad alta capacità
Dischi magnetici
Anno accademico 2010-2011

Il disco fisso è costituito da uno o più
piatti metallici ricoperti di materiale
magnetico su entrambe le facce

Ciascuna superficie è associata ad una o
più testine di lettura/scrittura che si
muovono radialmente per leggere/
scrivere l’informazione organizzata in
tracce concentriche
36
I dischi magnetici  1
•
I dischi magnetici rappresentano il mezzo fondamentale per la
memorizzazione di massa
 I dischi ruotano ad una velocità (costante) compresa tra i 60 e i
200 giri al secondo
37
Anno accademico 2010-2011
I dischi magnetici  2
• L’informazione è disposta sul
disco in tracce, ovvero in
cerchi concentrici
Platters
Tracks
Platter
• La densità dei bit decresce
dalle tracce interne alle più
esterne
per
mantenere
costante la quantità di dati che
passano sotto le testine
nell’unità di tempo
• Le tracce sono divise in settori
• La capacità di memorizzazione dei dischi cresce in
conseguenza allo sviluppo tecnologico
Sectors
Track
Anno accademico 2010-2011
38
I dischi magnetici  3
• Il numero di bit contenuti in una traccia è dell’ordine
delle centinaia di migliaia (512/4096 byte a settore)
• Centinaia di settori (512/1024 per traccia)
• Decine di migliaia di cilindri (tracce concentriche
disposte sulle diverse facce dei diversi dischi)
• Per leggere (o scrivere) sul disco, la testina si deve
posizionare sulla traccia che contiene il dato ed
attendere che il dato passi sotto di essa
 Le operazioni di lettura/scrittura si basano sulla proprietà
del campo magnetico di indurre/essere indotto il/dal
passaggio di corrente in una bobina
Anno accademico 2010-2011
39
I dischi magnetici  4
• La magnetizzazione avviene infatti mediante la testina
magnetica (una piccola bobina racchiusa in un involucro
di metallo dotato di una minuscola fessura, il traferro)
• Facendo passare corrente nella bobina si induce un
campo magnetico nel traferro (invertendo la corrente si
inverte anche il campo)
• Quando si fa passare corrente attraverso la testina
alternandone la direzione, le aree del disco al di sotto
della testina si magnetizzano in una delle due direzioni:
questo procedimento rappresenta la scrittura su disco
40
Anno accademico 2010-2011
I dischi magnetici  5
• I dati binari che l’unità scrive sul disco sono tradotti in
un formato costituito da una serie di aree magnetizzate
in un senso o nell'altro
• Lettura da disco: poiché le particelle magnetizzate sono
circondate da un campo magnetico, quando il traferro
passa sul disco le variazioni del campo inducono sulla
testina una corrente che si manifesta con variazioni di
voltaggio alle estremità della bobina; i circuiti di lettura
decodificano le variazioni nell’andamento dell’intensità di
corrente riconducendole a 0/1
41
Anno accademico 2010-2011
Accesso al disco
• Il tempo medio di accesso
memorizzata su disco è dato da
all’informazione
T  tseek  tlat  ttr
 tseek è il
tempo di ricerca, necessario per posizionare la testina
 tlat è il
tempo di latenza, necessario perché l’informazione
 ttr è il
tempo di trasferimento ; dipende dalla velocità di
sulla
traccia
che
contiene
dall’ampiezza dello spostamento
l’informazione;
dipende
ricercata passi sotto la testina; dipende dalla velocità di
rotazione dei dischi
rotazione, dalla densità di registrazione e dalla quantità di
informazione da trasferire
Anno accademico 2010-2011
42
I dischi ottici  1
• Sui dischi ottici si utilizza la tecnologia laser per
realizzare le operazioni di lettura/scrittura
• Densità dei bit uniforme
 Un’unica traccia elicoidale o…
 …tracce più lontane dal centro del disco sono più lunghe e
contengono un maggior numero di settori (fino al 40% in
più rispetto alle tracce vicine al centro di rotazione)
43
Anno accademico 2010-2011
I dischi ottici  2
• Sui dischi di lettura/scrittura i dati possono essere
modificati più e più volte (dischi a cambio di fase)
• I dischi WORM, Write OnceRead Many, si possono
scrivere una sola volta
• La tecnologia originale per dischi WORM consiste
nell’inserire una pellicola di alluminio tra due piatti di
plastica o di vetro (o un pigmento polimerico)
• Per scrivere un bit, l’unità usa un raggio laser per
praticare un piccolo foro nell’alluminio (o opacizzare il
pigmento): l’informazione può venir distrutta ma non
alterata
44
Anno accademico 2010-2011
I dispositivi di InputOutput
• Insieme di dispositivi che consentono l’acquisizione di dati (input), la
loro archiviazione (storage) e la loro presentazione verso il mondo
esterno (output)
• Si possono classificare in base a tre diverse caratteristiche:

Comportamento: Input (read once), output (write only),
memoria (rilettura/riscrittura)

Partner: uomo o macchina

Velocità del flusso dei dati: quantità di dati trasferiti nell’unità
di tempo da o verso la CPU o la memoria centrale
Anno accademico 2010-2011
input
input
input/output
storage
uomo
uomo
macchina
macchina

+
102 KB/s
velocità
Tastiera
Mouse
Rete
Hard Disk
104 KB/s
45
Linguaggio macchina e assembler
46
Anno accademico 2010-2011
Il linguaggio macchina
• Quando il programma è in esecuzione, è memorizzato nella
memoria principale; esso è rappresentato da una serie di numeri
binari che codificano le istruzioni eseguibili dall’unità centrale
00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
PC
• Il programma non è quindi distinguibile dai dati osservando il
contenuto della memoria; le istruzioni sono individuate dai valori
assunti dal registro PC durante l’esecuzione del programma
• Ogni codice binario codifica il tipo di istruzione (OPCODE) ed
eventuali parametri (es. registri, indirizzi in memoria)
• I primi calcolatori si programmavano direttamente in linguaggio
macchina!
Anno accademico 2010-2011
47
Il set di istruzioni macchina
• L’insieme delle istruzioni eseguibili, e la relativa
codifica, sono generalmente diverse per modelli diversi
di processore
• Le istruzioni possono essere codificate con un numero
variabile di bit (es. Pentium) o con un numero fisso
(es. MIPS  32 bit)
• Le categorie di istruzioni normalmente disponibili sono:
Trasferimento dati: spostano dati (byte, word) tra registri,
memoria principale e dispositivi di ingresso/uscita (I/O)
Aritmeticologiche: eseguono i calcoli nella ALU
Salti (condizionati e incondizionati): prendono decisioni e
alterano la normale esecuzione sequenziale delle istruzioni
Anno accademico 2010-2011
48
Esempio di programma
in linguaggio macchina
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010100
1000000000000000
0010000000010100
0101000000010100
1101000000000000
………………………
………………………
………………………
………………………
………………………
Anno accademico 2010-2011
leggi un valore in ingresso e ponilo nella cella numero 16 (variabile x)
leggi un valore e ponilo nella cella numero 17 (variabile y)
leggi un valore e ponilo nella cella numero 18 (variabile z)
leggi un valore e ponilo nella cella numero 19 (variabile r)
carica il registro A con il contenuto della cella 16
carica il registro B con il contenuto della cella 17
somma i contenuti dei dei registri A e B
copia il contenuto del registro A nella cella 20 (risultato, variabile s)
carica il registro A con il contenuto della cella 18
carica il registro B con il contenuto della cella 19
somma i contenuti dei registi A e B
carica il registro B con il contenuto della cella 20
moltiplica i contenuti dei registri A e B
copia il contenuto del registro A nella cella numero 20
scrivi in output il contenuto della cella numero 20
arresta l’esecuzione (HALT)
spazio per la variabile x (cella 16)
spazio per la variabile y (cella 17)
spazio per la variabile z (cella 18)
spazio per la variabile r (cella 19)
spazio per la variabile s (cella 20)
49
Assembler
• Per facilitare la programmazione è stato definito il linguaggio
assembly
• L’assembly impiega una notazione simbolica che è in stretta
relazione con i codici in linguaggio macchina; il programma
scritto in assembly è convertito automaticamente in linguaggio
macchina per mezzo del programma traduttore, l’assembler
registro
LOAD R1, MEM1
CMP R1, R2
BREQ RISZERO
STORE R1, MEM1
RISZERO:
LOAD R2, MEM2
Anno accademico 2010-2011
Assembler
indirizzo di
memoria
10001000110110101101010101010100
01001000100100000000000000000000
11000000000000000000000000001000
10011000110110101101010101010100
10001001010110101101001000001100
OPCODE
(LOAD)
50
Trasferimento dei dati
• Le istruzioni di trasferimento dati permettono di copiare il
valore di un dato fra registri o fra un registro e la memoria
• Si fa riferimento ad un assembly generico
MEM
memoria
registro
LOAD REG1, MEM
LOAD REG1, [REG2]
REG1
Indirizzamento diretto
registro
memoria
STORE REG1, MEM
STORE REG1, [REG2]
REG1
registro
registro
MOVE REG1, REG2
REG2
Anno accademico 2010-2011
Indirizzamento indiretto
51
Operazioni aritmeticologiche
• Permettono di eseguire operazioni aritmetiche o logiche
su due operandi
REG2
ADD REG1, REG2
ADD
OR REG1, REG2
REG1
ALU
REG1 0010 1100 1100 0101 1100 1111 0101 0000
REG2 1010 1110 0000 0000 0010 0001 1000 0001
REG1 1010 1110 1100 0101 1110 1111 1101 0001
52
Anno accademico 2010-2011
Istruzioni di salto  1
• Modificano il flusso di esecuzione del programma
 Il salto è condizionato se viene effettuato solo quando si
verifica una certa condizione
BRanch EQual
UGUALI:
CMP REG1, REG2
BREQ UGUALI
LOAD REG1, MEM1
Confronta il contenuto
dei registri REG1 e
REG2
STORE REG2, MEM1
53
Anno accademico 2010-2011
Istruzioni di salto  2
• L’istruzione CMP confronta i due argomenti,
assegnando valori particolari a bit di condizione che si
trovano nel registro PSW (zero, segno)
• L’istruzione di salto condizionato può essere basata su
diverse condizioni: BRNE (branch not equal), BRLE
(branch less equal), etc.
• L’istruzione di salto incondizionato, BRANCH, effettua
sempre il salto
54
Anno accademico 2010-2011
Assembler e linguaggi di alto livello
•
Il programma in assembler…
LOAD REG1, a
LOAD REG2, b
ADD REG1, REG2
…corrisponde all’unica
istruzione C:
LOAD REG3, c
LOAD REG4, d
e(ab)(cd);
ADD REG3, REG4
MULT REG1, REG3
STORE REG1, e
55
Anno accademico 2010-2011
Il sistema operativo
56
Anno accademico 2010-2011
Cos’è un sistema operativo  1
• Il software può essere diviso in due grandi classi:
 i programmi di sistema, che gestiscono le funzionalità del
sistema di calcolo
 i programmi applicativi, che risolvono i problemi degli utenti
• L’insieme dei programmi di sistema viene comunemente
identificato con il nome di Sistema Operativo (SO)
• Definizione: Un sistema operativo è un programma che
controlla l’esecuzione dei programmi applicativi ed agisce
come interfaccia fra le applicazioni e l’hardware del
calcolatore
57
Anno accademico 2010-2011
Cos’è un sistema operativo  2
• Tutte le piattaforme hardware/software richiedono un
sistema operativo
• Quando si accende un elaboratore, occorre attendere alcuni
istanti per poter iniziare a lavorare: durante questa pausa il
computer carica il SO
58
Anno accademico 2010-2011
Scopo del sistema operativo
• Gestione EFFICIENTE delle risorse del sistema di elaborazione
• Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina
59
Anno accademico 2010-2011
Percezione del sistema operativo
• Per l’utente, la percezione del calcolatore dipende
dall’interfaccia del SO
 SO progettato pensando alla facilità d’uso
 Qualche attenzione alle prestazioni
 Scarsa attenzione all’utilizzo delle risorse
• Dal punto di vista del sistema di calcolo…
 Il SO viene percepito come un gestore di risorse (CPU,
RAM, I/O) e come un programma di controllo
 Arbitra l’esecuzione dei programmi utente
• Non c’è uniformità nel definire cosa fa parte/non
compete del/al SO
60
Anno accademico 2010-2011
Esempio: il SO come gestore di risorse  1
• Si consideri un ristorante con un capocuoco (che dirige la
cucina) ed i suoi aiutanti, camerieri e clienti:
 I clienti scelgono un piatto dal menù
 Un cameriere prende l’ordine e lo consegna al capocuoco
 Il capocuoco riceve l’ordine e assegna uno o più aiutanti alla
preparazione del piatto
 Ogni aiutante si dedicherà alla preparazione di un piatto, il che
potrà richiedere più attività diverse
 Il capocuoco supervisiona la preparazione dei piatti e
gestisce le risorse (limitate) disponibili
61
Anno accademico 2010-2011
Esempio: il SO come gestore di risorse  2
• Il capocuoco è il sistema operativo!
 I clienti sono gli utenti
 Le ricette associate ai piatti sono i programmi
 Il menù ed il cameriere costituiscono l’interfaccia verso il
sistema operativo (grafica e non)
 Gli aiutanti sono i processi
 La cucina è il computer; pentole, fornelli, etc. sono le
componenti hardware
62
Anno accademico 2010-2011
Esempio: il SO come gestore di risorse  3
• Problemi del capocuoco:
 Esecuzione fedele delle ricette
 Allocazione efficiente delle risorse esistenti (aiutanti, fornelli,
etc.)
 Coordinamento efficiente degli aiutanti
 Licenziamento degli aiutanti che non si comportano secondo
le regole
• Problemi del sistema operativo:
 Esecuzione dei programmi utente
 Efficienza nell’uso delle risorse (processori, memoria, dischi,
etc.)
 Coordinamento dei processi
 Protezione nell’uso delle risorse e abort dei processi che se
appropriano indebitamente
63
Anno accademico 2010-2011
Il SO come macchina estesa  1
• Visione a strati delle componenti hardware/software che
compongo un sistema di elaborazione
64
Anno accademico 2010-2011
Il SO come macchina estesa  2
• Il SO può essere inteso come uno strumento che virtualizza
le caratteristiche dell’hardware sottostante, offrendo
all’utente la visione di una macchina astratta più potente e
più semplice da utilizzare di quella fisicamente disponibile
• In questa visione, un SO…
 …nasconde a programmatori/utenti i dettagli dell’hardware e
fornisce un’interfaccia conveniente e facile da usare
 …agisce come intermediario tra programmatore/utente e
hardware
• Parole chiave
 Indipendenza dall’hardware
 Comodità d’uso
 Programmabilità
65
Anno accademico 2010-2011
Il SO come macchina estesa  3
• L’utente è in grado di utilizzare la macchina fisica senza
conoscere i dettagli della sua struttura interna e del suo
funzionamento
3.
4.
Anno accademico 2010-2011
re
2.
Hardware — fornisce le risorse fondamentali di
calcolo (CPU, memoria, device di I/O)
Sistema Operativo —
controlla e coordina
l’utilizzo delle risorse hardware da parte dei
programmi applicativi dell’utente
Programmi Applicativi — definiscono le modalità
di utilizzo delle risorse del sistema, per risolvere
i problemi di calcolo degli utenti (compilatori,
database, video game, programmi gestionali)
Utenti — persone, altri macchinari, altri
elaboratori
Sy
1.
ions soft w
licat
are
p
Ap
ms softwa
st e
Hardware
Visione “a cipolla” del sistema
di calcolo
66
Architettura del sistema operativo
• I SO sono costituiti da un insieme di moduli, ciascuno
dedicato a svolgere una determinata funzione
• I vari moduli del SO interagiscono tra loro secondo regole
precise, al fine di realizzare le funzionalità di base della
macchina
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Anno accademico 2010-2011
Gestore del
File System
Gestore della
Memoria Centrale
KERNEL
• L’insieme dei moduli
per la gestione della
CPU e della memoria
centrale è il kernel
67
Ancora sul sistema operativo
• Riassumendo: Il sistema operativo fornisce un ambiente per
eseguire programmi in modo conveniente ed efficiente;
funge infatti da…
Allocatore di risorse — controlla, distribuisce ed alloca le
risorse (in modo equo ed efficiente)
Programma di controllo — controlla l’esecuzione
programmi utente e le operazioni sui dispositivi di I/O
dei
Esempio: il filesystem
Si ha a che fare con file, directory, etc., e non ci si deve
preoccupare di come i dati sono memorizzati sul disco
68
Anno accademico 2010-2011
Compiti del sistema operativo
• Gestione dei processi
• Gestione della memoria principale
• Gestione della memoria di massa (file system)
• Realizzazione dell’interfaccia utente
• Protezione e sicurezza
69
Anno accademico 2010-2011
La gestione dei processi  1
• Un processo è un programma in esecuzione
 Un processo utilizza le risorse fornite dal sistema di elaborazione
per assolvere ai propri compiti
 La terminazione di un processo prevede il recupero di tutte le
risorse riutilizzabili ad esso precedentemente allocate
• Normalmente, in un sistema vi sono molti processi, di alcuni
utenti, e alcuni sistemi operativi, che vengono eseguiti in
concorrenza su una o più CPU
• La concorrenza è ottenuta effettuando il multiplexing delle
CPU fra i vari processi
70
Anno accademico 2010-2011
La gestione dei processi  2
• Il sistema operativo è responsabile delle seguenti attività
riguardanti la gestione dei processi:
 creazione e terminazione dei processi
 sospensione e riattivazione dei processi
 gestione dei deadlock
 comunicazione tra processi
 sincronizzazione tra processi
• Il gestore dei processi “realizza” una macchina virtuale in cui
ciascun programma opera come se avesse a disposizione
un’unità di elaborazione dedicata
71
Anno accademico 2010-2011
La gestione dei processi  3
• Il gestore dei processi è il modulo che si occupa del
controllo, della sincronizzazione, dell’interruzione e della
riattivazione dei programmi in esecuzione cui viene
assegnato un processore
• La gestione dei processi viene compiuta secondo modalità
diverse, in funzione del tipo di utilizzo cui il sistema è rivolto
• Il programma che si occupa della distribuzione del tempo di
CPU tra i vari processi attivi, decidendone l’avvicendamento,
è chiamato scheduler
• Nel caso di sistemi multiprocessore, lo scheduler si occupa
anche di gestire la cooperazione tra le diverse CPU presenti
nel sistema (bilanciandone il carico)
72
Anno accademico 2010-2011
Ciclo di vita dei processi
top nella coda di scheduling
running
nascita
ready
tempo scaduto
evento
termine
Anno accademico 2010-2011
attesa evento (es. I/O)
wait
73
Politiche di scheduling
• Le politiche di scheduling sono raggruppabili in due grandi
categorie:
 Preemptive: l’uso della CPU da parte di un processo può
essere interrotto in un qualsiasi momento, e la risorsa
concessa ad altro processo
 Non preemptive: una volta che un processo ha ottenuto l’uso
della CPU, è unico proprietario della risorsa finché non ne
decide il rilascio
74
Anno accademico 2010-2011
Sistemi monotasking
• I SO che gestiscono l’esecuzione di un solo programma per
volta (un solo processo) sono detti monotasking
• Non è possibile sospendere un processo per assegnare la
CPU ad un altro
• Sono storicamente i primi SO (es. MSDOS)
Tempo di utilizzo della CPU
Tempo di attesa di eventi
esterni
C
B
A
t
T
Anno accademico 2010-2011
75
Sistemi multitasking
• I SO che permettono l’esecuzione contemporanea di più
programmi sono detti multitasking o multiprogrammati
• Un programma può essere interrotto e la CPU passata a un
altro programma
C
Tempo di utilizzo della CPU
B
Tempo di attesa di eventi
esterni
A
t
Tmulti-tasking Tmono-tasking
Anno accademico 2010-2011
76
Sistemi timesharing
• Un’evoluzione dei sistemi multitasking sono i sistemi
timesharing
• Ogni processo viene eseguito ciclicamente per piccoli quanti
di tempo
• Se la velocità del processore è sufficientemente elevata si
ha l’impressione di un’evoluzione parallela dei processi
• Esempio
0.00”
 Ipotesi: 1 MIPS, 4 processi,
D
A
0.25 s/utente
 Conseguenze: 0.25 MIPS/utente,
TELA  4  TCPU
Anno accademico 2010-2011
0.75”
0.25”
C
0.50”
B
77
Timesharing: diagramma temporale
D
Processo
CPU burst
A
3
B
2
C
4
D
3
C
B
A
t
78
Anno accademico 2010-2011
La gestione della memoria principale  1
• La memoria principale…

…è un “array” di byte indirizzabili singolarmente

…è un deposito di dati facilmente accessibile e condiviso tra la CPU
ed i dispositivi di I/O
• Il SO è responsabile delle seguenti attività riguardanti la gestione
della memoria principale:

Tenere traccia di quali parti della memoria sono usate e da chi

Decidere quali processi caricare quando diventa disponibile spazio in
memoria

Allocare e deallocare lo spazio di memoria quando necessario
• Il gestore di memoria “realizza” una macchina virtuale in cui
ciascun programma opera come se avesse a disposizione una
memoria dedicata
79
Anno accademico 2010-2011
La gestione della memoria principale  2
•
L’organizzazione e la gestione della memoria centrale è uno
degli aspetti più critici nel disegno di un SO
•
Il gestore della memoria è quel modulo del SO incaricato di
assegnare la memoria ai task (per eseguire un task è
necessario che il suo codice sia caricato in memoria)
•
La complessità del gestore della memoria dipende dal tipo di
SO
•
Nei SO multitasking, più programmi possono essere
caricati contemporaneamente in memoria
•
Problema: come allocare lo spazio in maniera ottimale?
80
Anno accademico 2010-2011
Allocazione lineare
0000x
Programma A
PROBLEMA
!!!!
Programma D
Programma B
FRAMMENTAZIONE
Programma C
Anno accademico 2010-2011
Memoria
81
Paginazione
Programma A
0000x
Programma A
Programma A
E
Programma B
Programma BF
Programma
Programma D
Programma F
Anno accademico 2010-2011
Memoria
82
La memoria virtuale  1
• Spesso la memoria non è sufficiente per contenere
completamente tutto il codice dei processi
• Si può simulare una memoria più grande tenendo nella
memoria di sistema (RAM) solo le parti di codice e dati che
servono in quel momento
• Si usa il concetto di memoria virtuale
• I dati e le parti di codice relativi a programmi non in
esecuzione possono essere tolti dalla memoria centrale e
“parcheggiati” su disco nella cosiddetta area di swap
• I processori moderni sono dotati di meccanismi hardware
per facilitare la gestione della memoria virtuale
83
Anno accademico 2010-2011
La memoria virtuale  2
Memoria
Programma A-1
0000x
Programma B-1
Programma D
Swap
Programma A-2
Programma A-3
Programma B-2
84
Anno accademico 2010-2011
La memoria virtuale  2
Memoria
Programma A-2
0000x
Programma B-1
Programma D
Swap
Programma A-1
Programma A-3
Programma B-2
85
Anno accademico 2010-2011
La gestione della memoria secondaria  1
• Poiché la memoria principale è volatile e troppo piccola per
contenere tutti i dati e tutti i programmi in modo
permanente, il computer è dotato di memoria secondaria
 In generale, la memoria secondaria è data da hard disk e
dischi ottici
• Il SO garantisce una visione logica uniforme del processo di
memorizzazione:
 Astrae dalle caratteristiche fisiche dei dispositivi per definire
un’unità di memorizzazione logica  il file
 Ciascuna periferica viene controllata dal relativo device driver,
che nasconde all’utente le caratteristiche fisiche variabili
dell’hardware: modalità e velocità di accesso, capacità,
velocità di trasferimento
86
Anno accademico 2010-2011
La gestione della memoria secondaria  2
• Il SO è responsabile delle seguenti attività riguardanti la
gestione della memoria secondaria:
 Allocazione dello spazio
 Gestione dello spazio libero
 Ordinamento efficiente delle richieste di accesso al disco (disk
scheduling)
87
Anno accademico 2010-2011
La gestione del file system  1
• Il file è l’astrazione informatica di un archivio di dati
 Il concetto di file è indipendente dal mezzo sul quale viene
memorizzato (che ha
organizzazione fisica)
caratteristiche
proprie
e
propria
• Un file system è composto da un insieme di file
• Il SO è responsabile delle seguenti attività riguardanti la
gestione del file system:
 Creazione e cancellazione di file
 Creazione e cancellazione di directory
 Manipolazione di file e directory
 Codifica del file system sulla memoria secondaria
88
Anno accademico 2010-2011
La gestione del file system  2
• Il gestore del file system è il modulo del SO incaricato di
gestire le informazioni memorizzate sui dispositivi di
memoria di massa
• Il gestore del file system deve garantire la correttezza e la
coerenza delle informazioni
• Nei sistemi multiutente, fornisce meccanismi di protezione
per consentire agli utenti di proteggere i propri dati
dall’accesso di altri utenti non autorizzati
• Le funzioni tipiche del gestore del file system sono:
 Fornire un meccanismo per l’identificazione dei file
 Fornire metodi opportuni di accesso ai dati
 Rendere
trasparente la struttura fisica del supporto di
memorizzazione
 Implementare meccanismi di protezione dei dati
Anno accademico 2010-2011
89
Organizzazione del file system
• Quasi tutti i SO utilizzano un’organizzazione gerarchica del
file system
• L’elemento utilizzato per raggruppare più file insieme è la
directory
• L’insieme gerarchico delle
directory e dei file può essere
rappresentato attraverso un
grafo (un albero nei SO più
datati) delle directory
Directory
File
Grafo delle directory
90
Anno accademico 2010-2011
La gestione dei dispositivi di I/O
• La gestione dell’I/O richiede:
 Un’interfaccia comune per la gestione dei
device driver
 Un insieme di driver per dispositivi hardware specifici
 Un
sistema di gestione di buffer per il caching delle
informazioni
• Il gestore dei dispositivi di I/O è il modulo del SO incaricato
di assegnare i dispositivi ai task che ne fanno richiesta e di
controllare i dispositivi stessi
• Da esso dipende la qualità e il tipo di periferiche
riconosciute dal sistema
• Il gestore delle periferiche offre all’utente una versione
astratta delle periferiche hardware; l’utente ha a
disposizione un insieme di procedure standard di alto livello
per leggere/scrivere da/su una periferica che “percepisce”
come dedicata
Anno accademico 2010-2011
91
Device driver
• Il controllo dei dispositivi di I/O avviene attraverso speciali
moduli software, detti device driver
• I device driver sono spesso realizzati dai produttori dei
dispositivi stessi, che ne conoscono le caratteristiche fisiche
in maniera approfondita
• I device driver implementano le seguenti funzioni:
 Rendono trasparenti le caratteristiche fisiche tipiche di ogni
dispositivo
 Gestiscono la comunicazione dei segnali verso i dispositivi
 Gestiscono i conflitti, nel caso in cui due o più task vogliano
accedere contemporaneamente allo stesso dispositivo
Anno accademico 2010-2011
92
L’interfaccia utente  1
• Tutti i SO implementano meccanismi per facilitare l’utilizzo
del sistema di calcolo da parte degli utenti
• L’insieme di tali meccanismi di accesso al computer prende
il nome di interfaccia utente
• Serve per…
 …attivare un programma, terminare un programma, etc.
 …interagire con le componenti del sistema operativo (gestore
dei processi, file system, etc.)
93
Anno accademico 2010-2011
L’interfaccia utente  2
• Interfaccia testuale:
 Interprete dei comandi (shell)
 Esempio: MSDOS/UNIX
• Interfaccia grafica (a finestre):
 L’output dei vari programmi viene visualizzato in maniera
grafica all’interno di finestre
 L’utilizzo di grafica rende più intuitivo l’uso del calcolatore
 Esempio: WINDOWS/Linux
• Differenze:
 Cambia il “linguaggio” utilizzato, ma il concetto è lo stesso
 Vi sono però differenze a livello di espressività
94
Anno accademico 2010-2011
L’interfaccia grafica
• Realizza la metafora della scrivania  desktop
 Interazione semplice via mouse
 Le icone rappresentano file, directory, programmi, azioni, etc.
 I diversi tasti del mouse, posizionato su oggetti differenti,
provocano diversi tipi di azione: forniscono informazioni
sull’oggetto in questione, eseguono funzioni tipiche
dell’oggetto, aprono directory  folder, o cartelle, nel gergo
GUI (Graphical User Interface)
95
Anno accademico 2010-2011
Protezione e sicurezza  1
• Protezione  è il meccanismo usato per controllare l’accesso
da parte di processi e/o utenti a risorse del sistema di
calcolo
• Sicurezza  è il meccanismo di difesa implementato dal
sistema per proteggersi da attacchi interni ed esterni
 Denialofservice, worm, virus, hacker
• In prima istanza, il sistema distingue gli utenti, per
determinare chi può fare cosa
 L’identità utente (user ID) include nome dell’utente e numero
associato  uno per ciascun utente
 L’user ID garantisce l’associazione corretta di file e processi
all’utente e ne regola la manipolazione
 L’identificativo di gruppo permette inoltre ad un insieme di
utenti di accedere correttamente ad un gruppo di risorse
comuni (file e processi)
Anno accademico 2010-2011
96
Protezione e sicurezza  2
• In Linux…
$ ls l
97
Anno accademico 2010-2011
Sistemi operativi commerciali
• In commercio sono presenti una grande quantità di sistemi
operativi diversi
• In passato, la tendenza delle case costruttrici di sistemi di
elaborazione era di sviluppare sistemi operativi proprietari
per le loro architetture
• La tendenza attuale è quella dello sviluppo di sistemi
operativi portabili su piattaforme hardware diverse
98
Anno accademico 2010-2011
Windows
• CPU Intel (da 80386),
MIPSR4000, etc.
ma
anche
per
DECAXP,
• Multitask
• Monoutente/Multiutente
• NTFS (NT File System)
• Microkernel, thread
• Sistema a 32/64 bit
99
Anno accademico 2010-2011
Linux
• Nato nel ‘91, grazie a Linus Torvalds, studente finlandese
dell’Università di Helsinki

“Sei fortunato che non sei un mio studente. Non prenderesti un buon
voto per un tale progetto.” (Andrew S. Tanenbaum, Università di
Amsterdam, creatore del sistema operativo MINIX e professore di SO,
dal quale Torvalds prese spunto per Linux)
• Sviluppato su piattaforma Intel 80386, fu distribuito da subito su
Internet (free e opensource)
• Multitask
• Multiutente
• L'architettura del sistema è Unixlike: un kernel molto “piccolo” che
contiene solo funzioni fondamentali per la gestione delle risorse del
computer (CPU, memoria, dischi, rete, I/O) ed una larga collezione
di programmi di sistema che l’utente usa per richiedere servizi al SO
100
Anno accademico 2010-2011
Conclusioni: i SO oggi
• Sistemi complessi che presentano miriadi di problemi e
milioni di linee di codice (1001000 programmatori per
anno)
• Interazioni complesse
 Universali (eseguiti su piattaforme diverse)
 Differenti classi di utenti hanno necessità diverse
 La performance è cruciale!
• Poco compresi:
 Il SO tipicamente “dura” più di chi lo ha programmato ed è
troppo grande per essere compreso da una singola persona
 Mai completamente privi di errori (OS/360 rilasciato con 1000
bug); comportamenti difficili da prevedere; aggiustamenti
spesso eseguiti per tentativi
Anno accademico 2010-2011
101