Informatica
Lezione 7
Scienze e tecniche psicologiche dello sviluppo e
dell'educazione (laurea triennale)
Anno accademico: 2006-2007
Esecuzione sequenziale
Processo P1
inizio
Processo P2
fine inizio
fine
in attesa
esecuzione
Processore
attivo
idle
Esecuzione sequenziale
• Supponiamo che il nostro sistema sia un bar in cui il
barista serve diversi clienti
• Il barista è corrispondente del processore, i clienti
sono l’equivalente dei processi da eseguire
• Esecuzione mono-programmati:
Cliente 1
Ordinare
Preparare
il caffè
Consumare
Pagare
Cliente 2
Ordinare Preparare
il caffè
Consumare
Pagare
Soluzione
• In realtà:
Cliente 1
Cliente 2
Ordinare
(C1)
Ordinare
(C2)
Preparare
il caffè (C1)
Preparare
il caffè (C2)
Pagare
(C1)
Pagare
(C2)
Soluzione: sistemi multiprogrammati
• Quando il processore è nello stato di idle la si
può sfruttare per eseguire (parte di) un altro
processo
• Quando un processo si ferma (per esempio in
attesa di un dato dall’utente) il processore
può passare ad eseguire le istruzioni di un
altro processo
• Il sistema operativo si occupa dell’alternanza
tra i processi in esecuzione
Sistemi multiprogrammati
Dal punto di vista dei processi
P1
P2
Dal punto di vista del processore
esec P1
esec P2
Sistemi multiprogrammati
• Più programmi sembrano essere
eseguiti “contemporaneamente”
• In realtà in esecuzione c’è sempre un
solo processo
– Ma, se l’alternanza è molto frequente, si ha
un’idea di simultaneità
Sistemi multiprogrammati
• Un processo può trovarsi in tre diversi stati: in
esecuzione, in attesa, pronto
esecuzione
pronto
Quando è potenzialmente in condizione
di poter utilizzare il processore che è
occupato da un altro processo
Quando sta utilizzando
il processore
attesa
Quando è in attesa del verificarsi
di un evento esterno
Sistemi multiprogrammati
terminazione
esecuzione
richiesta I/O
o risorse
scambio
esecuzione
pronto
I/O terminato o
risorsa disponibile
attesa
Sistemi multiprogrammati
Quando un processo viene creato viene
messo nello stato di pronto
• in tale stato rimane fino a quando
non arriverà il suo turno
pronto
Sistemi multiprogrammati
esecuzione
scambio
esecuzione
pronto
attesa
Sistemi multiprogrammati
Un processo può abbandonare lo stato di esecuzione
per tre diverse ragioni
esecuzione
pronto
attesa
Sistemi multiprogrammati
Un processo può abbandonare lo stato di esecuzione
per tre diverse ragioni
terminazione
esecuzione
Il processo termina
la sua esecuzione
e abbandona il sistema
pronto
attesa
Sistemi multiprogrammati
Un processo può abbandonare lo stato di esecuzione
per tre diverse ragioni
terminazione
esecuzione
richiesta I/O
o risorse
pronto
attesa
Il processore viene liberato e può essere
concesso ad un altro processo pronto
Sistemi multiprogrammati
Un processo può abbandonare lo stato di esecuzione
per tre diverse ragioni
terminazione
esecuzione
scambio
esecuzione
pronto
richiesta I/O
o risorse
attesa
Per realizzare in modo equo l’alternanza tra i processi, in certi casi può essere
opportuno fermare un processo e concedere il processore ad un altro processo
Sistemi multiprogrammati
• In quali casi è opportuno fermare un processo
e concedere il processore ad un altro
processo?
– Se un processo non si ferma mai in attesa di
input/output o di una risorsa
– Se più utenti vogliono usare il computer
• In questi casi è necessario far sì che il
processore sia distribuita tra i processi dello
stesso utente e di utenti diversi
• Si parla di scheduling del processore
Esempio di scheduling:
Round Robin
• Ad ogni processo viene assegnato un quanto
di tempo del processore (time slice)
• Terminato il quanto di tempo, il processo
viene sospeso e rimesso nella coda dei
processi pronti (al fondo della coda)
• Il processore viene assegnata ad un altro
processo pronto
• Un processo può usare meno del quanto che
gli spetta se deve eseguire operazioni di I/O
oppure ha terminato la sua computazione
Esempio di scheduling:
Round Robin
Più precisamente, nel caso della
politica di scheduling Round Robin
terminazione
esecuzione
in esecuzione
quanto di
tempo scaduto
pronto
I/O terminato o
risorsa disponibile
richiesta I/O
o risorse
attesa
Sistemi multi-utente, multiprogrammati
• Più utenti possono usare allo stesso
tempo il computer
– … perché il processore viene assegnata
periodicamente ai processi dei vari utenti
(per esempio ogni 10 o 100 millisecondo)
• All’aumentare del numero di processi e
del numero di utenti le prestazioni del
sistema possono degradare
Esercizio 1a
• Supponiamo di avere nella coda dei processi pronti tre processi
P1, P2 e P3 con i seguenti “comportamenti” in termini di
computazione e tempi di attesa
calcolo
P1
10
P2
10
P3
10
40
10
30
20
10
10
10
in attesa
10
• Quante unità di tempo ci vogliono per portare a termine tutti e
tre i processi in un sistema mono-programmato?
Esercizio 1a: soluzione
• Quante unità di tempo ci vogliono per portare
a termine tutti e tre i processi in un sistema
mono-programmato?
10
40
10 10
20
30
Tot(P1)=60, Tot(P2)=60, Tot(P3)=50
Tot(P1+P2+P3) = 60 + 60 + 50 = 170
10
10 10
10 10
Esercizio 1b
• Supponiamo di avere nella coda dei processi pronti tre processi
P1, P2 e P3 con i seguenti “comportamenti” in termini di
computazione e tempi di attesa
calcolo
P1
10
P2
10
P3
10
40
10
30
20
10
10
10
in attesa
10
• Quante unità di tempo ci vogliono per portare a termine tutti e
tre i processi in un sistema multi-programmato, se si applica
l’alternanza tra i processi?
Esercizio 1b: una soluzione
• Quante unità di tempo ci vogliono per portare a termine tutti e
tre i processi in un sistema multi-programmato, se si applica
l’alternanza tra i processi?
P1
10
P2
10
P3
10
40
10
30
20
10
10
10
10
In questo caso, quando
un processo va in attesa,
il processore viene
assegnato al primo
processo pronto
Totale
= 100
P1 in attesa
P2 in attesa
P3 in attesa
P3 in attesa
Esercizio 1b: un’altra soluzione
• Quante unità di tempo ci vogliono per portare a termine tutti e
tre i processi in un sistema multi-programmato, se si applica
l’alternanza tra i processi?
P1
10
P2
10
P3
10
40
10
30
20
10
10
10
10
P1 in attesa
P2 in attesa
P3 in attesa
P3 in attesa
Totale
= 100
Esercizio 1b: una soluzione ottimale
• Quante unità di tempo ci vogliono per portare a termine tutti e
tre i processi in un sistema multi-programmato, se si applica
l’alternanza tra i processi?
P1
10
P2
10
P3
10
40
10
30
20
10
10
10
10
Totale
= 90
P1 in attesa
P2 in attesa
P3 in attesa
P3 in attesa
Esercizio 2
• Supponiamo di avere nella coda dei
processi pronti i processi
– P1 durata = 40 unità di tempo
– P2 durata = 10 unità di tempo
– P3 durata = 60 unità di tempo
– P4 durata = 30 unità di tempo
• Qual è una sequenza di esecuzione con
una politica di scheduling Round Robin
e quanto di tempo pari a 20 unità?
Esercizio 2: una soluzione
– P1 durata = 40 unità di tempo
– P2 durata = 10 unità di tempo
– P3 durata = 60 unità di tempo
– P4 durata = 30 unità di tempo
P1
0
P2
20 30
P3
P4
50
P1
70
P3
90
P4
P3
110 120
Non consideriamo eventuali tempi di attesa
140
Gestione dei processi
• Per gestire un insieme di processi
“contemporaneamente” attivi il sistema
operativo mantiene la tabella di processi
– Per ogni processo vi è un descrittore nel quale
sono memorizzate informazioni come:
•
•
•
•
L’identificatore del processo
L’identificatore dell’utente proprietario
Lo stato del processo
Ecc.
• Queste informazioni servono per realizzare
l’operazione di cambio di contesto
Gestione dei processi
• Cambio di contesto:
– Quando un processo rilascia il processore,
le informazioni sul suo stato vengono
memorizzate nel suo descrittore all’interno
della tabella dei processi
– In questo modo, quando tornerà
nuovamente in esecuzione, il processo
potrà ripartire dal punto in cui era stato
interrotto
Scarica

lez7 - Dipartimento di Informatica