Schedulazione della CPU
Schedulazione della CPU
Alternare la CPU tra processi per rendere
il computer più produttivo
NEW
END
READY
RUN
WAIT
Schedulazione
Processi e Thread
Schedulazione della CPU
1 Processore
1 Processo
Più processi in memoria
Un processo è eseguito fino a quando non deve attendere
Durante tale tempo la CPU è assegnata ad un altro processo
Schedulazione
La schedulazione è un’attività fondamentale del S.O.
Tutte le risorse sono schedulate
CPU è una risorsa fondamentale
Ciclo picco ed I/O
CPU
Esecuzione di un processo:
I/O
La durata dei picchi di CPU hanno un andamento
Esponenziale o IperEsponenziale
Ciclo picco ed I/O
I/O Bound
CPU Bound
Molti picchi di CPU brevi
Pochi picchi di CPU lunghi
Scelta degli algoritmi di Schedulazione
Schedulazione della CPU
Short Term Scheduler gestisce una coda di PCB
• FIFO
• A Priorità
• Ad Albero
• Lista Linkata
Schedulazione della CPU
1. Processo passa da esecuzione in attesa
2. Processo passa da esecuzione in ready
3. Processo passa da attesa in ready
4. Processo termina
1 e 4 ----------
2 e 3 ----------
Esecuzione nuovo processo
possibilità di scelta
Nonpreempitive
e
Preempitive
Preempitive
•
Dati condivisi
•
Progettazione del Kernel
• Interrupt
Schedulazione della CPU
Dispatcher: carica il processo in CPU
• Cambio di contesto
• passaggio alla modalità utente
• scelta dell’indirizzo corrente del programma
Latenza del Dispatcher
Criteri di Valutazione
• Utilizzo della CPU
• Throughput (freq. di completamento)
• Turnaround time (tempo di completamento)
• Tempo di attesa (tempo nella coda di ready)
• Tempo di risposta (tempo tra richiesta e risposta)
Obiettivo
Massimizzare CPU ed il Throughput
Minimizzare turnaround time, tempo di attesa e di risposta
Ottimizzare il valor medio, minimo o massimo
Es: buon servizio agli utenti  minimizzare il tempo
max di risposta
Minimizzare la varianza del tempo di risposta
FIRST-COME, FIRST-SERVED (FCFS)
Tempo di attesa medio lungo (nonpreemptive)
P1
P2
0
24
P3
27
30
(0 + 24 + 27)/3 = 17 ms
P2
0
P3
3
P1
6
30
(0 + 3 + 6)/3 = 3 ms
1 processo CPU-bound e 3 processi I/O-bound (convoy effect)
SHORT-JOB-FIRST (SJF)
Processi con picco di CPU successivo più breve
P1 
P2 
P3 
P4 
P4
0
6
8
7
3
P1
3
P3
9
P2
16
24
(0 + 3+9+16)/4 = 7 ms
FCFS
P1
0
P2
6
P3
14
P4
21
(0 + 6+14+21)/4 = 10.25 ms
24
SHORT-JOB-FIRST (SJF)
Come si conosce la durata del picco successivo?
n+1 = tn + (1- ) n
0≤≤1
Media esponenziale ( = ½)
SHORT-JOB-FIRST (SJF)
Preemptive e nonpreemptive
P1
P2
0
1
P1  8
P2  4
P3  9
(arrivo a t=0)
( “” “ t=1)
( “” “ t=2)
P4  5
(
P4
5
“”
“ t=3)
P1
10
P3
17
26
(9 + 0+15+2)/4 = 6.5 ms
Nonpreemptive
P1
0
P2
8
P4
12
P3
17
(0 + 7+15+9)/4 = 7.75 ms
26
Schedulazione a priorità
CPU allocata al processo con priorità più alta
SJF caso particolare con priorità = (tempo picco CPU)
Schedulazione a Priorità
P1  10 (pri=3)
P2  1 (pri=1)
P3  2 (pri=4)
P4  1
P5  5
P2
0
P5
1
(pri=5)
(pri=2)
P1
6
P3
16
P4
18
(6 + 0+16+18+1)/5 = 8.2 ms
19
Schedulazione a Priorità
Interne ed Esterne
Memoria
Files
Fattori Esterni
Preemptive e nonpreempitive
Starvation (aging)
Round Robin
FCFS Circolare
Preemptive
Time Slice [10,100] ms
P1  24
P2  3
P3  3
P1
0
P2
4
Time Slice = 4 ms
P3
7
P1
10
(0 + 4+7+6)/3 = 5.66 ms
30
Round Robin
Dimensione del Time Slice
Time Slice grande
RR  FCFS
Time Slice piccolo
Condivisione Processore
Time Slice + Cambio di contesto
Code a più livelli
Foreground e
Background
(con priorità)
In generale si possono avere più code
Con algoritmi differenti
Schedulazione tra code
(Preemptive a priorità fissa)
(A divisione di tempo)
Code a più livelli
Variante con Retroazione
Processi si muovono tra code
(es: se usa troppa CPU mosso in coda a priorità
più bassa)
Schedulazione su Multiprocessore
Processori omogenei
Suddivisione del carico
Una coda per
Ogni processore
Una coda per tutti
I processori
AMP
SMP
Scarica

Lezione s.o 4