Você está na página 1de 50

Scheduling (planificación)

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 2
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 3
Alternando
Ráfagas de CPU e I/O

load store
add store ráfaga de CPU
read from file

espera por I/O ráfaga de I/O


load store
increment index ráfaga de CPU
read from file

espera por I/O ráfaga de I/O


load store
add store ráfaga de CPU
read from file

espera por I/O ráfaga de I/O

ELO321 Scheduling 4
Evaluación de un Modelo de
Multiprogramación
1

0.9

0.8

0.7
% Utilización de CPU

0.6 I/O 50%


I/O 60%
0.5
I/O 70%
0.4 I/O 80%

0.3

0.2

0.1

0
0 1 2 3 4 5 6 7 8 9 10 11 12
Nivel de Multiprogramación

ELO321 Scheduling wfg 5


Histograma Ráfagas de CPU
200

160
frecuencia

120

80

40

0
0 8 16 24 32 40
ráfaga de CPU en [ms]

ELO321 Scheduling 6
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 waiting
2. cambio del estado de running a ready
3. cambio del estado waiting a ready
4. termina
 Scheduling bajo 1 y 4 es no-apropiativo (non
preemptive)
 El resto se de tipo apropiativo (preemptive)

ELO321 Scheduling 7
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 8
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 9
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 10
Scheduling First-Come, First-
Served (FCFS) (1)
Proceso Ráfaga de CPU
P1 24
P2 3
P3 3
 Suponer que los procesos arriban en el orden: P1 , P2 , P3
La carta gantt para el schedule respectivo es:

P1 P2 P3

0 24 27 30
 Tiempo de espera para P1 = 0; P2 = 24; P3 = 27
 Tiempo promedio de espera: (0 + 24 + 27)/3 = 17

ELO321 Scheduling 11
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:
P2 P3 P1

0 3 6 30
 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

ELO321 Scheduling 12
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 13
Ejemplo de SJF
No-Apropiativo
Proceso Arribo Ráfaga de CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (no-apropiativo)
P1 P3 P2 P4

0 3 7 8 12 16

 Tiempo de espera promedio = (0+6+3+7)/4 = 4

ELO321 Scheduling 14
Ejemplo de SJF Apropiativo
Proceso Arribo Ráfaga de CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (apropiativo)
P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

 Tiempo de espera promedio = (9+1+0+2)/4 = 3

ELO321 Scheduling 15
Determinando el Largo de la
Próxima Ráfaga de CPU (1)
 Sólo puede estimar el largo
 Puede estimarse usando el largo de la
ráfaga anterior
1. t n = largo actual de la nava ráfaga de CPU
2. τ n +1 = predicción del largo de la próxima ráfaga de CPU
3. α , 0 ≤ α ≤ 1
4. Definición : τ n +1 = α t n + (1 − α )τ n

ELO321 Scheduling 16
Determinando el Largo de la
Próxima Ráfaga de CPU (2)
14
ráfaga actual ráfaga esperada

12

10
Duración Ráfaga

0
0 1 2 3 4 5 6 7
Tiempo

ELO321 Scheduling 17
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 18
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 19
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 20
Ejemplo RR (Quantum = 20)
Proceso Ráfaga de CPU
P1 53
P2 17
P3 68
P4 24
 La carta gantt para el schedule respectivo es:

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154 162

 Típicamente, mayor tiempo de servicio que SJF, pero mejor


tiempo de respuesta

ELO321 Scheduling 21
Quantum y Cambio de
Contexto

Cambio de
tiempo de CPU 10 Quantum
Contexto

12 0

6 1

1 9

ELO321 Scheduling 22
El Tiempo de Servicio Varía con
el Quantum: Ejemplo
13

12,5

12 Proceso CPU
Tiempo de Servicio Promedio

11,5 P1 6
11 P2 3
10,5 P3 1

10 P4 7

9,5

9
1 2 3 4 5 6 7 8
Quantum

ELO321 Scheduling 23
Ejemplos de Algoritmos de
Scheduling (1)
FCFS
SJF
PS
RRQ=1
RRQ=3
tiempo
0 6 12 18

ELO321 Scheduling 24
Ejemplos de Algoritmos de
Scheduling (2)
FCFS 5, 8, 15, 19 (11.75)
SJF 3, 7, 12, 19 (10.25)
PS 7, 10, 14, 19 (11.75)
RRQ=1 10, 15, 16, 19 (15)
RRQ=3 6, 14, 18, 19 (14.25)
tiempo
0 6 12 18

Tiempo de Servicio
ELO321 Scheduling 25
Ejemplos de Algoritmos de
Scheduling (3)
FCFS 0, 5, 8, 15 (7)
SJF 0, 3, 7, 12 (5.5)
PS 0, 7, 10, 14 (7.75)
RRQ=1 11, 7, 12, 11 (10.25)
RRQ=3 9, 3, 12, 14 (9.5)
tiempo
0 6 12 18

Tiempo de Espera
ELO321 Scheduling 26
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 27
Scheduling con Fila Multinivel
Mayor Prioridad
Procesos de Sistema

Procesos Interactivos

Editores Interactivos

Procesos por Lotes

Procesos de Estudiantes

Menor Prioridad

ELO321 Scheduling 28
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 29
Ejemplo de una Fila Multinivel
con Realimentación (1)
 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.

ELO321 Scheduling 30
Ejemplo de una Fila Multinivel
con Realimentación (2)

Quantum = 8

Quantum = 16

FCFS

ELO321 Scheduling 31
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 32
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 33
Scheduling de Tiempo Real (2)
 schedulability
 Dado
 m eventos periódicos
 evento i ocurre con periodo pi y requiere ci procesamiento
 La factibilidad depende de:

∑c
m
i
≤1
p
i =1
i

 Ejemplos:
 Rate Monotonic Scheduling
 Earliest Deadline First

ELO321 Scheduling 34
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
periodo
2. No hay dependencias entre tareas
3. Cada ráfaga de CPU es del mismo largo
4. Toda tarea no-periódica no tiene deadline
5. No hay overhead por el cambio de contexto

ELO321 Scheduling wfg 35


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

ELO321 Scheduling wfg 36


Ejemplo Scheduling de Tiempo
Real (1)
A A1 A2 A3 A4 A5 A6

B B1 B2 B3 B4 B5

C C1 C2 C3 C4

RMS A1 B1 C1 A2 B2 C2 A3 B3 A4 B3C3 A5 B4 A6 B5

EDF 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 37
Ejemplo Scheduling de Tiempo
Real (2)
A A1 A2 A3 A4 A5 A6

B B1 B2 B3 B4 B5

C C1 C2 C3 C4

RMS A1 B1 A2 B2 C1 Falló!

EDF A1 B1 C1 A2 B2 A3 C2 B3 A4 C3 A5 B4 A6

0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170

ELO321 Scheduling 38
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 39
Pthread Scheduling API (1)
#include <pthread.h>
#include <stdio.h>
#define NUM THREADS 5
int 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 40
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 41
Ejemplos
 Scheduling bajo Solaris
 Scheduling en Windows XP
 Scheduling bajo Linux

ELO321 Scheduling 42
Scheduling en Solaris 2
prioridad orden del prioridad clases de
fila
global scheduler según clase scheduler

mayor primero hebras de


núcleo de
tiempo
LWP’s de
real
tiempo
real

hebras de
sistema núcleo de
servicio

hebras de
interactivos núcleo de
y LWP’s
de tiempo interactivos
compartido y tiempo
menor último compartido

ELO321 Scheduling 43
Tabla de Despacho en Solaris
término del retornando
prioridad quantum
quantum de waiting
0 200 0 50
5 200 0 50
10 160 0 51
15 160 5 51
20 120 10 52
25 120 15 52
30 80 20 53
35 80 25 54
40 40 30 55
45 40 35 56
50 40 40 58
55 40 45 58
59 20 49 59

ELO321 Scheduling 44
Prioridades en Windows XP
mayor que menor que prioridad
tiempo real alto normal
normal normal ocioso

crítico 31 15 15 15 15 15

alto 26 15 12 10 8 6

Más que
25 14 11 9 7 5
normal

normal 24 13 10 8 6 4

Menos que
23 12 9 7 5 3
normal

bajo 22 11 8 6 4 2

ocioso 16 1 1 1 1 1

ELO321 Scheduling 45
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 46
La Relación entre Prioridades y
Quantum
prioridad prioridad
clase Quantum
numérica relativa

0 mayor 200 [ms]

tiempo
real

99

100

otras
tareas

144 menor 10 [ms]

ELO321 Scheduling 47
Lista de Tareas Ordenadas por
Prioridad

Arreglo Activo Arreglo Caduco


prioridad lista de tareas prioridad lista de tareas
0 0

1 1

2 2

144 144

ELO321 Scheduling 48
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 49
Evaluación de Algoritmos (2)
obtener
Simulación FCFS estadísticas
para FCFS

…..
CPU 20
I/O 233
CPU 32 obtener
Ejecución actual
I/O 12 Simulación SJF estadísticas
del proceso
CPU 276 para SJF
I/O 147
CPU 173
…..

grabar ejecución
obtener
Simulación
estadísticas
RR (q=14)
para RR

ELO321 Scheduling 50

Você também pode gostar