scheduling

50
Scheduling (planificación)

Upload: pablo-giovanni-jacobi-sierra

Post on 22-Nov-2014

297 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Scheduling

Scheduling (planificación)

Page 2: Scheduling

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

Page 3: Scheduling

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

Page 4: Scheduling

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

Page 5: Scheduling

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%

Page 6: Scheduling

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

Page 7: Scheduling

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)

Page 8: Scheduling

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

Page 9: Scheduling

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)

Page 10: Scheduling

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

Page 11: Scheduling

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)

Page 12: Scheduling

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

Page 13: Scheduling

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

Page 14: Scheduling

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

Page 15: Scheduling

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

Page 16: Scheduling

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)

Page 17: Scheduling

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

Page 18: Scheduling

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

Page 19: Scheduling

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

Page 20: Scheduling

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

Page 21: Scheduling

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

Page 22: Scheduling

ELO321 Scheduling 22

Quantum y Cambio de Contexto

1 9

6 1

Quantum Cambio de Contextotiempo de CPU 10

12 0

Page 23: Scheduling

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

Page 24: Scheduling

ELO321 Scheduling 24

Ejemplos de Algoritmos de Scheduling (1)

FCFS

tiempo

SJF

PS

RRQ=1

RRQ=3

0 6 12 18

Page 25: Scheduling

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

Page 26: Scheduling

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)

Page 27: Scheduling

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

Page 28: Scheduling

ELO321 Scheduling 28

Scheduling con Fila Multinivel

Procesos de Sistema

Mayor Prioridad

Procesos Interactivos

Editores Interactivos

Procesos por Lotes

Procesos de Estudiantes

Menor Prioridad

Page 29: Scheduling

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

Page 30: Scheduling

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)

Page 31: Scheduling

ELO321 Scheduling 31

Ejemplo de una Fila Multinivelcon Realimentación (2)

Quantum = 8

Quantum = 16

FCFS

Page 32: Scheduling

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

Page 33: Scheduling

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

Page 34: Scheduling

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

Page 35: Scheduling

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

Page 36: Scheduling

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

Page 37: Scheduling

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

Page 38: Scheduling

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

Page 39: Scheduling

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

Page 40: Scheduling

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);

Page 41: Scheduling

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);

}

Page 42: Scheduling

ELO321 Scheduling 42

Ejemplos

� Scheduling bajo Solaris� Scheduling en Windows XP� Scheduling bajo Linux

Page 43: Scheduling

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

Page 44: Scheduling

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

Page 45: Scheduling

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

Page 46: Scheduling

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

Page 47: Scheduling

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

Page 48: Scheduling

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

Page 49: Scheduling

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

Page 50: Scheduling

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