Il sistema operativo
Sistema operativo



Insieme di programmi per la gestione del
funzionamento del computer.
Interfaccia tra utente e hardware, ambiente per
l’esecuzione dei programmi.
Un sistema operativo viene caricato nella memoria
RAM all’accensione della macchina (programma
di boot) e rimane attivo fino allo spegnimento.
Sistema operativo

Il sistema operativo:
• è un insieme di moduli software;
• controlla le risorse hardware del sistema;
• mette a disposizione dell’utente una macchina
virtuale, in grado di eseguire comandi dati
dall’utente, utilizzando la macchina “reale”.
Sistema operativo

Il sistema operativo:presenta all’utente una macchina
virtuale che nasconde tutti i dettagli hardware che
sarebbero troppo complicati da gestire per la maggior
parte degli utenti.
Sistema operativo

Le richieste dell'utente al SO,
fatte digitando dei comandi nelle
interfacce a carattere (Character
User Interface) o selezionando
oggetti con il mouse nelle
interfacce grafiche (Graphic
User Interface), sono intercettate
dall'interprete dei comandi
(shell), il quale attiva i moduli
programma che agiscono nei
componenti del nucleo (kernel).
Questi attivano i dispositivi
hardware quali il processore, la
memoria, i controller di I/O,
ecc., che svolgono la richiesta
dell'utente.
Sistema operativo



E’ uno strato software che
opera direttamente
sull’hardware
Isola gli utenti dai dettagli
dell’hardware
E’ organizzato a strati:
Programmi utente
Interprete comandi
attivazione programmi d’utente o di sistema
File system
controllo e gestione degli accessi a file
Gestione delle periferiche
gestione di ingresso/uscita da periferica
• Architettura a buccia di
cipolla
• Ogni strato costituisce
una macchina virtuale
Gestione della memoria
allocazione e gestione della memoria
Gestione dei processi (nucleo)
gestione dei processi e delle interruzioni
Macchina fisica
Kernel
Funzioni del sistema operativo





Il gestore dei processi (o nucleo) è responsabile
dell’esecuzione dei programmi da parte dell’unità di
elaborazione
Il gestore della memoria ha la funzione di allocare
la memoria e partizionarla tra i vari programmi
I driver sono responsabili delle operazioni di
ingresso/uscita che coinvolgono le periferiche
Il file system è responsabile della gestione dei file in
memoria di massa
L’interprete comandi consente all’utente di attivare
i programmi
Gestione dei processi

Funzioni:
• Interazione diretta con l’Hardware
• Esecuzione dei programmi come processi
Gestione dei processi


Un processo e’ correlato alla esecuzione di un
programma
Definizione:
• Un processo P e’ una coppia di elementi (E, S) che
comprende il codice eseguibile E del programma e lo stato S
del processo

Un programma puo’ essere associato a piu’ processi:
• Un programma puo’ essere scomposto in varie parti e ognuna
di esse puo’ essere associata ad un processo separato
• Un programma puo’ essere associato a vari processi quando
diverse copie del processo sono eseguite

Un calcolatore puo’ avere piu’ processori (un processore
e’ un unita’ di elaborazione che esegue i processi)
Gestione dei processi

I processi hanno sempre aree dati disgiunte (sebbene possano,
a richiesta, condividere parte dei dati oppure scambiarsi dei
messaggi).
Memoriacentrale
Memoriacentrale
Altri processi 
Codiceeseguibile
del programmaQ
Codiceeseguibile
del programmaP
Processo
P1
Dati sui cui agisce
il programmaP
Processo
Q1
Processo
P2
Processo
P1
Dati sui cui agisce
il programmaQ
Codiceeseguibile
del programmaP
Dati sui cui agisce
il programmaP
Codiceeseguibile
del programmaP
Dati sui cui agisce
il programmaP
Gli stati di un processo





Nuovo: il processo viene
Inizio esecuzione
creato
In esecuzione: assegnato al - Fine quanto di tempo
Processo
processore ed eseguito da
pronto
- Interruzione esterna
esso
Pronto: può andare in
Primo processo
esecuzione, se il gestore dei
pronto
processi lo decide
Processo in
Evento esterno
In attesa: attende il
esecuzione
atteso
verificarsi di un evento
esterno per andare in stato
di pronto
Interruzione
Terminato: il processo ha
interna
Processo in
terminato l’esecuzione, ma
attesa
non è stato ancora
- Fine esecuzione
fisicamente cancellato dalla - Abort per errore
memoria centrale.
Gli stati di un processo




I processi appena creati si mettono in stato di pronto
Il kernel (nucleo) decide quale processo pronto
eseguire (mettere in stato di esecuzione)
Il kernel assegna il processore ad un processo per un
intervallo (quanto) di tempo
L’assegnazione di un processo al processore tiene
conto della coda dei processi pronti, della priorita’
dei processi e della politica round-robin
Gli stati di un processo

Un processo in esecuzione passa in stato di attesa se:
• Richiede operazioni di I/O (interruzione interna) e per non
lasciare il sistema inattivo, il processo attivo viene interrotto e
posto in stato di attesa
• Si verificano richieste di interruzioni esterne
• Se il tempo allocato al processo e’ scaduto (); il processore cerca
di garantire un uso equo della CPU a tutti i processi; il nucleo
interrompe l’esecuzione del processo attivo per non penalizzare
gli altri processi esistenti; quando il processo torna in stato attivo
prosegue con l’elaborazione dell’istruzione successiva a quella
su cui era stato precedentemente interrotto
• al termine delle propria esecuzione ed è rimosso dall’elenco dei
processi esistenti

Quando un processo viene interrotto si verifica un cambiamento di contesto: si
salva il contesto del processo appena interrotto nel suo descrittore di processo,
dopodiche’ il processore diventa libero e un altro processo pronto pasa in
esecuzione
Gli stati di un processo




Quando un processo richiede un’operazione di I/O
esso passa dalla stato in esecuzione allo stato in attesa
Quando l’operazione di I/O finisce, viene generato
un’interruzione esterna e quindi il processo in
esecuzione viene interrotto e quindi passa dallo stato
di esecuzione allo stato pronto
Il kernel esegue il gestore delle interruzioni per
risolvere l’interruzione
In processo in attesa del I/O diventa pronto
Gli stati di un processo

Quando un processo viene fatto transitare di stato, si dice
che avviene una commutazione di contesto (context
switch).
nuovo
term
inato
am
m
esso
espulso
avviato
pronto
attivo
interrotto
com
pletam
entodi unevento
attesadi unevento
sospeso
Cambiamento di contesto





Contesto: insieme delle informazioni che
caratterizzano lo stato di un processo
Se il processo è fisicamente in esecuzione parte del
contesto si trova nei registri della CPU (Program
Counter, registri utente)
Se il processo non è in esecuzione il contesto è in
memoria.
Cambiamento di contesto: operazione che avviene
quando il sistema operativo decide di mandare in
esecuzione un altro processo
Il sistema operativo deve salvare tutte le
informazioni necessarie a ripristinare esattamente lo
stato del processo in esecuzione nel futuro.
Sistema operativo


Per descrivere gli stati del
processo e per gestire le
commutazioni di contesto
subite dal processo, al
processo va associata
un’opportuna struttura dati,
chiamata area dati di nucleo
(process control block).
L’area dati di nucleo del
processo è creata e gestita
direttamente dal sistema
operativo; non è direttamente
visibile da parte del
processo.
Parametri dell’area dati di nucleo
Stato del processo: nuovo, pronto, attivo, sospeso, terminato.
Contatore di programma: l’indirizzo della prima istruzione da
eseguire, quando il processo entra in stato attivo.
Numero del processo, o PID: identificatore univoco del processo.
Registri del processore: tutti i registri (general e special purpose) del
processore, da ripristinare nel processore quando il processo entra in
stato attivo.
Informazioni di scheduling del processore: priorità del processo,
puntatori alle code di scheduling, parametri di scheduling, ecc.
Informazioni di gestione della memoria: registri base e limite dello
spazio di memoria assegnato al processo, tabelle delle pagine o dei
segmenti di memoria di proprietà del processo, ecc.
Informazioni contabili: tempo di processore e tempo reale di utilizzo
del processore, limiti di tempo, ecc.
Informazioni di I/O: elenco delle periferiche assegnate al processo,
elenco dei descrittori di file aperti da parte del processo, ecc.
Esempio di commutazione di contesto
processo P1
sistema operativo
processo P2
interruzione o chiamata di sistema
in esecuzione
salva lo stato in ADN1
inattivo
ripristina lo stato da ADN2
inattivo
interruzione o chiamata
di sistema
in esecuzione
salva lo stato in ADN2
ripristina lo stato da ADN1
in esecuzione
inattivo
Classificazione dei SO

In base alla modalita’ di gestione dei programmi:
• Monoprogrammazione (esegue un solo programma alla
volta)
• Multiprogrammazione (esegue piu’ programmi
apparentemente conteporaneamente, in realta’ in timesharing, suddividendo il tempo di esecuzione in intervalli
molto piccoli e assegnando a turno le risorse ai diversi
programmi)

In base al tipo di accesso fornito agli utenti:
• Monoutente (un solo utente puo’ usare la macchina)
• Multiutente (piu’ utenti possono contemporaneamente
interagire con la stessa macchina)
Classificazione dei SO




I concetti di mono e multi-programmazione sono
indipendenti sa quelli di SO mono e multi-utente
I SO attuali operano tutti in multiprogrammazione
Windows nasce come sistema monoutente, anche se
le versioni evolute (NT, 2000, XP) hanno alcune
funzioni che possono essere utilizzate in modo
concorrente da piu’ utenti contemporaneamente
UNIX e’ un sistema multiutente che opera in
multiprogrammazione
Classificazione dei SO

In base al tipo di schell utilizzato:
• Shell alfanumerici (MS-DOS, UNIX, …) i comandi
vengono inseriti come stringhe di caratteri e impartiti
tramite la tastiera
• Shell grafici - Graphic User Interface (GUI) i comandi
e gli oggetti vengono rappresentati in modo grafico e
possono essere impartiti, eseguiti o manipolati
attraverso l’uso congiunto di mouse e tastiera
Sistema operativo

Quando si parla di multiprogrammazione si parla
anche di time-sharing: il sistema operativo che fa
sì che le risorse del calcolatore siano assegnate per
prefissati intervalli di tempo, in successione, ai
diversi programmi: gli intervalli di tempo possono
essere più o meno lunghi l’uno rispetto all’altro, a
seconda della priorità di cui gode il programma
che l'utente utilizza, ma comunque sono di
brevissima durata.
Sistema operativo in time sharing


Permette la condivisione della CPU tra più processi
Ogni processo in esecuzione ha a disposizione un quanto di
tempo di utilizzo della CPU, al termine del quale viene
sospeso per lasciare il posto ad un altro processo in attesa di
esecuzione.
Sistema operativo - scheduling
In u
ns
is
te
m
ac
o
nu
ns
in
g
o
lo p
ro
c
e
s
s
o
re e p
iù p
ro
c
e
s
s
i n
o
nè
p
o
s
s
ib
ilea
v
e
rep
iùd
iu
np
ro
c
e
s
s
oa
ttiv
oino
g
n
i is
ta
n
ted
i te
m
p
o
.
E
’n
e
c
e
s
s
a
rioe
s
e
g
u
irei p
ro
c
e
s
s
i ain
te
rv
a
lli (q
u
a
n
ti d
i te
m
p
o
)e
p
re
v
e
d
e
re u
ns
is
te
m
ad
i rio
rd
in
a
m
e
n
to (s
c
h
e
d
u
lin
g
) d
e
lle lo
ro
e
s
e
c
u
z
io
n
i,c
h
ea
s
s
e
g
n
i lo
rote
m
p
od
ie
s
e
c
u
z
io
n
einm
o
d
oe
q
u
o
.
Ip
ro
c
e
s
s
iv
e
n
g
o
n
ofa
tti a
v
a
n
z
a
reatu
rn
o
,a
s
s
e
g
n
a
n
d
olo
rou
nq
u
a
n
to
d
i te
m
p
op
e
rp
o
rta
rs
ia
v
a
n
ti n
e
ll’e
s
e
c
u
z
io
n
e
.
S
io
ttie
n
elos
c
h
e
d
u
lin
gd
e
ip
ro
c
e
s
s
im
e
d
ia
n
teu
n
a(oa
n
c
h
ep
iùd
i
u
n
a
)c
o
d
ad
is
c
h
e
d
u
lin
g
,inc
u
iv
e
n
g
o
n
oin
s
e
riti i p
ro
c
e
s
s
ic
h
ed
e
v
o
n
o
e
s
s
e
refa
tti a
s
p
e
tta
re
.
Sistema operativo e macchine virtuali

In una macchina multiprogrammata il sistema operativo
gestisce più processi contemporaneamente, rendendo
visibile ad ogni processo una macchina “virtuale” ad esso
interamente dedicata e quindi con risorse proprie.
Sistema operativo e macchine reali
Sistema operativo

Lo schedulatore (scheduler) è la componente del sistema
operativo che si occupa di spostare i processi tra le varie
code di attesa.
coda dei processi
in stato pronto
I/O
CPU
coda di I/O
richiesta di I/O
quanto di tempo esaurito
fine esecuzione
processo figlio
processo figlio
in esecuzione
fork di un
processo figlio
arrivo dell’interruzione
attesa di
un’interruzione
Sincronizzazione dei processi



A volte, i processi devono sincronizzarsi, ovvero
coordinare le loro attività
Il coordinamento sequenziale: un processo
termina invocando l’attivazione di un altro
processo
La competizione: due processi vogliono accedere
simultaneamente a una medesima risorsa (risorsa
critica)
Gestione della memoria centrale



Il sistema operativo permette l’esecuzione
contemporanea di più processi e tutti i processi pronti
dovrebbero avere tutto il programma o almeno le
prossime istruzioni caricate nella memoria.
Se lo spazio totale occupato dai processi supera la
dimensione della memoria centrale, non tutti i
processi possono risiedere per intero nella memoria
centrale
Normalmente la quantità di memoria non è
sufficiente a contenere tutti le istruzioni e tutti i dati
di tutti i processi gestiti.
Gestione della memoria centrale


La memoria deve essere gestita con molta
attenzione ed efficienza caricando solo i dati e le
istruzioni che devono essere modificate ed
eseguite. Le altre parti devono essere spostate sul
disco per poter essere caricate quando necessario.
La memoria virtuale e’ un sistema per aumentare
lo spazio di memoria disponibile
Gestione della memoria centrale


Partizionamento della memoria e del suo spazio di indirizzi.
Tecniche di partizionamento:
• Segmentazione: suddivide la memoria centrale in segmenti di lunghezza
variabili contenenti parti di un programma logicamente correlati tra di loro
• Paginazione: suddivide memoria e programmi in pagine di lunghezza fissa;
i programmi vengono caricati in memoria anche in pagine non contigue

NON sono tecniche alternative. Spesso sono applicate
contemporaneamente

Sia nel caso della partizione, sia in quello della segmentazione, il
gestore della memoria offre al programma applicativo la visione di
una memoria virtuale
Gestione della memoria centrale

Ad ogni processo viene assegnata nella fase di partenza una
tabella detta tabella delle pagine dove per ogni pagina usata
dal processo viene scritto dove si trova la pagina fisica.

La memoria virtuale è maggiore di quella fisica
La gestione della memoria è coordinata con la gestione dei
processi

File System – il gestore dei file





Un file è un insieme di dati omogenei fra loro e raggruppati ai
fini di archiviazione, di successiva elaborazione o di esecuzione.
Possono contenere dati (file dati), programmi in linguaggio
macchina (file eseguibili) o sequenze di comandi del sistema
operativo (script o file batch).
Un sistema operativo fornisce dei formati standard con cui
organizzare i dati nella memoria di massa e i comandi per
manipolare i file (file system).
Ogni file è caratterizzato da un nome e da una estensione, che
serve ad identificarne il tipo.
Es. i file eseguibili sotto MSDOS/Windows hanno estensione
.EXE, quindi il file prova.exe è un file che contiene codice
direttamente eseguibile dalla CPU.
File System – il gestore dei file


L'oggetto elementare su cui opera il file system è il FILE,
ossia una raccolta di dati registrati su memoria di massa (il
file è visto dal SO come una sequenza di byte)
Tipi di file:
• testo (ASCII): una sequenza di caratteri, ad esempio un
programma sorgente (es. in linguaggio C) o un editor di
testo semplice
• binari: una sequenza di byte
• eseguibili (programmi) e non eseguibili (es. immagini,
documenti creati con word processor)
File System – il gestore dei file



Sul disco rigido i file sono organizzati in modo gerarchico e
possono essere inseriti in opportuni “contenitori” (cartelle o
directory: sono anch’essi file! Una directory contiene una
lista dei nomi e attributi dei file e directory al suo interno).
Il disco può essere considerato come un archivio che
contiene varie cartelle. Ogni cartella contiene documenti
(file) o altre cartelle, che a loro volta contengono file o
cartelle, realizzando una struttura ad albero.
Ogni file è quindi identificato da un percorso, che
rappresenta la sequenza delle cartelle che bisogna aprire per
raggiungerlo.
File System – il gestore dei file


Il percorso di un file individua le directory che devono
essere percorse per raggiungere quella che contiene il file.
Il percorso e il nome del file individuano l’oggetto e ne
specificano la collocazione nella struttura gerarchica:
c:/Didat/esami/iscrmar.doc
File System – il gestore dei file

Funzioni principali:
•
•
•
•
•
•
Creazione di file
Copiatura di file
Spostamento (da una cartella ad un’altra) di file
Ridenominazione di file
Cancellazione di file
Strutturazione dei dischi (e dei nastri) come insiemi di
file.
• ...

Per ognuna di queste operazioni esiste un opportuno
comando (interfaccia utente alfanumerica) o una
azione corrispondente con mouse e tastiera (GUI).
Gestione delle periferiche

Funzioni principali:
• Indirizzamento dei segnali da e verso le periferiche
• Sincronizzazione delle periferiche

Gestione del sistema di Ingresso/Uscita
• Sistema di tamponamento dei flussi di dati (buffercaching).
• Interfaccia generale per i programmi di controllo
(driver) delle periferiche (device).
• Collezione di programmi di controllo (driver) specifici
per le varie periferiche (device) collegabili al
calcolatore.
Driver - Gestione delle periferiche


I driver sono meccanismi software cui è affidato il
compito di comunicare dati da e verso le periferiche
Garantiscono ai programmi che li usano una visione
di alto livello
• E’ possibile leggere o scrivere tramite primitive
indipendenti dalla struttura hardware delle periferiche

Si distingue fra:
• Driver fisici (hardware). Vengono attivati direttamente dal
gestore delle interruzioni
• Driver logici (software). Fanno parte del sistema operativo
e forniscono una gerarchia di operazioni, con
un’organizzazione a strati
Scarica

sistema operativo 2