Introduzione ai Sistemi Operativi
Cos’e` un Sistema Operativo ?
• È un programma (o un insieme di
programmi) che agisce come
intermediario tra l’utente e
l’hardware del computer:



fornisce un ambiente di sviluppo e di
esecuzione per i programmi
fornisce una visione astratta dell’HW
gestisce le risorse del sistema di calcolo
Sistemi Operativi L-A
2
1
Il Sistema Operativo e
l’Hardware

Il sistema operativo interfaccia i programmi
con le risorse HW:
•
•
•
•
•

CPU
memoria volatile e persistente
dispositivi di I/O
Rete
…
Il S.O. mappa le risorse HW in risorse
logiche,
logiche accessibili attraverso interfacce
ben definite:
» processi (CPU)
» file (dischi)
» Memoria virtuale (memoria)...
Sistemi Operativi L-A
3
Cos’e` un Sistema Operativo ?
Utenti
Programmi Applicativi
Sistema Operativo
Hardware
Sistemi Operativi L-A
4
2
Cos’è un sistema operativo?
• Un programma che alloca le risorse del
sistema di calcolo ai programmi e agli
utenti:
»
»
»
»
»
CPU
Memoria
dischi
dispositivi di I/O
...
• Un programma che controlla dispositivi e
programmi allo scopo di garantire un
funzionamento corretto ed efficiente.
Sistemi Operativi L-A
5
Aspetti importanti di un S.O.








Struttura:
Struttura come è organizzato un S.O. ?
Concorrenza: è possibile la contemporanea esecuzione
di più programmi ?
Condivisione: quali risorse vengono condivise tra utenti
e/o programmi? In che modo?
Protezione: il S.O. deve impedire interferenze tra
programmi/utenti. Con quali metodi?
Efficienza
Affidabilità: come reagisce il S.O. a malfunzionamenti
(HW/SW) ?
Estendibilità:
Estendibilità: è possibile aggiungere funzionalità al
sistema ?
Conformità a Standard:
Standard: portabilita`, estendibilita`,
Sistemi Operativi L-A
6
apertura
3
Evoluzione dei Sistemi Operativi
• Prima generazione (anni ‘50)
• linguaggio macchina
• dati e programmi su schede perforate
• il sistema operativo non è presente
• Seconda Generazione (‘55-’65):
Sistemi batch semplici
• linguaggio di alto livello (fortran)
• input mediante schede perforate
• aggregazione di programmi in lotti
(batch) con esigenze simili
Sistemi Operativi L-A
7
Sistemi batch semplici
Batch: insieme di programmi (job) da
eseguire in modo sequenziale.
JOB end
$run
$load
$compile
JOB begin
Sistemi Operativi L-A
8
4
Sistemi batch semplici
Compito del Sistema Operativo (monitor):
trasferimento di controllo da un job (appena
terminato) al prossimo da eseguire.
Caratteristiche dei sistemi batch semplici:
• sistema operativo residente in memoria (monitor)
• assenza di interazione tra utente e job
• scarsa efficienza:durante l’I/O del job corrente, la CPU rimane
inattiva (lentezza dei dispositivi di I/O meccanici)
Attività
CPU
I/O
I/O
t
Sistemi Operativi L-A
9
Sistemi batch semplici
In memoria centrale, ad ogni
istante, è caricato (al più) un solo
job:
Sistema
operativo
Job
di utente
Sistemi Operativi L-A
Configurazione della
memoria centrale in
sistemi batch
semplici
10
5
Sistemi batch semplici
Spooling
(Simultaneous Peripheral Operation On Line)
Obiettivo:
Obiettivo aumentare l’efficienza del sistema.
Avvento dei dischi + DMA: ⇒I/O in parallelo con
l’attività della CPU:
disco
input
cpu
output
Sistemi Operativi L-A
11
Sistemi batch semplici
Spooling : contemporaneità di I/O e computazione
• il disco viene impiegato come un buffer molto ampio, dove:
leggere in anticipo i dati
memorizzare temporaneamente i risultati (in attesa che il
dispositivo di output sia pronto)
caricare codice e dati del job successivo: -> possibilità di
sovrapporre I/O di un job con elaborazione di un altro job
disco
input
cpu
Sistemi Operativi L-A
output
12
6
Sistemi Batch semplici
Problemi:



finché il job corrente non è terminato, il
successivo non può iniziare l’esecuzione
se un job si sospende in attesa di un
evento, la CPU rimane inattiva
non c’è interazione con l’utente.
Sistemi Operativi L-A
13
Sistemi Batch multiprogrammati
• Sistemi batch semplici:
semplici l’attesa di un
evento causa l’inattività della CPU.
⇒ Multiprogrammazione:
Multiprogrammazione:
Pool di job contemporaneamente
presenti su disco:
• il S.O. seleziona un sottoinsieme dei job appartenenti
al pool da caricare in memoria centrale:
più job in memoria centrale
• mentre un job è in attesa di un evento,
evento il sistema
operativo assegna la CPU a un altro job
Sistemi Operativi L-A
14
7
Sistemi Batch multiprogrammati
Il sistema operativo è in grado di
portare avanti l’esecuzione di più job
contemporaneamente:

Ad ogni istante:
• un solo job utilizza la CPU
• più job (in memoria centrale) attendono di acquisire la
CPU.

Quando il job che sta utilizzando la CPU
si sospende in attesa di un evento:
• il S.O. decide a quale job assegnare la CPU ed
effettua lo scambio (scheduling
scheduling)
Sistemi Operativi L-A
15
Sistemi Batch multiprogrammati
Scheduling
Il S.O. effettua delle scelte tra tutti i
job:


quali job caricare in memoria centrale:
scheduling dei job (long term scheduling)
a quale job assegnare la CPU: scheduling
della CPU o (short term scheduling)
Sistemi Operativi L-A
16
8
Sistemi Batch multiprogrammati
Scheduling
Memoria
disco
Scheduling
dei job
CPU
centrale
Scheduling
della CPU
Sistemi Operativi L-A
17
Sistemi Batch Multiprogrammati
Attesa di eventi
job3
job2
job1
t0
t1
t2
Sistemi Operativi L-A
t
18
9
Sistemi batch multiprogrammati
In memoria centrale, ad ogni istante,
possono essere caricati più job:
Sistema
operativo
Job 1
Configurazione della
memoria centrale in
sistemi batch
multiprogrammati
Job 2
Necessità di
protezione !
Job 3
Sistemi Operativi L-A
Sistemi Time-Sharing (Multics,
19
1965)
• Nascono dalla necessità di:
• interattività con l’utente
• multi-utenza: più utenti interagiscono
contemporaneamente con il sistema.
Utente
1
Utente
2
Utente
n
Sistema
Operativo
Hardware
Sistemi Operativi L-A
20
10
Sistemi Time-Sharing
• Multiutenza:
Multiutenza il sistema presenta ad ogni utente una
macchina virtuale completamente dedicata a lui, per:
• l’utilizzo della CPU
• l’utilizzo di altre risorse (ad es., file system)
• Interattività:per
garantire un’accettabile velocità di
Interattività
“reazione” alle richieste dei singoli utenti, il S.O.
interrompe l’esecuzione di ogni job dopo un intervallo
di tempo prefissato (quanto di tempo, o time slice),
ed assegna la CPU ad un altro job.
Sistemi Operativi L-A
21
Sistemi Time Sharing
(oppure, a divisione di tempo)
Sono sistemi in cui:
• L’attività della CPU è dedicata a job diversi che si
alternano ciclicamente nell’uso della risorsa
• La frequenza di commutazione della CPU è tale da
fornire l’illusione ai vari utenti di una macchina
completamente dedicata (macchina virtuale).
Cambio di contesto (context switch):
operazione di trasferimento del controllo da un
job al successivo ð costo aggiuntivo (overhead).
Sistemi Operativi L-A
22
11
Sistemi Time Sharing
Estensione dei sistemi
multiprogrammati:
Un job può sospendersi:
• perchè in attesa di un evento
• perchè è terminato il quanto di tempo.
Sistemi Operativi L-A
23
Sistemi Time Sharing
job3
job2
job1
CPU
fine del quanto di tempo
Attesa di eventi
job3
job2
job1
t0
t1
Δt
Δt
t2
t3
Sistemi Operativi L-A
t4
t5
t
24
12
Time Sharing: requisiti
• Gestione/Protezione della memoria:



trasferimenti memoria-disco
separazione degli spazi assegnati ai diversi job
molteplicità job + limitatezza della memoria:
⇒ memoria virtuale
• Scheduling della CPU
• Sincronizzazione/comunicazione
Sincronizzazione comunicazione tra Job:
• interazione
• prevenzione/trattamento di blocchi critici (deadlock)
• Interattività:
Interattività file system on line per permettere agli
utenti di accedere semplicemente a codice e dati
Sistemi Operativi L-A
25
Sistemi Operativi Attuali





MSDOS:
MSDOS monoprogrammato, monoutente
Windows 95, 98:
98 multiprogrammato
(time sharing), monoutente
Windows NT, 2000,XP
2000,XP,, Vista..:
Vista..
multiprogrammato, “multiutente”
MacOS:
MacOS multiprogrammato, multiutente
Unix/
Unix/Linux:
Linux
Multiprogrammato/multiutente
Sistemi Operativi L-A
26
13
Richiami sul funzionamento di un
sistema di elaborazione
Architettura di un sistema di
calcolo
Controller
dischi
Controller
video
Controller
stampante
bus
Memoria
Controller
memoria
CPU
• Controller:
Controller interfaccia HW delle periferiche
verso il bus di sistema
Sistemi Operativi L-A
28
14
Funzionamento di un sistema di
calcolo
Funzionamento a interruzioni:


le varie componenti (HW e SW) del sistema
interagiscono con il S.O. mediante interruzioni
asincrone (interrupt)
ogni interruzione è causata da un evento;
evento ad
esempio:
»
»
»
»

richiesta di servizi al S.O.
completamento di I/O
accesso non consentito alla memoria
etc.
ad ogni interruzione è associata una routine di
servizio (handler), per la gestione dell’evento
Sistemi Operativi L-A
29
Funzionamento di un sistema di
calcolo
• Interruzioni hardware:
hardware i dispositivi
inviano segnali alla CPU.

Per richiedere l’esecuzione di servizi al S.O.
Sistema
Operativo
dispositivo
Segnale di
interruzione
Sistemi Operativi L-A
30
15
Funzionamento di un sistema di
calcolo
• Interruzioni software:
software: i programmi in esecuzione
nel sistema possono generare interruzioni SW:


quando i programmi tentano l’esecuzione di operazioni non
lecite (ad es., divisione per 0): trap
system call: richiedono l’esecuzione di servizi al S.O.
Sistema
Operativo
programma
Interruzione SW
(system call)
Sistemi Operativi L-A
31
Gestione delle interruzioni
Alla ricezione di un’interruzione, il S.O.:
1] interrompe l'esecuzione del programma corrente =>
salvataggio dello stato in memoria (locazione fissa, stack
di sistema..)
2] attiva la routine di servizio all’interruzione (handler)
3] ripristina lo stato salvato
Per individuare la routine di servizio il S.O. può
utilizzare un vettore delle interruzioni :
Routine
di
servizio
i
Vettore delle
interruzioni
Sistemi Operativi L-A
32
16
Protezione
• Nei sistemi che prevedono
multiprogrammazione e multiutenza sono
necessari alcuni meccanismi HW per
esercitare protezione.
• Le risorse allocate a programmi/utenti
devono essere protette nei confronti di
accessi illeciti di altri programmi/utenti:
» dispositivi di I/O
» memoria
» CPU
Ad esempio:
esempio accesso a locazioni esterne
allo spazio di indirizzi del programma.
Sistemi Operativi L-A
33
Protezione della memoria
In un sistema multiprogrammato o time sharing:
sharing
ogni job ha un suo spazio di indirizzi:

è necessario impedire al programma in esecuzione di
accedere ad aree di memoria esterne al proprio spazio
(ad es., del S.O. oppure di altri Job).
Sistema
operativo
Job 1
Job 2
Job 3
Se fosse consentito: un
programma potrebbe modificare
codice e dati di altri programmi
o del S.O. !
Sistemi Operativi L-A
34
17
Protezione
Per garantire protezione, molte
architetture prevedono un duplice modo di
funzionamento (dual mode):


user mode
kernel mode (supervisor, monitor mode)
Realizzazione: l’architettura prevede un bit
di modo
• kernel: 0
• user: 1
Sistemi Operativi L-A
35
Dual mode
Istruzioni privilegiate: sono quelle più
pericolose e possono essere eseguite
soltanto se il sistema si trova in
kernel mode:
» accesso a dispositivi di I/O (dischi, stampanti,
schede di rete, etc.)
» gestione della memoria (accesso a strutture
dati di sistema per la gestione della memoria)
» istruzione di shutdown (arresto del sistema)
» etc.
Sistemi Operativi L-A
36
18
Dual mode


Il S.O. esegue in modo kernel.
Ogni programma utente esegue in user
mode:
• Quando un programma utente tenta l’esecuzione di
una istruzione privilegiata, viene generato un trap.
• se necessita di operazioni privilegiate:
chiamata a system call
Sistemi Operativi L-A
37
System Call
Per ottenere l’esecuzione di istruzioni
privilegiate, un programma di utente deve
chiamare una System Call:
» invio di un’interruzione software al S.O.
» Salvataggio dello stato (PC, registri, bit di
modo, etc.) del programma chiamante e
trasferimento del controllo al S.O.
» Il S.O. esegue in modo kernel l’operazione
richiesta
» al termine dell’operazione, il controllo ritorna al
programma chiamante (ritorno al modo user)
user
Sistemi Operativi L-A
38
19
System Call
Programma utente
system call: read( )
Interrupt SW
(salvataggio dello stato del
programma utente)
ripristino dello stato
del programma
utente
User mode
Kernel mode
Routine di gestione
dell’interruzione
Esecuzione dell’operazione read
Sistemi Operativi L-A
39
System Call
La comunicazione tra il programma
chiamante ed il sistema operativo avviene
mediante i parametri della system call:
come vengono trasferiti?
• mediante registri (problema: dimensione limitata)
• mediante blocchi di memoria indirizzati da registri
• mediante stack di sistema
Sistemi Operativi L-A
40
20
Protezione della memoria
Il Sistema Operativo deve fornire gli
strumenti per separare e proteggere gli
spazi di indirizzi dei programmi:
Registri base e limite

memorizzano, per il programma in esecuzione (se
viene allocato su parole contigue tra loro):
• l’indirizzo della prima parola (RB)
• la dimensione (RL)

dello spazio degli indirizzi associato al programma.
l’Hardware può controllare ogni indirizzo, per
verificare se appartiene all’intervallo [RB, RB+RL]
Sistemi Operativi L-A
41
Protezione della memoria
Registri base e limite
RB
RL
RL
Sistemi Operativi L-A
42
21
Protezione della CPU
Il S.O. deve evitare che un
programma utente non monopolizzi la
CPU (ad es., loop):
• uso di timer, per interrompere il programma dopo
un intervallo di tempo prefissato (time sharing)
• allo scadere dell’intervallo:
interrupt ð
cambio di contesto
Sistemi Operativi L-A
43
Organizzazione dei Sistemi
Operativi
22
Struttura dei S.O.
Quali sono le componenti di un S.O. ?
Quali sono le relazioni mutue tra le
componenti ?
Sistemi Operativi L-A
45
Struttura del Sistema Operativo
Sistema operativo = insieme di
componenti
•
•
•
•
•
•
gestione dei processi
gestione della memoria centrale
gestione dei file
gestione dell’I/O
meccanismi di protezione e sicurezza
interfaccia utente/programmatore
Sistemi Operativi L-A
46
23
Processo
Processo = programma in esecuzione
• il programma è un’entità passiva: un
insieme di byte contenente la codifica
binaria delle istruzioni da eseguire.
• il processo è un’entità attiva:
• è l’istanza di un programma in esecuzione
• è l’unità di lavoro all’interno del sistema: ogni attività
all’interno del S.O. è rappresentata da un processo
Sistemi Operativi L-A
47
Gestione dei Processi
In un sistema multiprogrammato:
più processi possono esistere
contemporaneamente
Compiti del Sistema Operativo:
 creazione/terminazione dei processi
 sospensione/ripristino dei processi
 sincronizzazione/comunicazione dei processi
 gestione del blocco critico (deadlock) di processi
Sistemi Operativi L-A
48
24
Gestione della Memoria Centrale
L’HW di un sistema di elaborazione è
equipaggiato con un’unico spazio di memoria
accessibile direttamente da CPU e dispositivi.
Compiti del Sistema Operativo:



separare gli spazi di indirizzi associati ai processi
allocare/deallocare memoria ai processi
memoria virtuale: offrire spazi logici di indirizzi di
dimensioni indipendenti dalla dimensione effettiva
della memoria
Sistemi Operativi L-A
49
Gestione dei File
Il sistema operativo fornisce una visione logica
uniforme della memoria secondaria, indipendente dal
tipo e dal numero dei dispositivi effettivamente
disponibili:
 realizza il concetto astratto di file, come unità
di memorizzazione logica
 fornisce opportune
astrazioni per
l’organizzazione dei file (direttori, partizioni)
 realizza i meccanismi per la gestione di file,
direttori e partizioni:
 creazione/cancellazione di file e direttori
 manipolazione di file/direttori
 associazione tra file e dispositivi di memorizzazione secondaria
Sistemi Operativi L-A
50
25
Gestione dell’I/O
Il Sistema Operativo si occupa della
gestione delle periferiche di I/O:


interfaccia tra programmi e dispositivi
per ogni dispositivo: device driver
• routine per l’interazione con un particolare
dispositivo
• contiene conoscenza specifica sul dispositivo
(routine di gestione delle interruzioni)
Sistemi Operativi L-A
51
Protezione e Sicurezza
Processi e utenti possono accedere alle risorse
del sistema contemporaneamente.
Protezione delle risorse:
risorse: controllo
dell’accesso alle risorse del sistema da parte
di processi (e utenti), mediante:
• autorizzazioni
• modalità di accesso
Risorse da proteggere:
proteggere file, memoria, processi
dispositivi, ecc.
Sistemi Operativi L-A
52
26
Protezione e Sicurezza
Sicurezza:
• Le tecnologie di sicurezza hanno come scopo la
regolamentazione degli accessi al sistema da parte
di utenti esterni, mediante meccanismi di
autenticazione.
• La sicurezza misura l’affidabilità del sistema nei
confronti di accessi malevoli (attacchi) dal modo
esterno.
Sistemi Operativi L-A
53
Interfaccia Utente
Il S.O. presenta un’interfaccia che
consente l’interazione con l’utente:


interprete comandi (shell): l’interazione
avviene mediante una linea di comando
interfaccia grafica (graphical user
interface, GUI): l’interazione avviene
mediante click del mouse su elementi
grafici; di solito organizzata a finestre.
Sistemi Operativi L-A
54
27
Interfaccia Programmatore
L’interfaccia del SO verso i programmi (API) è
rappresentato dalle system call:
• mediante la system call il processo richiede al sistema operativo
l’esecuzione di un servizio (in modo kernel)
Classi di system call:
call:
» gestione dei processi
» gestione di file e di dispositivi (spesso trattati in modo
omogeneo)
» gestione informazioni di sistema
» comunicazione/sincronizzazione tra processi
» ...
Programma di sistema = programma che usa system
calls
Sistemi Operativi L-A
55
Struttura del Sistema Operativo
Sistema operativo = insieme di
componenti
•
•
•
•
•
•

gestione dei processi
gestione della memoria centrale
gestione dei file
gestione dell’I/O
protezione e sicurezza
interfaccia utente/programmatore
Le componenti non sono indipendenti
tra loro, ma interagiscono.
Sistemi Operativi L-A
56
28
Struttura del Sistema Operativo
Come sono organizzate le varie
componenti all’interno del sistema
operativo?
Varie soluzioni:




struttura monolitica
struttura modulare
microkernel
macchine vituali
Sistemi Operativi L-A
57
Struttura Monolitica
Il sistema operativo è costituito da un
unico modulo contenente un insieme di
procedure,
procedure che realizzano le varie
componenti:
l’interazione tra le diverse componenti
avviene mediante il meccanismo di chiamata
a procedura.
Esempi: MS-DOS,UNIX, GNU/Linux
Sistemi Operativi L-A
58
29
Sistemi Operativi Monolitici
Principale Vantaggio:: basso costo di interazione
tra le componenti.
Svantaggio:: Il SO è un sistema complesso e
presenta gli stessi requisiti delle applicazioni inthe-large::
•
•
•
•
•
•
estendibilità
manutenibilità
riutilizzo
portabilità
affidabilità
...
Soluzione:
Soluzione: organizzazione modulare
Sistemi Operativi L-A
59
Struttura modulare
Le varie componenti del SO vengono organizzate in
moduli caratterizzati da interfacce ben definite.
Sistemi Stratificati (a livelli)
(THE, Dijkstra1968)
il sistema operativo è costituito da livelli sovrapposti,
ognuno dei quali realizza un insieme di funzionalità:
• ogni livello realizza un’insieme di funzionalità che vengono
offerte al livello superiore mediante un’interfaccia
• ogni livello utilizza le funzionalità offerte dal livello
sottostante, per realizzare altre funzionalità
Sistemi Operativi L-A
60
30
Struttura a livelli
Esempio: THE (5 livelli)
livello 5: programmi di utente
livello 4: buffering dei dispositivi di I/O
livello 3: driver della console
livello 2: gestione della memoria
livello 1: scheduling CPU
livello 0: hardware
Sistemi Operativi L-A
61
Struttura Stratificata
Vantaggi:
• Astrazione: ogni livello è un oggetto astratto,
che fornisce ai livelli superiori una visione
astratta del sistema (Macchina Virtuale),
limitata alle astrazioni presentate
nell’interfaccia.
• Modularità: le relazioni tra i livelli sono
chiaramente esplicitate dalle interfacce ð
possibilità di sviluppo, verifica, modifica in modo
indipendente dagli altri livelli.
Sistemi Operativi L-A
62
31
Struttura Stratificata
Svantaggi:


Organizzazione gerarchica tra le componenti: non
sempre è possibile -> difficoltà di realizzazione.
Scarsa efficienza:: costo di attraversamento dei
livelli
Soluzione: limitare il numero dei livelli.
Sistemi Operativi L-A
63
Nucleo del Sistema Operativo (kernel)
“E` la parte del sistema operativo che esegue
in modo kernel”
• È la parte più interna del sistema operativo,
che si interfaccia direttamente con
l’hardware della macchina.
• Le funzioni realizzate all’interno del nucleo
variano a seconda del Sistema Operativo.
Sistemi Operativi L-A
64
32
Nucleo del Sistema Operativo
(kernel)
• Tipicamente, le funzioni del nucleo
sono:
•
•
•
•
•
•
•
•
Creazione/terminazione dei processi
scheduling della Cpu
gestire il cambio di contesti
Sincronizzazione/comunicazione tra processi
Gestione della memoria
Gestione dell’I/O
Gestione delle interruzioni
realizzare le system call.
Sistemi Operativi L-A
65
Sistemi Operativi a Microkernel
• La struttura del nucleo è ridotta a poche
funzionalità di base.
• il resto del SO è rappresentato da processi
di utente
Caratteristiche:



affidabilità (separazione tra componenti)
possibilità di estensioni e personalizzazioni
scarsa efficienza (molte chiamate a system call)
ESEMPI: L4, Mach, Hurd, Windows NT
Sistemi Operativi L-A
66
33
Organizzazione a Microkernel
proc.
proc.
cliente
proc.
proc.
cliente
terminal
server
print
server
file
system
microkernel
Sistemi Operativi L-A
67
Windows NT
Applicazioni
modo
utente
Sottosistemi
protetti
I/O
Manager
Object
Manager
Process
Manager
modo
kernel
Microkernel
Hardware
Sistemi Operativi L-A
68
34
L4 µkernel
http://os.inf.tu-dresden.de
• gestione dei thread
• allocazione della memoria (pager esterni)
• Inter Process Communication
Comunicazione
IPC
Threads
External
pagers
Unmap
Memoria
IRQ
Mapping
Hardware
Sistemi Operativi L-A
69
GNU/Hurd
processi utente
spazio
utente
Server di
Hurd
auth
server
filesystem
server
µkernel MACH
Sistemi Operativi L-A
process
server
spazio
kernel
70
35
Macchine virtuali
• l'Hardware e` gestito da un componente software, chiamato
Virtual Machine Monitor (VMM) o hypervisor il cui compito è
consentire la condivisione da parte di più macchine virtuali, ognuna
con il suo sistema operativo, di una singola piattaforma hardware.
• Ogni macchina virtuale definisce un ambiente di esecuzione
distinto e isolato dalle altre.
• Il VMM si pone come mediatore unico nelle interazioni tra le
macchine virtuali e l’hardware sottostante, garantendo sia un
forte isolamento tra esse, sia la stabilità complessiva del sistema .
Sistemi Operativi L-A
kernel
kernel
71
kernel
virtual machine monitor
HW
Sistemi Operativi L-A
72
36
Vantaggi della virtualizzazione
VM1
applicazioni
Windows xp
VM2
VM3
applicazioni
Suse Linux
applicazioni
Ubuntu linux
VIRTUAL MACHINE MONITOR
HARDWARE
• Uso di piu` S.O. sulla stessa macchina fisica: più ambienti di
esecuzione (eterogenei) per lo stesso utente:


Legacy systems
Possibilità di esecuzione di applicazioni concepite per un particolare s.o.
• Isolamento degli ambienti di esecuzione: ogni macchina virtuale
definisce un ambiente di esecuzione separato (sandbox) da quelli delle
altre:


possibilita` di effettuare testing di applicazioni preservando l'integrita` degli altri
ambienti e del VMM.
Sicurezza: eventuali attacchi da parte di malware o spyware sono confinati alla
singola macchina virtuale
Sistemi Operativi L-A
•
Vantaggi della virtualizzazione
Consolidamento HW: possibilita` di concentrare piu`
macchine (ad es. server) su un'unica architettura HW per un
utilizzo efficiente dell'hardware (es. server farm):


•
73
Abbattimento costi hw
Abbattimento costi amministrazione
Gestione facilitata delle macchine: e` possibile effettuare
in modo semplice:



la creazione di macchine virtuali (virtual appliances)
l'amministrazione di macchine virtuali (reboot, ricompilazione
kernel, etc.)
migrazione a caldo di macchine virtuali tra macchine fisiche:
• possibilita` di manutenzione hw senza interrompere i servizi
forniti dalle macchine virtuali
• disaster recovery
• workload balancing: alcuni prodotti prevedono anche
meccanismi di migrazione automatica per far fronte in modo
“autonomico” a situazioni di sbilanciamento
Sistemi Operativi L-A
74
37
Vantaggi della virtualizzazione
•
In ambito didattico: invece di assegnare ad ogni studente un account su una
macchina fisica, si assegna una macchina virtuale.
DEIS Virtual Lab.
La Facoltà di Ingegneria (DEIS) sta realizzando un
laboratorio di macchine virtuali che offrirà ad ogni studente una macchina
virtuale personale da amministrare autonomamente:

possibilita` di esercitarsi senza limitazioni nelle tecniche di
amministrazione e configurazione del sistema;

possibilita` di installazione e testing di nuovi sistemi operativi, anche
prototipali, senza il rischio di compromettere la funzionalita` del
sistema.

possibilita` di testing di applicazioni potenzialmente pericolose senza il
rischio di interferire con altri utenti/macchine;

possibilita` di trasferire le proprie macchine virtuali in supporti mobili
(es: penne USB, per continuare le esercitazioni sul computer di casa).
Dotazione hw: 4 server Intel-VT xeon (2 processori quadcore), storage
unit CORAID 12TB
Software: Vmware o VirtualIron ? Siamo in fase di valutazione..
Sistemi Operativi L-A
75
Host: piattaforma di base sulla quale si realizzano macchine virtuali.
Comprende la macchina fisica, l’eventuale sistema operativo ed il VMM.
Guest: la macchina virtuale. Comprende applicazioni e sistema
operativo
VM1
VM2
VM3
applicazioni
applicazioni
applicazioni
sistema operativo
sistema operativo
sistema operativo
VIRTUAL MACHINE MONITOR
HARDWARE
guest
host
VMM di Sistema
Sistemi Operativi L-A
76
38
VMM di sistema: realizzazione
L'Architettura della CPU prevede, in generale,
almeno due livelli di protezione (ring): supervisore e
utente.
 solo il VMM opera nello stato supervisore, mentre il sistema
operativo e le applicazioni (la macchina virtuale) operano nello
stato utente.
Problemi:
• ring deprivileging: il s.o. della macchina virtuale esegue in uno
stato che non gli e` proprio (esecuzione di system call ?)
• ring compression: applicazioni e s.o. della macchina virtuale
eseguono allo stesso livello: necessita` di protezione tra
spazio del s.o. e delle applicazioni.
Sistemi Operativi L-A
77
Ring deprivileging:
Le istruzioni privilegiate richieste dal sistema
operativo nell’ambiente guest non possono essere
eseguite (richiederebbero lo stato supervisore).
Possibile Soluzione:
• Se il guest tenta di eseguire un’istruzione privilegiata,
la CPU notifica un’eccezione al VMM e gli trasferisce il
controllo (trap): il VMM controlla la correttezza della
operazione richiesta e ne emula il comportamento.
Le istruzioni non privilegiate possono essere eseguite
direttamente dall’hardware senza alcun intervento da
parte della CPU (esecuzione diretta).
Sistemi Operativi L-A
78
39
Esempio: tentativo di esecuzione dell’istruzione privilegiata
che disabilita le interruzioni da parte del S.O. guest.
•
Il VMM riceve la notifica di tale richiesta e ne emula il
comportamento atteso sospendendo la consegna degli interrupt
solamente per la macchina virtuale (emulazione).
• Se la richiesta della macchina virtuale fosse eseguita direttamente
sul processore sarebbero disabilitati gli interrupt per tutti i sistemi
ed il VMM non potrebbe riguadagnare il controllo della CPU.
• Le istruzioni non privilegiate sono eseguite direttamente
dall’hardware senza alcun intervento da parte della CPU (esecuzione
diretta).
 Un’architettura CPU si dice naturalmente virtualizzabile se prevede
l’invio di notifica allo stato supervisore per ogni istruzione
privilegiata eseguita dallo stato utente.
Sistemi Operativi L-A
79
 Se l'architettura della CPU e` naturalmente virtualizzabile:
• la realizzazione del VMM e` semplificata: per ogni trap generato
dal tentativo di esecuzione di istruzione privilegiata dal guest
viene eseguita una routine di emulazione
• supporto nativo all'esecuzione diretta.
Non tutte le architetture sono naturalmente virtualizzabili ! IA32:
• Alcune istruzioni privilegiate di questa architettura eseguite in stato
utente non provocano una trap, ma vengono ignorate non consentendo
quindi l’ intervento trasparente del VMM, o in alcun casi provocano il
crash del sistema.
• Ring Aliasing: Alcune istruzioni non privilegiate, eseguite in stato
utente, permettono di accedere in lettura alcuni registri del sistema
la cui gestione dovrebbe essere riservata al VMM: possibilità di
rilevare il proprio livello di protezione-> possibili inconsistenze.
Sistemi Operativi L-A
80
40
Architetture non virtualizzabili
Soluzioni:


Virtualizzazione pura: fast binary translation
Paravirtualizzazione
Fast binary translation. (es.Vmware): il VMM scansiona
dinamicamente il codice prima della sua esecuzione per
sostituire a run time blocchi contenenti istruzioni
problematiche in blocchi equivalenti dal punto di vista
funzionale e contenenti istruzioni per la notifica di eccezioni
al VMM.
• I blocchi tradotti sono eseguiti direttamente sull’hw e
conservati in una cache apposita per riusi futuri
Sistemi Operativi L-A
applicazioni
applicazioni
applicazioni
S.O.
S.O.
S.O.
81
hardware virtuale
binary translation
VMM
Hardware
Virtualizzazione pura mediante Fast Binary Translation (architettura
non virtualizzabile)
Pro:ogni macchina virtuale è una esatta replica della macchina fisica
-> possibilità di installare gli stessi s.o. di architetture non virtualizzate
Contro: la traduzione dinamica è costosa
Sistemi Operativi L-A
82
41
Paravirtualizzazione (es. xen): il VMM (hypervisor) offre al
sistema operativo guest un’interfaccia virtuale (hypercall API)
alla quale i S.O. guest devono riferirsi per aver accesso alle
risorse:
• i kernel dei S.O. guest devono quindi essere modificati per
aver accesso all'interfaccia del particolare VMM.
• la struttura del VMM è semplificata perché non deve più
preoccuparsi di tradurre dinamicamente i tentativi di
operazioni privilegiate dei S.O. guest.
• per ottenere un servizio che richiede l’esecuzione di istruzioni
privilegiate (es. accesso a dispositivi) non vengono generate
interruzioni al VMM, ma viene invocata la hypercall
corrispondente.
Sistemi Operativi L-A
83
applicazioni
applicazioni
applicazioni
S.O.
S.O.
S.O.
hypercall API
VMM
Hardware
Paravirtualizzazione
Pro: prestazioni migliori rispetto a fast binary translation
Contro: necessità di porting dei S.O. guest (le applicazioni
rimangono invariate): soluzione preclusa a molti sistemi operativi
commerciali non open source.
Sistemi Operativi L-A
84
42
Architetture Virtualizzabili
• La recente uscita sul mercato di processori con supporto
nativo alla virtualizzazione (Intel VT, AMD-V) ha dato
l’impulso allo sviluppo di VMM semplificati, basati su
virtualizzazione pura:
Ring Deprivileging: ogni istruzione privilegiata richiesta dal s.o.
guest genera un trap gestito dal VMM.

No Ring Compression/Aliasing: il s.o. guest esegue in un ring
separato (livello di protezione intermedio) da quello delle
applicazioni
Pro:

Efficienza: non c’è bisogno di bynary translation;

Trasparenza: l’API presentata dall’hypervisor è la stessa
offerta dal processore.
Contro:

Meno efficienti della paravirtualizzazione.

Sistemi Operativi L-A
85
Architetture Virtualizzabili
Prodotti:
Xen e Vmware: hanno già rilasciato nuove versioni
compatibili con architetture virtualizzabili.
VirtualIron: prodotto derivato da xen, esplicitamente
sviluppato per architetture Intel VT & AMD-V.
Sistemi Operativi L-A
86
43
Unix & Linux
Storia di Unix
• 1969: AT&T, sviluppo di un ambiente di
calcolo multiprogrammato e portabile per
macchine di medie dimensioni.
• 1970: prima versione di UNIX
(multiprogrammata e monoutente)
interamente sviluppata nel linguaggio
assembler del calcolatore PDP-7.
• Anni 1970: nuove versioni, arricchite con
altre caratteristiche e funzionalità.
Introduzione del supporto alla multiutenza.
Sistemi Operativi L-A
88
44
Unix e il linguaggio C
•
1973: Unix viene realizzato nel linguaggio di
programmazione C:



Elevata portabilità
Leggibilità
Diffusione presso la comunità scientifica e accademica.
• Anni 80: la grande popolarità di Unix ha determinato il
proliferare di versioni diverse. Due famiglie:


Unix System V (AT&T Laboratories)
Unix Berkeley Software Distributions, o BSD (University of
California at Berkeley)
Sistemi Operativi L-A
89
Organizzazione di Unix
Funzioni di libreria
standard
utenti
Utilità di sistema
(shell, editor, compilatori,..)
System call
Modo
user
Libreria standard di sistema
(open, close, fork, exec...)
Kernel del Sistema Operativo:
gestione processi, memoria, file sytem, I/O, etc
Modo
kernel
hardware
Sistemi Operativi L-A
90
45
Caratteristiche di Unix






multi-utente
time sharing
kernel monolitico
Ambiente di sviluppo per programmi in
linguaggio C
Programmazione mediante linguaggi
comandi
portabilità
Sistemi Operativi L-A
91
POSIX
• 1988: POSIX (Portable Operating Systems
Interface) è lo standard definito dall’IEEE.
Definisce le caratteristiche relative alle
modalità di utilizzo del sistema operativo.
• 1990: POSIX viene anche riconosciuto
dall' International Standards Organization
(ISO).
• Anni 90: Negli anni seguenti, le versioni
successive di Unix SystemV e BSD
(versione 4.3), si uniformano a POSIX.
Sistemi Operativi L-A
92
46
Introduzione a GNU/Linux
• GNU project:

1984: Richard Stallman avvia un progetto di sviluppo di un
sistema operativo libero compatibile con Unix:
"GNU is Not Unix"

Furono sviluppate velocemente molte utilita` di sistema:
• editor Emacs,
• Compilatori: gcc,
• shell: bash,
• ...

lo sviluppo del kernel (Hurd), invece, subi` molte
vicissitudini e vide la luce molto piu` tardi (1996)
Sistemi Operativi L-A
93
GNU/Linux
• 1991: Linus Tornvalds realizza un kernel Unixcompatibile (Minix) e pubblica su web i sorgenti
• In breve tempo, grazie a una comunita` di hacker
in rapidissima espansione, Linux acquista le
caratteristiche di un prodotto affidabile e in
continuo miglioramento.
• 1994: Linux viene integrato nel progetto GNU
come kernel del sistema operativo: nasce il sistema
operativo GNU/Linux
Sistemi Operativi L-A
94
47
GNU/Linux
Caratteristiche:
 Open Source / Free software
 multi-utente, multiprogrammato e
multithreaded
 Kernel monolitico con possibilita` di
caricamento dinamico di moduli
 estendibilita`
 affidabilita`: testing in tempi brevissimi da
parte di migliaia di utenti/sviluppatori
 portabilità
Sistemi Operativi L-A
95
48