4_teoria dei sistemi operativi - Istituto Paritario Michelangelo

TEORIA DEI SISTEMI OPERATIVI
Sistemi monoprogrammati e
multiprogrammati
1
STRUTTURA DEL SISTEMA OPERATIVO
UTENTE
La struttura di un
sistema operativo
è di tipo
gerarchico : i
programmi che lo
compongono si
collocano a livelli
diversi.
I programmi ai
livelli più bassi
servono quelli ai
livelli più alti.
LIVELLO N
Esempi
LIVELLO N-1
Gestione RAM
Gestione CPU
LIVELLO 3
Gestione I/O
LIVELLO 2
Prog1
Prog2
Prog3
LIVELLO 1
M1
Mn
M1
M2
Mn
M1
Moduli
(un modulo è un insieme
di procedure che risolvono
problemi di uno stesso
tipo)
HARDWARE
2
SISTEMA OPERATIVO : QUALE SCEGLIERE?
• Occorre tener conto dei seguenti fattori:
– Più utenti (a turno o contemporaneamente) sfruttano le
capacità di uno stesso processore
– Alcuni eventi impongono la priorità di certe applicazioni su
altre
Il calcolatore deve eseguire più programmi
contemporaneamente?
SI
MULTIPROGRAMMAZIONE
NO
MONOPROGRAMMAZIONE
3
RISORSE HARDWARE
Dispositivi principali
• Unità centrali di elaborazione (CPU)
• Memorie centrali (MC)
• Unità di memoria di massa (MM)
• Dispositivi di ingresso e di uscita (I/O : input/output)
Altri dispositivi
Questi ultimi non vengono trattati ai
fini del sistema operativo in quanto
riguardano particolari funzioni (calcolo
matematico, gestione periferiche
grafiche)
• Elaboratori di canale
• Dispositivi multimediali
• Coprocessori matematici e acceleratori grafici
4
RISORSE HARDWARE
Esempi :
• Schede audio e video : sono da considerarsi particolari
dispositivi di ingresso e di uscita
• Lettori, masterizzatori di dischi ottici, CD, DVD : sono da
considerarsi particolari dispositivi di memoria di massa
Nota : ogni dispositivo ha in dotazione il proprio software che ne
permette l’utilizzazione
5
SISTEMA DI ELABORAZIONE DI BASE
Il generico sistema di calcolo a cui si fa riferimento è composto
da una CPU, una MC e una pluralità di dispositivi dei tipi
rimanenti:
Nota : Lo schema sopra è semplificato in quanto nelle realtà di
grandi dimensioni (workstation) ad alte prestazioni possono
essere presenti più processori (sistemi multiprocessore), in
questo caso il lavoro del sistema operativo si complica dovendo
gestire più processi.
6
SISTEMI MONOPROGRAMMATI
Un sistema operativo è composto da un insieme di programmi
che, per essere eseguiti nell’unità centrale di un calcolatore,
devono essere allocati in memoria centrale, cioè risiedervi nella
forma di codice macchina
Definizione: Un sistema viene detto monoprogrammato quando
la sua memoria centrale contiene, in un dato istante, codice
utente proveniente da un unico programma.
L’esecuzione di un’istruzione del programma utente comporta
una chiamata di sistema (system call ), cioè una richiesta a
qualche routine del S.O.
Esempio: richiesta d’accesso a qualche dispositivo (periferica o
memoria di massa)
7
SISTEMI MONOPROGRAMMATI :
CHIAMATA DI SISTEMA
Quando si scrive un programma in linguaggi evoluti come C++ è il compilatore
che genera il codice appropriato per il S.O. usato, diverso per Linux e
Windows.
In ogni caso, il compilatore genera una sequenza di istruzioni macchina, fra le
quali ad un certo punto compare almeno una chiamata al sistema operativo.
Flusso di esecuzione quando un’ istruzione del programma utente attraversa
la chiamata di sistema:
- Chiamata di sistema del programma utente
- Sospensione esecuzione programma
-Salvataggio informazioni del programma (utili per farlo ripartire in posizioni
opportune)
- Esecuzione della routine di sistema da parte del sistema operativo
- Esecuzione del programma dall’istruzione successiva all’interruzione (grazie
al registro Program Counter)
8
SISTEMI MONOPROGRAMMATI:
ATTIVITÀ DELLA CPU
Si può dividere il tempo che intercorre tra l’inizio e la fine del
programma in intervalli caratterizzati dalle diverse attività della CPU:
• Esecuzione di istruzioni del programma utente
• Esecuzione di istruzioni del sistema operativo
• Inattività, per esempio quando la CPU attende un input da tastiera.
9
SISTEMI MONOPROGRAMMATI:
ATTIVITÀ DELLA CPU
Considerazioni :
1. Il tempoInattivo può essere grande rispetto agli altri poiché la CPU è
molto veloce
2. Nel tempoInattivo la CPU potrebbe essere impiegata per eseguire
istruzioni di altri programmi
3. Ciò è possibile grazie a meccanismi che permettono di sospendere
l’esecuzione di un programma per ripristinarla all’occorrenza
10
SISTEMI MULTIPROGRAMMATI
• L’obiettivo è quello di ottenere il massimo rendimento della CPU
attraverso l’impiego dei tempi di inattività
Idea di base :
• La CPU, nel tempo in cui non viene usata dal programma utente,
viene adoperata per eseguire altri programmi, eventualmente di
utenti diversi.
• usare i meccanismi di sospensione dell’esecuzione, impiegati per
le routine di sistema, per permettere l’esecuzione anche di altri
programmi utente.
11
SISTEMI MULTIPROGRAMMATI
• Nuove funzioni richieste ai sistemi multiprogrammati
• Decidere quale istruzione far eseguire dopo quella attuale, se
prelevandola dallo stesso programma o da un altro
• Garantire la mutua protezione tra i diversi programmi, per evitare
che i dati di uno vengono inquinati dalle istruzioni dell’altro.
• Risolvere eventuali conflitti per l’assegnazione di una determinata
risorsa
• Il sistema operativo deve intervenire periodicamente di propria
iniziativa e non solo su richiesta di un programma
• System overhead = carico di lavoro in più imposto al sistema
operativo
12
SISTEMI MULTIPROGRAMMATI:
TIME SHARING
La multiprogrammazione si ottiene con il Time Sharing
Si dice che una risorsa viene gestita in modo time sharing (a partizione
di tempo), quando il suo uso viene concesso per un tempo che non
può superare un massimo: questo intervallo viene chiamato time slice
(fetta o quanto di tempo).
Il time sharing è un concetto che viene applicato ai singoli dispositivi.
Se la CPU di un sistema multiprogrammazione viene gestita in time
sharing, essa rimane assegnata a un programma utente fino a quando:
Il programma utente termina
Il programma utente richiede operazioni che coinvolgono altri
dispositivi
• Scade il time slice
•
•
13
SISTEMI MULTIPROGRAMMATI :
TIME SHARING
• Appena accade uno di questi eventi, il controllo passa al sistema
operativo che effettua un cambiamento di contesto, ossia decide a
quale tra gli altri programmi in memoria centrale spetti il prossimo
time slice.
• Il sistema operativo opera quindi un riassegnamento della CPU o
context switch (cambiamento di contesto)
• Il tempo necessario per prendere tale decisione si chiama tempo di
riassegnamento.
14
SISTEMI MULTIPROGRAMMATI:
CONTEXT SWITCH
• La modalità con cui il S.O. decide un cambiamento di contesto
costituisce un esempio di politica di gestione.
• La realizzazione più semplice di una politica di gestione consiste
nell’assegnamento round robin (a rotazione)
• Il programma a cui è stata tolta la risorsa viene messo in fondo ad una
coda di programmi in attesa.
Programmi in attesa
RAM
Sistema Op.
P2
P3
P4
Progr. 1
15
SISTEMI MULTIPROGRAMMATI:
GESTIONE DELLE PRIORITÀ
• E’ possibile che un sistema operativo usi meccanismi di priorità,
privilegiando alcuni programmi rispetto ad altri. In questo modo,
programmi con priorità alta saranno eseguiti più velocemente.
• In che modo ?
• Concedendo un time slice più lungo
• Assegnando più spesso la CPU ai programmi con priorità alta fra
quelli in attesa
• L’uso del time sharing della CPU permette di realizzare ambienti
multiprogrammati o multiutente senza la necessità di disporre di
diverse CPU.
• Il sistema operativo, attraverso il time sharing virtualizza la CPU
creandone una molteplicità dove in realtà ne esiste solo una.
16
SISTEMI MULTIPROGRAMMATI
SCELTA DELLA DURATA DEL TIME SLICE
• Occorre tener conto che il sistema operativo utilizza una parte del
tempo macchina a ogni time slice (operazioni di controllo e di
assegnamento risorsa)
• Se il time slice è troppo lungo, ci saranno programmi in attesa per
molto tempo
• Se il time slice è troppo breve, il sistema operativo dovrà intervenire
spesso sottraendo molto tempo all’elaborazione.
• Il valore di equilibrio dipende dalla velocità della CPU e dal tipo di
applicazione per cui è stato progettato il sistema di calcolo.
17