Escolar Documentos
Profissional Documentos
Cultura Documentos
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
ELO321 Scheduling 4
Evaluación de un Modelo de
Multiprogramación
1
0.9
0.8
0.7
% Utilización de CPU
0.3
0.2
0.1
0
0 1 2 3 4 5 6 7 8 9 10 11 12
Nivel de Multiprogramación
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
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
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
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
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 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
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
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
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);
}
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
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
tiempo
real
99
100
otras
tareas
ELO321 Scheduling 47
Lista de Tareas Ordenadas por
Prioridad
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