scheduling
TRANSCRIPT
Scheduling (planificación)
ELO321 Scheduling 2
Scheduling� Conceptos Básicos� Criterios � Algoritmos Populares de Scheduling� Scheduling para Multiprocesadores� Scheduling de Tiempo Real� Scheduling de Hebras� Ejemplos Aplicados en SO� Scheduling de Hebras en Java� Evaluación de Algoritmos
ELO321 Scheduling 3
Conceptos Básicos
� Utilización máxima de la CPU se obtiene vía multiprogramación
� Ciclo ráfagas CPU–I/O – la ejecución de un proceso consiste de un ciclo de ejecución de CPU continuado por un ciclo de espera por I/O
� Distribución de ráfagas de CPU
ELO321 Scheduling 4
Alternando Ráfagas de CPU e I/O
ráfaga de CPUload storeadd storeread from file
espera por I/O
load store increment indexread from file
load storeadd storeread from file
espera por I/O
espera por I/O
ráfaga de I/O
ráfaga de I/O
ráfaga de CPU
ráfaga de CPU
ráfaga de I/O
ELO321 Scheduling 5
Evaluación de un Modelo de Multiprogramación
wfg
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1 2 3 4 5 6 7 8 9 10 11 12
Nivel de Multiprogramación
% U
tiliz
ació
n de
CPU
I/O 50%I/O 60%I/O 70%I/O 80%
ELO321 Scheduling 6
Histograma Ráfagas de CPU
0
40
80
120
160
200
0 8 16 24 32 40ráfaga de CPU en [ms]
frec
uenc
ia
ELO321 Scheduling 7
Scheduling de CPU� Escoge un proceso del grupo de procesos que están
listos para ser ejecutados y le asigna la CPU� Decisiones de scheduling ocurren cuando un proceso:
1. cambio del estado de running a waiting2. cambio del estado de running a ready3. cambio del estado waiting a ready4. termina
� Scheduling bajo 1 y 4 es no-apropiativo (non preemptive)
� El resto se de tipo apropiativo (preemptive)
ELO321 Scheduling 8
Despachador� El módulo despachador entrega el control de la CPU
al proceso seleccionado por el – planificador de corto plazo (short-term – scheduler); esto involucra:� cambio de contexto� cambio a modo usuario� salto a la dirección de memoria que corresponda en el
programa de usuario para continuar su ejecución� latencia del despachador – es el tiempo que le lleva
al despachador detener un proceso y comenzar otro
ELO321 Scheduling 9
Criterios para Scheduling� Utilización de CPU – mantener la CPU ocupada la
mayor cantidad del tiempo posible� Productividad (Throughput) – # de procesos por
unidad de tiempo� Tiempo de servicio (Turnaround time) – tiempo
necesario para la ejecución de un proceso particular� Tiempo de espera (Waiting time) – tiempo total que
el proceso se encuentra en la fila ready� Tiempo de respuesta (Response time) – tiempo que
transcurre desde el requerimiento hasta que se produce la primera respuesta (en ambientes de tiempo compartido)
ELO321 Scheduling 10
Criterios de Optimización
� Máxima utilización de CPU� Máxima productividad� Mínimo tiempo de servicio � Mínimo tiempo de espera� Mínimo tiempo de respuesta
ELO321 Scheduling 11
Proceso Ráfaga de CPUP1 24P2 3P3 3
� Suponer que los procesos arriban en el orden: P1 , P2 , P3 La carta gantt para el schedule respectivo es:
� Tiempo de espera para P1 = 0; P2 = 24; P3 = 27� Tiempo promedio de espera: (0 + 24 + 27)/3 = 17
P1 P2 P3
24 27 300
Scheduling First-Come, First-Served (FCFS) (1)
ELO321 Scheduling 12
Scheduling First-Come, First-Served (FCFS) (2)� Suponer que los procesos arriban en el orden: P2 ,
P3 , P1. La carta gantt para el schedule respectivo es:
� Tiempo de espera para P1 = 6; P2 = 0; P3 = 3� Tiempo promedio de espera: (6 + 0 + 3)/3 = 3� Mucho mejor que el caso anterior� Efecto convoy, procesos cortos tras procesos largos
P1P3P2
63 300
ELO321 Scheduling 13
Scheduling Shortest-Job-First(SJF) (1)� Asociar a cada proceso el largo de su próxima ráfaga
de CPU. Asignar la CPU al proceso de la ráfaga más corta.
� Dos esquemas: � no apropiativo – el proceso libera la CPU voluntariamente� apropiativo – si arriba un proceso con un requerimiento de
CPU menor al proceso en ejecución, se desasigna la CPU. Este esquema se conoce como Scheduling de menor tiempo restante (Shortest-Remaining-Time-First (SRTF))
� SJF es óptimo – proporciona el menor promedio de tiempo de espera, dado un set de procesos
ELO321 Scheduling 14
Proceso Arribo Ráfaga de CPUP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4
� SJF (no-apropiativo)
� Tiempo de espera promedio = (0+6+3+7)/4 = 4
Ejemplo de SJF No-Apropiativo
P1 P3 P2
73 160
P4
8 12
ELO321 Scheduling 15
Ejemplo de SJF ApropiativoProceso Arribo Ráfaga de CPU
P1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4
� SJF (apropiativo)
� Tiempo de espera promedio = (9+1+0+2)/4 = 3
P1 P3P2
42 110
P4
5 7
P2 P1
16
ELO321 Scheduling 16
� Sólo puede estimar el largo� Puede estimarse usando el largo de la
ráfaga anterior
( ) nnn
n
avan
t
nt
τααταα
τ
−+=≤≤
==
+
+
1 :Definición 4.10 , 3.
CPU de ráfaga próxima la de largo del predicción 2.CPU de ráfaga la de actual largo 1.
1
1
Determinando el Largo de la Próxima Ráfaga de CPU (1)
ELO321 Scheduling 17
Determinando el Largo de la Próxima Ráfaga de CPU (2)
0
2
4
6
8
10
12
14
0 1 2 3 4 5 6 7Tiempo
Dur
ació
n R
áfag
a
ráfaga actual ráfaga esperada
ELO321 Scheduling 18
Determinando el Largo de la Próxima Ráfaga de CPU (3)� α = 0
� τn+1 = τn� Historia reciente no cuenta
� α = 1� τn+1 = α tn� Sólo la última ráfaga de CPU cuenta
� Al expandir la fórmula se obtiene:τn+1 = α tn+(1 - α)α tn -1 + …
+(1 - α )j α tn -j + …+(1 - α )n +1 τ0
� Dado que α y (1 - α) son ≤ 1, cada elemento de la sucesión tiene menor peso que su predecesor
ELO321 Scheduling 19
Scheduling por Prioridad� Se asocia un número entero (prioridad) a cada proceso� La CPU se asigna al proceso con la mayor prioridad (típicamente
números pequeños ⇒ alta prioridad)� apropiativo� no apropiativo
� SJF es un algoritmo por prioridades, donde la prioridad es la predicción del largo de la próxima ráfaga de CPU
� Problema ≡ Inanición – procesos con baja prioridad pueden no ser ejecutados
� Solución ≡ Envejecimiento (aging) – con el transcurso del tiempo incrementar la prioridad del proceso
ELO321 Scheduling 20
Round Robin (RR)� Cada proceso obtiene una pequeña unidad de tiempo
de CPU (quantum), usualmente entre 10 – 100 [ms]. Al expirar el quantum, se desasigna el proceso y se reingresa al final de la fila ready.
� Si hay n procesos en la fila ready, y el quantum es q, entonces cada proceso obtiene 1/n de la CPU en bloques de a lo más q unidades de tiempo. Ningún proceso espera más que (n – 1)q unidades de tiempo.
� Rendimiento� q grande ⇒ FIFO� q pequeño ⇒ q debe ser grande respecto al cambio de
contexto de lo contrario el overhead es demasiado elevado
ELO321 Scheduling 21
Ejemplo RR (Quantum = 20)Proceso Ráfaga de CPU
P1 53P2 17P3 68P4 24
� La carta gantt para el schedule respectivo es:
� Típicamente, mayor tiempo de servicio que SJF, pero mejor tiempo de respuesta
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154 162
ELO321 Scheduling 22
Quantum y Cambio de Contexto
1 9
6 1
Quantum Cambio de Contextotiempo de CPU 10
12 0
ELO321 Scheduling 23
El Tiempo de Servicio Varía con el Quantum: Ejemplo
9
9,5
10
10,5
11
11,5
12
12,5
13
1 2 3 4 5 6 7 8Quantum
Tiem
po d
e S
ervi
cio
Pro
med
io
P1
P2
P3
P4
Proceso
6
3
1
7
CPU
ELO321 Scheduling 24
Ejemplos de Algoritmos de Scheduling (1)
FCFS
tiempo
SJF
PS
RRQ=1
RRQ=3
0 6 12 18
ELO321 Scheduling 25
Ejemplos de Algoritmos de Scheduling (2)
FCFS
tiempo
SJF
PS
RRQ=1
RRQ=3
0 6 12 18
5, 8, 15, 19 (11.75)
3, 7, 12, 19 (10.25)
7, 10, 14, 19 (11.75)
10, 15, 16, 19 (15)
6, 14, 18, 19 (14.25)
Tiempo de Servicio
ELO321 Scheduling 26
Ejemplos de Algoritmos de Scheduling (3)
Tiempo de Espera
FCFS
tiempo
SJF
PS
RRQ=1
RRQ=3
0 6 12 18
0, 5, 8, 15 (7)
0, 3, 7, 12 (5.5)
0, 7, 10, 14 (7.75)
11, 7, 12, 11 (10.25)
9, 3, 12, 14 (9.5)
ELO321 Scheduling 27
Fila Multinivel� La fila ready es particionada en varias filas:
� foreground (interactivas)� background (batch)
� Cada fila tiene su propio algoritmo de scheduling� foreground – RR� background – FCFS
� Debe haber un scheduling entre filas� scheduling de prioridad fija: (ej. atender la fila foreground
luego la fila background), posibilidad de inanición� ranuras de tiempo – cada fila obtiene una cierta cantidad de
CPU para repartir entre los procesos de la fila� ej. 80% para procesos en foreground bajo RR y 20% para
procesos background bajo FCFS
ELO321 Scheduling 28
Scheduling con Fila Multinivel
Procesos de Sistema
Mayor Prioridad
Procesos Interactivos
Editores Interactivos
Procesos por Lotes
Procesos de Estudiantes
Menor Prioridad
ELO321 Scheduling 29
Fila Multinivel Realimentada� Un proceso puede moverse entre varias filas; de esta
forma se puede implementar la técnica del envejecimiento
� Un scheduler de fila multinivel con realimentación se define por los siguientes parámetros:� número de filas� algoritmos de scheduling de cada fila� método usado para determinar cuando subir un proceso� método usado para determinar cuando bajar un proceso� método usado para determinar a qué fila será ingresada un
proceso al requerir servicio
ELO321 Scheduling 30
� Tres filas: � Q0 – RR con quantum de 8 [ms]� Q1 – RR con quantum de 16 [ms]� Q2 – FCFS
� Scheduling� Una tarea nueva ingresa en Q0 y es atendida según FCFS.
Cuando obtiene la CPU se le asigna una ranura de tiempo de 8 [ms]. Si requiere más tiempo la tarea es movida a Q1.
� En Q1 la tarea se atiene según FCFS, pero con una ranura de tiempo de CPU de 16 [ms]. Si aún requiere más tiempo de CPU, la tarea se mueve a la cola Q2.
Ejemplo de una Fila Multinivelcon Realimentación (1)
ELO321 Scheduling 31
Ejemplo de una Fila Multinivelcon Realimentación (2)
Quantum = 8
Quantum = 16
FCFS
ELO321 Scheduling 32
Scheduling en Muliprocesadores
� El scheduling de CPU es más complejo con varias CPU’s
� Multiprocesamiento simétrico (homogéneo)� Balance de carga
� Multiprocesamiento asimétrico – sólo un procesador accesa las estructuras de datos del sistema – no requiere soporte para memoria compartida
ELO321 Scheduling 33
Scheduling de Tiempo Real (1)
� Existen básicamente 2 tipos:� Hard Real-Time Systems
� Debe garantizar el éxito de tareas críticas
� Soft Real-Time Systems� Tareas críticas deben tener prioridad sobre
otras tareas
ELO321 Scheduling 34
� schedulability� Dado
� m eventos periódicos� evento i ocurre con periodo pi y requiere ci procesamiento
� La factibilidad depende de:
� Ejemplos:� Rate Monotonic Scheduling� Earliest Deadline First
Scheduling de Tiempo Real (2)
11
≤∑=
m
ii
i
pc
ELO321 Scheduling 35
Scheduling Rate Monotonic(RM)� RM scheduling asigna la prioridad de acuerdo
a la inversa del periodo; sólo se aplica a tareas que cumplen con las siguientes condiciones:1. Una tarea debe completar su trabajo dentro del
periodo2. No hay dependencias entre tareas3. Cada ráfaga de CPU es del mismo largo4. Toda tarea no-periódica no tiene deadline5. No hay overhead por el cambio de contexto
wfg
ELO321 Scheduling 36
Scheduling Earliest Deadline First (EDF)
� EDF scheduling asigna prioridades dinámicas de acuerdo a la deadline:� Cuanto más pronto la deadline, mayor
prioridad; cuanto más tarde la deadline, menor prioridad
� Se aplica también a tareas no-periódicas� No se requiere una ráfaga de CPU
constante� Debe anunciar su deadline
wfg
ELO321 Scheduling 37
Ejemplo Scheduling de Tiempo Real (1)
A1
B1
C1
A2
B2
C2
A3
B3
A4
C3
A5
B4
C4
A6
B5
A
B
C
RMS
EDF
A1 A2 A3 A4 A5 A6B1 C1 B2 C2 B3 B3C3 B4 B5
A1 B1 C1 A2 B2 C2 A3 B3 A4 C3 A5 B4 A6 C4
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170
ELO321 Scheduling 38
Ejemplo Scheduling de Tiempo Real (2)
B1
C1
B2
C2
B3
C3
B4
C4
B5
A
B
C
RMS
EDF
A1
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170
A1 A2 A3 A4 A5 A6
A2B1 B2 C1 Falló!
A1 B1 C1 A2 B2 A3 C2 B3 A4 C3 A5 B4 A6
ELO321 Scheduling 39
Scheduling de Hebras
� Scheduling Local – la API de hebras decide cuál hebra se asignará a un LWP disponible
� Scheduling Global – el núcleo decide cuál será la próxima hebra a ejecutar
ELO321 Scheduling 40
Pthread Scheduling API (1)#include <pthread.h>#include <stdio.h>#define NUM THREADS 5int main(int argc, char *argv[]){
int i;pthread t tid[NUM THREADS];pthread attr t attr;/* get the default attributes */pthread attr init(&attr);/* set the scheduling algorithm to PROCESS or SYSTEM */pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM);/* set the scheduling policy - FIFO, RT, or OTHER */pthread attr setschedpolicy(&attr, SCHED OTHER);/* create the threads */for (i = 0; i < NUM THREADS; i++)
pthread create(&tid[i],&attr,runner,NULL);
ELO321 Scheduling 41
Pthread Scheduling API (2)/* now join on each thread */for (i = 0; i < NUM THREADS; i++)
pthread join(tid[i], NULL);}
/* Each thread will begin control in this function */void *runner(void *param){
printf("I am a thread\n");pthread exit(0);
}
ELO321 Scheduling 42
Ejemplos
� Scheduling bajo Solaris� Scheduling en Windows XP� Scheduling bajo Linux
ELO321 Scheduling 43
Scheduling en Solaris 2prioridad
global
mayor
menor
tiemporeal
primero
último
sistema
interactivosy
de tiempo compartido
hebras denúcleo deLWP’s de
tiemporeal
hebras denúcleo de
servicio
hebras denúcleo de
LWP’sinteractivos
y tiempocompartido
orden delscheduler
prioridadsegún clase
clases de scheduler fila
ELO321 Scheduling 44
Tabla de Despacho en Solaris
521012020
51516015
51016010
5002005
5002000
53208030
59492059
58454055
58404050
56354045
55304040
54258035
521512025
retornando de waiting
término del quantumquantumprioridad
ELO321 Scheduling 45
Prioridades en Windows XP
1111116ocioso
24681122bajo
35791223Menos que normal
468101324normal
579111425Más que normal
6810121526alto
151515151531crítico
prioridadocioso
menor que normalnormalmayor que
normalaltotiempo real
ELO321 Scheduling 46
Scheduling bajo Linux� 2 algoritmos: de tiempo compartido y tiempo real� Tiempo compartido
� priorizado por créditos – proceso con más créditos es el próximo en ser ejecutado
� se le restan créditos con la interrupción del timer� si créditos = 0, se selecciona otro proceso� cuando todos los procesos tienen créditos = 0, se reasignan
� basado entre otros factores en la prioridad e historia� Tiempo real
� de tipo blando (soft)� Posix.1b compliant – dos clases
� FCFS y RR� proceso con la prioridad más alta se ejecuta primero
ELO321 Scheduling 47
La Relación entre Prioridades y Quantum
prioridadnumérica
otrastareas
200 [ms]
prioridadrelativa
mayor
menor
0
99
100
144
tiemporeal
10 [ms]
Quantumclase
ELO321 Scheduling 48
Lista de Tareas Ordenadas por Prioridad
prioridad
0
144
1
2
lista de tareas
Arreglo Activo
prioridad
0
144
1
2
lista de tareas
Arreglo Caduco
ELO321 Scheduling 49
Evaluación de Algoritmos (1)
� Especificar una carga de trabajo característica y evaluar cada algoritmo bajo esa carga
� Teoría de Filas� Implementación
ELO321 Scheduling 50
Evaluación de Algoritmos (2)
Ejecución actualdel proceso
Simulación FCFS
…..CPU 20I/O 233CPU 32I/O 12
CPU 276I/O 147CPU 173
…..
Simulación SJF
SimulaciónRR (q=14)
grabar ejecución
obtenerestadísticaspara FCFS
obtenerestadísticas
para SJF
obtenerestadísticas
para RR