Struttura astratta della
memoria
Memoria centrale…
(Quasi) tutto cio’ che “accade” in un sistema
di calcolo passa per la memoria centrale
• Memoria centrale
Load e store per trasferire da memoria a
registri della CPU e viceversa
– il solo dispositivo di memoria al quale la
CPU puo’ accedere direttamente
Memoria volatile, ad accesso veloce,
dalla capacita’ limitata
• Memoria secondaria (di massa)
Dal punto di vista OS, si tratta di
gestire le possibili sequenze di indirizzi
generate per l’accesso a memoria
– Estensione della memoria centrale che
fornisce grande capacita’ di memoria
non volatile
Gerarchia dei dispositivi di
memoria…
10 nsec
…
< 1 KB
1 nsec
2 nsec
… qualche osservazione
memory
• Electronic disk e’ accessibile come un file system
(volatile o non volatile alimentato a batteria)
1 MB
64-512 MB
Volatile
• Cache interamente gestite via hardware
(ex., next instruction register)
Permanente
10 msec
5-50 GB
Velocita’
• Movimento tra i vari livelli sia implicito che esplicito
•In generale caching e’ l’operazione di copia di
informazioni in dispositivi di memoria piu’ veloci (es. la
Costo
memoria centrale puo’ essere vista come una cache per la
memoria secondaria)
… e qualche attributo
consistenza
• Consistenza tra copie dello stesso item in diverse
memorie
• Coerenza tra diverse cache (in un multiprocessor, per
esempio) oppure tra diverse repliche di un file in un file
system distribuito
coerenza
Sistemi Operativi
cache
1
Cos’e’ un Sistema Operativo (OS)
Un semplice schema…
• Un sistema che agisce da intermediario tra
l’utente e il computer
• Scopi del OS:
– Rendere il computer piu’ conveniente
all’uso (“user-friendly”)
– Utilizzare l’hardware in maniera
efficiente
Sistemi Operativi
7
Sistemi Operativi
… e un dettaglio delle sue componenti
1. Hardware – fornisce le risorse di base (CPU, memorie,
dispositivi di I/O).
2. OS – controlla e coordina l’uso dell’hardware fra i vari
programmi applicativi
3. Programmi di sistema – definiscono il modo in cui le risorse
di sistema sono utilizzate per risolvere i problemi dell’utente
(p.es., compilatori, database, fogli elettronici, ecc…)
4. Programmi applicativi – Applicazioni costruite per risolvere
specifici problemi (p.es. sistema di prenotazione voli)
8
Sistema operativo è:
1. Allocatore di risorse – un sistema di controllo dispone di
risorse hw e sw utili per la risoluzione di problemi. Il S.O.
gestisce tali risorse allocandole in base alle necessità definite
dai loro compiti, a programmi e a utenti specifici.
2. Programma di controllo – controlla e coordina l’esecuzione dei
programmi utente in modo da impedire che vengano commessi
errori o che il computer venga utilizzato in modo non corretto.
5. Utenti (persone, macchine o altri computer) – possono
utilizzare il sistema com’e’ e/o costruire programmi applicativi
Sistemi Operativi
9
Sistemi Operativi
10
I compiti del OS…
• Fa da interfaccia per l’utente
(convenienza!!!)
• Gestisce ed alloca le risorse
(efficienza!!!)
convenienza
kernel
… e i suoi “confini”
efficienza
Kernel – quel programma che e’ sempre in esecuzione sul
computer – contiene le funzioni comuni di allocazione e
controllo utili a tutti i programmi (es. Controllo dispositivi
I/O)
Sistemi Operativi
11
Ex: driver di
uno scanner
Sistemi Operativi
12
2
… e ancora sui confini
Breve evoluzione dei sistemi di
calcolo e dei relativi OS
•
Prima generazione 1945 - 1955
•
Seconda generazione 1955 - 1965
•
Terza generazione 1965 – 1980
•
Quarta generazione 1980 – 1995
•
Quinta generazione 1995 – oggi
– Condensatori, programmazione wired
– transistors, sistemi batch
– Circuiti integrati, multiprogrammazione
– Personal computers
attenzione: sottile e’ il confine
tra programmi di sistema e
OS intero !
Sistemi Operativi
– Computer “tascabili” (wireless)
Sistemi Operativi
13
Multiprogrammazione:
organizzazione di memoria
Piu’ job sono tenuti in memoria allo stesso
tempo, e la CPU puo’ essere condivisa tra essi
14
Compiti di un OS per
multiprogrammazione
• Scheduling della CPU (al termine di ogni
job)
Job pool – struttura dati che permette
al OS di selezionare quale job eseguire
per accrescere l’utilizzazione della CPU
OS delegato
a decidere !!!
Sistemi Operativi
15
Si condividono risorse, ma non c’e’ ancora
interleaving di esecuzione tra i job
Vittorio Cortellessa, 2002-2003
Sistemi interattivi e
time-sharing…
• Idea : rimpiazzare il job che utilizza la
CPU con un altro, per esempio quando il
primo ha bisogno di I/O (contextswitching)
• Prerequisito : strutture dati ed algoritmi
piu’ complessi per gestire il time-sharing
Sistemi Operativi
17
• Gestione della memoria
• Routines di I/O
• Allocazione di dispositivi
Sistemi Operativi
16
Vittorio Cortellessa, 2002-2003
I concetti…
INTERATTIVITA’
• Comunicazione tra l’utente e il sistema: quando il
sistema finisce l’esecuzione di un comando passa il
controllo all’utente
• Possibilita’ per l’utente di accedere a codice e dati
TIME_SHARING
•
La CPU e’ condivisa tra un insieme di job
tenuto in memoria
•
Strategie per : scegliere il job che deve
utilizzare la CPU, far entrare e uscire job da
questo insieme
Sistemi Operativi
18
3
Caratteristiche di un OS per
Interattivita’ e Time-Sharing
… e una rappresentazione grafica
Memoria
job1
job2
CPU
Scheduling della CPU (anche a intervalli di tempo,
non solo quando ci sono operazioni di I/O!!!)
•
Gestione della memoria (mantenere un insieme di
job in memoria, non tutti quelli possibili)
• Allocazione di dispositivi in maniera consistente con
job5
job3
•
il time-sharing
job4
UTENTI
job6
•
Virtualizzazione della macchina
SISTEMA DI CALCOLO
Sistemi Operativi
File System accessibile dall’utente
Sistemi Operativi
19
20
Personal Computers
Computers dedicati ad un singolo utente
• Nuovi dispositivi
di I/O – tastiera, mouse, schermi
piccoli, piccole stampanti
• Maggiore necessita’
STRUTTURE DEI SISTEMI DI
CALCOLO
di conoscere OS da parte
dell’utente (tradeoff!)
• Convenienza (facilita’ d’uso) per l’utente
• Diversa concezione delle protezioni e condivisioni
rispetto a sistemi con multipli utenti
Sistemi Operativi
Sistemi Operativi
21
22
Caratteristiche generali…
Architettura di un sistema di calcolo
• Dispositivi di I/O e CPU possono operare allo stesso
tempo e competere per l’accesso a memoria (regolato
dal controller di memoria, unico nel suo genere)
• I controller sono la parte intelligente di un dispositivo
• Ogni controller e’ predisposto per un certo tipo di
dispositivo
• Esso ha registri e buffer
locali per gestire le
interazioni con le altre parti del sistema
•
Sistemi Operativi
23
Il device driver e’ la controparte del dispositivo in
OS, e cioe’ la parte di OS predisposta a interagire con
un certo dispositivo
Sistemi Operativi
24
4
… e meccanismi di I/O
Mai sentito parlare di Interrupt ?!
• La CPU sposta i dati da/a memoria principale a/da buffer
del dispositivo
• I/O avviene da/a buffer del dispositivo a/da dispositivo
• Il controller informa la CPU, mediante un interrupt,
che ha finito l’operazione
• OS e’ interrupt driven !
• Perche’?
– Interrupt regolano le interazioni tra OS e dispositivi
e tra OS e programmi utente
• Esempi
– Un interrupt viene generato dal controller di un
disco quando un’operazione di scrittura e’ terminata
– Una trap (interrupt generato via software) puo’
essere causata da un errore (ex. divisione per 0) o
dalla richiesta esplicita (da parte di un programma
utente) di un servizio del OS (system call, ex. mkdir)
Sistemi Operativi
25
Sistemi Operativi
26
Spazio di indirizzi determinati
da base e limit
Memory Protection
• Proteggere interrupt vector e codice delle
interrupt routines
• Due registri che determinano il range di
indirizzi leciti di un processo:
– base register – il piu’ piccolo indirizzo fisico di memoria
lecito del processo
– limit register – taglia del range di indirizzi del processo
• La memoria al di fuori del range deve essere
protetta
Sistemi Operativi
27
CPU Protection
Regola : Evitare che un processo possa detenere
per un tempo illimitato il controllo della CPU
Soluzione : un timer che interrompe l’esecuzione
dopo un certo tempo e rida’ il controllo a OS
(ex. quantum in time sharing)
Le istruzioni di manipolazione del timer sono
privilegiate
Sistemi Operativi
29
Sistemi Operativi
28
Meccanismo per l’esecuzione di
istruzioni privilegiate
• OS deve sempre mantenere il controllo
• Come fa un processo utente ad
accedere alle risorse se le istruzioni
relative sono tutte privilegiate?
System call – il metodo usato da un
processo per richiedere un’azione di OS
Sistemi Operativi
30
5
Componenti comuni di un OS
STRUTTURE DEI
SISTEMI OPERATIVI
Sistemi Operativi
31
1. Gestione dei processi
2. Gestione della memoria centrale
3. Gestione della memoria secondaria
4. Manipolazione dei file
5. Gestione dell’I/O
6. Sistema di protezione
7. Gestione di rete
8. Interprete dei comandi
Sistemi Operativi
1. Gestione dei processi
Un processo e’ un programma in esecuzione
Un processo utente deriva da un
programma eseguito da un utente; un
processo di sistema corrisponde ad
una routine di OS
Un processo ha bisogno di risorse, quali
tempo di CPU, memoria, files e dispositivi
di I/O per svolgere il suo compito
32
Programma e processo
PROGRAMMA
f(a,b)
begin
a := a+5
…
…
end
PROCESSO
a
b
f
memoria
CPU
Carta o file
disco
Sistemi Operativi
33
Compiti di OS rispetto ai processi
Creazione e cancellazione
Sospensione e ripristino (scheduling)
Sincronizzazione (deadlock)
Comunicazione
Sistemi Operativi
35
Sistemi Operativi
34
2. Gestione della memoria centrale
Memoria : un array di parole o bytes,
ognuna con il suo indirizzo
• Velocemente accessibile
• Di piccola taglia
• Volatile
• Condivisa tra la CPU e i dispositivi di I/O
Sistemi Operativi
36
6
Compiti di OS rispetto alla memoria
Tenere traccia di quali parti della memoria
sono correntemente usate e da chi
Decidere quali processi caricare da disco
quando diventa disponibile spazio di memoria
3. Gestione della memoria secondaria
La memoria secondaria serve da backup per la
memoria centrale (troppo piccola e volatile per
conservare informazioni in maniera permanente)
Allocare e deallocare spazio di memoria
quando necessario
In genere si tratta di dischi, aventi
caratteristiche proprie quali la velocita’ di
accesso, la capienza, etc…
Sistemi Operativi
Sistemi Operativi
37
38
4. Manipolazione dei file
Compiti di OS rispetto alla
memoria secondaria
Un file e’ una collezione di informazioni
(in qualche modo in relazione tra esse)
definita dal suo creatore
Gestione dello spazio libero
Un file comunemente contiene o
Allocazione della memoria
programmi o dati o altri file (directory)
Scheduling delle richieste
Il file e’ lo strumento di astrazione
dalle memorie secondarie
Sistemi Operativi
Sistemi Operativi
39
Compiti di OS rispetto ai file
5. Gestione dell’I/O
•
Sistema di buffering, caching e spooling
– Buffering : preparare i dati di I/O in predisposti
registri e aree di memoria
– Caching : conservare in memorie veloci i dati usati piu’
di frequente per I/O
– Spooling : virtualizzazione dei dispositivi di I/O
mediante uso di aree di memoria per caricare e
scaricare informazioni
•
Driver per ogni tipo di dispositivo : routine di I/O che
colloquia con il controller del dispositivo
•
Interfaccia generale per i driver : programma che si
invoca per iniziare qualsiasi operazione di I/O
Creazione e cancellazione di
file/directory
Primitive per la manipolazione
(open, read, etc.)
Mapping di file a dispositivi di memoria
Backup di files su dispositivi appositi
Sistemi Operativi
41
40
Sistemi Operativi
42
7
6. Sistema di protezione
Una risorsa e’ un’entita’ passiva, quindi non
e’ in grado di proteggersi da sola contro usi
impropri ed errori
Compiti di OS per la protezione
Distinguere tra usi/utenti autorizzati e non
Specificare i controlli da imporre
Piu’ in generale un sistema di protezione si
occupa di controllare gli accessi di
programmi, processi, utenti a
OS e risorse
Sistemi Operativi
43
Fornire un meccanismo per il rispetto dei
vincoli imposti dalle protezioni
Sistemi Operativi
7. Gestione di rete
Un sistema distribuito e’ una collezione
di “elaboratori” (possibilmente non
omogenei tra loro) che non condividono
memoria e clock, e che sono collegati
mediante una rete di comunicazione
44
Compiti di OS per una rete
Fornire accesso alle risorse di rete
da parte degli utenti
Velocizzazione dell’esecuzione
Maggiore disponibilita’ di informazioni
Maggiore affidabilita’
Sistemi Operativi
45
Un esempio di Local Area Network
Sistemi Operativi
46
8. Interprete dei comandi (shell)
La shell e’ il programma che si occupa di
accettare, interpretare ed eseguire il
prossimo comando
L’insieme di comandi costituisce il
linguaggio di colloquio tra utente e OS
Piu’ o meno facili e user-friendly
shell, a seconda di OS
Sistemi Operativi
47
Sistemi Operativi
48
8
Esempio : UNIX shell
Riassumendo quindi…
Servizi comuni di un OS : convenienza
• Esecuzione di programmi
• Operazioni di I/O
• Gestione del File System
• Comunicazioni
• Rilevamento di errori
mkdir cp kill
…
lpr chmod
Funzioni comuni di un OS : efficienza
• Allocazione delle risorse
• Contabilizzazione dell’uso delle risorse
• Protezione
Sistemi Operativi
49
Sistemi Operativi
50
System Calls
Forniscono l’interfaccia tra un programma in
esecuzione e OS
La maggior parte dei moderni linguaggi di
programmazione permette la chiamata diretta di
system call nel linguaggio stesso
mkdir cp kill
---------
Ad ogni system call corrisponde in genere un comando
di OS, che quindi e’ disponibile anche direttamente
all’utente in shell
Sistemi Operativi
51
…
lpr chmod
---------
Sistemi Operativi
---------
52
Classificazione di system calls
A. Gestione dei processi
Esempio di programma applicativo con uso
di system call : lettura del contenuto di
un file e scrittura in un altro file
B. Manipolazione dei file
C. Manipolazione di dispositivi
(memorie e I/O)
D. Manutenzione delle informazioni
E. Comunicazioni
Sistemi Operativi
53
Sistemi Operativi
Che novita’!
54
9
Struttura interna di un OS un esempio di design : MS-DOS
… ed un altro esempio meglio
strutturato: UNIX
Interfacce e livelli
di funzionalita’ non
sono ben separati
Il kernel consiste di tutto cio’ che sta al di
sotto delle interfacce alle system call e al di
sopra dell’hardware
Sistemi Operativi
55
Un criterio generale di design:
approccio stratificato
Sistemi Operativi
56
Relazioni tra livelli…
• OS e’ suddiviso in un numero di livelli,
• Information hiding
• Data encapsulation
• Modularita’
• Facile verifica e
debugging
• Bassa efficienza
ognuno costruito sui sottostanti
• Il livello piu’ basso e’ l’hardware
(livello 0) e il piu’ alto e’ l’interfaccia
utente (livello N)
Sistemi Operativi
57
e caratteristiche
Sistemi Operativi
58
Fine Parte Informatica
Sistemi Operativi
59
10