Il Sistema Operativo - Dipartimento di Informatica

Il Sistema Operativo
Il Sistema Operativo fa parte del software di
base; e` costituito da un insieme di programmi
che interagiscono e cooperano per:
‹ gestire
efficientemente l'elaboratore e le sue
periferiche, cercando di sfruttare al massimo
tutte le componenti hardware
‹ creare
un ambiente amichevole per l'interazione
uomo-macchina
Il Sistema Operativo
Funzioni del Sistema Operativo:
Operativo
‹ Avvio
dell’elaboratore
‹ Gestione del processore
esecuzione
‹ Gestione
e
dei
della memoria principale
‹ Gestione della memoria secondaria
‹ Gestione dei dispositivi di input/output
‹ Gestione dei file
‹ Interazione
con l’utente
programmi
in
Il Sistema Operativo
Tipologie di SO:
‹ sistemi
mono-utente - sistemi multi-utente
i sistemi mono- utente sono destinati ad elaboratori per usi personale
(tipo PC) mentre i sistemi multi-utente sono destinati ad elaboratori
utilizzati da piu` utenti contemporaneamente
‹ sistemi
mono-programmati - sistemi multi-
programmati
i sistemi mono- programmati gestiscono l’ esecuzione di un solo
programma alla volta, mentre i sistemi multi-programmati gestiscono
piu` programmi contemporaneamente
‹ sistemi
interattivi - sistemi batch
classificazione basata sull’ interazione con l’utente
Il Sistema Operativo
„
Sistemi mono-utente interattivi pensati per
Personal Computer
‹ IBM
PC - Compatibili (DOS - Windows)
‹ Macintosh
„
L’ interazione utente/computer puo` essere:
‹ testuale
)
es. MS-DOS per PC-IBM
‹ grafica
es. Macintosh
) es. Windows per PC-IBM
)
Il Sistema Operativo: Esempio
Immettiamo il comando date
Il Sistema Operativo: Esempio
Premendo il tasto “Enter” si ottiene
„
„
„
Le operazioni effettuate sembrano abbastanza
semplici ma provocano una serie di eventi in cui
vengono coinvolte sia risorse hardware che
risorse software
Il coordinamento e la gestione delle varie
risorse viene effettuato dal Sistema Operativo
Il Sistema Operativo fornisce i servizi che sono
necessari a tutti gli altri programmi in
esecuzione
Esempio
dat
BUFFER
listener
directory manager
file manager
terminal driver
disk driver
Monitor
dat
BUFFER
Tastiera
Disco rigido
148.608.043.200.010
OROLOGIO
œ Per ogni carattere immesso tramite la tastiera viene
generato un codice corrispondente
 Il codice, grazie ad una componente hardware, viene
memorizzato in un’area di memoria riservata (buffer) e
viene inviato un segnale alla CPU (interrupt)
ž Quando la CPU riceve l`interrupt dalla tastiera attiva un
modulo (un piccolo programma) chiamato terminal
driver
Ÿ Il terminal driver invia al monitor una copia del codice
del carattere immesso per visualizzare il carattere
Il codice corrispondente al carattere “Enter” indica che
il comando immesso (date) è completo
¡ Il terminal driver attiva un altro modulo chiamato
listener (perchè attende le richieste provenienti dagli
utenti)
¢ Il listener legge i caratteri dal buffer della tastiera e
ricerca un programma chiamato date, lo carica in
memoria centrale e lo esegue
£ Il programma date “va a leggere” un “orologio” (un
contatore che tiene conto dello scorrere del tempo) e
passa l’informazione letta al terminal driver
¤ Il terminal driver trasmette la data al monitor che la
visualizza
Organizzazione del SO
„
„
„
La gestione dei vari eventi da parte di un S.O. è una
delle aree di vitale importanza dell’informatica
L’idea di base è quella di creare una gerarchia di
livelli di astrazione (struttura a cipolla)
In questo modo, ad ogni livello le funzionalità presenti
possono ignorare i dettagli sulle funzionalità offerte da
altri livelli
kernel
gestione memoria
processore, risorse
interfaccia comandi
Organizzazione del SO
„
„
„
Al livello più alto della gerarchia di funzionalità si trova
l’utente del sistema
Idealmente l’utente è ignaro di tutti i dettagli delle
operazioni svolte dai livelli inferiori della gerarchia
L’utente ha conoscenza solo delle operazioni che è
interessato ad effettuare
‹
Nell’esempio della data l’utente è interessato alla data e
conosce solo il comando che serve per ottenere tale
informazione
Avvio dell’elaboratore
„
„
„
Il sistema operativo viene mandato in esecuzione
all’accensione del calcolatore (fase di bootstrap)
In questa fase una parte del sistema operativo viene
caricata in RAM,in genere questa parte comprende:
‹
programmi per la gestione del processore
‹
programmi per la gestione della RAM
‹
programmi per la gestione dell’I/O
‹
programmi per la gestione dei file
‹
programmi per l’interfaccia con l’utente
Spesso in questa fase si eseguono anche programmi per la
ricerca di virus
Avvio dell’elaboratore
Una parte del Sistema Operativo deve essere sempre
mantenuta in RAM e deve sempre essere pronta per
l’esecuzione
0
1
Sistema Operativo
Spazio utente
n
Gestione del processore e dei processi
„
„
„
Il processore è la componente più importante di
un sistema di elaborazione e pertanto la sua
corretta ed efficiente gestione è uno dei compiti
principali di un sistema operativo
Il ruolo del processore è quello di eseguire
programmi
Chiamiamo processo un programma in
esecuzione
Gestione del processore e dei processi
„
Quando si clicca sull’icona di un programma,
il Sistema Operativo:
‹ cerca
il programma corrispondente in memoria
secondaria
‹ copia
il programma in RAM
‹ imposta
il Program Counter con l’indirizzo della
prima istruzione del programma principale
Gestione del processore e dei processi
Sistemi mono-utente, mono-programmati
„
„
„
„
„
Un solo utente puo’ eseguire un solo programma
alla volta
Il programma viene “lanciato” , eseguito e
terminato
La CPU non e’ utilizzata al meglio!
meglio Si spreca molto
tempo
La CPU e’ molto piu’ veloce delle periferiche
(dispositi di I/O e disco) quindi passa molto del suo
tempo in attesa del completamento delle
operazioni da parte di questi dispositivi
Durante queste fasi di attesa si dice che la CPU e’
idle
Gestione del processore e dei processi
Esempio 1.
„
Un processo e’ costituito da 1000 istruzioni, la CPU ha
frequenza di 1MHz, quindi il processo richiede:
103/106 sec = 1msec
„
A meta’ esecuzione e’ richiesta la lettura di un dato dal
disco. Il tempo di lettura e’ pari a 1msec. :
tempo totale di esecuzione del processo = 2 msec.
„
Idle time = 1 msec.:
Il 50% del tempo totale di esecuzione e’ tempo sprecato
Gestione del processore e dei processi
Esempio 2.
„
Un processo e’ costituito da 1000 istruzioni, la CPU ha
frequenza di 1MHz, quindi il processo richiede:
103/106 sec = 1msec
„
A meta’ esecuzione e’ richiesta la lettura di un dato da
tastiera. Il tempo di lettura e’ pari a 1sec. :
tempo totale di esecuzione del processo = 1001 msec.
„
Idle time = 1 sec.:
Il 99,9 % del tempo totale di esecuzione e’ tempo
sprecato!!!
Gestione del processore e dei processi
Sistemi multiprogrammati
„
„
„
„
„
Quando un processo si ferma in attesa di operazioni di I/O, la CPU
passa ad eseguire un altro proceso
Il SO si occupa dell’alternanza tra i vari processi
Piu’ programmi sembrano cosi’ essere eseguiti
contemporaneamente
In realta’ in ogni istante c’e’ sempre un solo processo in
esecuzione,
esecuzione ma se l’alternanza e’ molto frequente si ha
un’impressione di simultaneita’
Il numero di processi “contemporaneamente”
contemporaneamente in esecuzione e’
comunque limitato ed e’ detto ”grado di multiprogrammazione”
multiprogrammazione
Gestione del processore e dei processi
„
Un processo può trovarsi in tre diversi stati:
‹ in
esecuzione,
processore;
quando
sta
utilizzando
il
‹ in
attesa (bloccato), quando è in attesa del
verificarsi di un evento esterno (terminazione di
un’operazione di input/output o altro)
‹ pronto,
pronto
quando è potenzialmente in condizione di
poter utilizzare il processore che è occupato da un
altro processo
Gestione del processore e dei
processi
in_esecuzione
scambio
esecuzione
creazione
pronto
terminazione
richiesta I/O o risorsa
I/O terminato o
risorsa disponibile
in_attesa
Gestione del processore e dei processi
Cosa succede se….
se
„
Un processo non si ferma mai in attesa di I/O?
„
Piu’ utenti vogliono usare il computer?
„
E’ necessario che il tempo della CPU sia distribuito
tra i processi in attesa: si parla di politica di
scheduling della CPU. Se un processo in stato di
esecuzione puo’ essere interrotto e ritornare nello
stato di pronto, la politica si dice di tipo preemptive
(prerilasciabile)
Gestione del processore e dei processi
in_esecuzione
scambio
esecuzione
creazione
pronto
Coda ready
po
m
te
s
uto
d
ca
I/O terminato o
risorsa disponibile
terminazione
richiesta I/O o risorsa
in_attesa
Gestione del processore e dei processi
„
Per gestire l’insieme dei processi attivi il SO mantiene in un’area
di memoria riservata, la tabella dei processi, in cui per ogni
processo memorizza molte informazioni:
‹
Identificatore del processo
‹
Identificatore dell’utente
‹
Stato del processo
‹
Contenuto del Program Counter e altri registri
‹
Informazioni file aperti
‹
….
Gestione del processore e dei processi
„
„
„
„
Le informazioni della tabella dei Processi servono a
realizzare lo scambio di contesto (context switching)
Quando un processo rilascia la CPU, le informazioni
del suo stato vengono copiate nel suo descrittore
all’interno della tabella dei processi
Quando il processo torna in esecuzione questi valori
vengono ricopiati negli opportuni registri
In questo modo quando riprende l’esecuzione, il
processo riparte dal punto in cui era stato interrotto
Obiettivi del gestore dei processi
„
massimizzare l’ utilizzazione del processsore
„
minimizzare il tempo d`attesa dei processi
„
„
massimizzare il numero dei programmi
eseguiti nell’ unita` di teempo (throughput)
throughput
minimizzare il tempo
processi (turnaround)
turnaround
d`esecuzione
dei