Planificación de uso del procesador Sebastián Sánchez Prieto.

38
Planificación de uso del procesador Sebastián Sánchez Prieto

Transcript of Planificación de uso del procesador Sebastián Sánchez Prieto.

Page 1: Planificación de uso del procesador Sebastián Sánchez Prieto.

Planificación de uso del procesador

Sebastián Sánchez Prieto

Page 2: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 2

Concepto de planificación

Programa 1 Programa 2Sistema Operativo

Salvar registros

Restaurar registros

Salvar registros

Restaurar registros

En ejecución

En ejecución

En ejecuciónInactivo

Inactivo

Inactivo

Interrupción o

llamada al sistema

Interrupción o

llamada al sistema

Page 3: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 3

Planificación

La ejecución de un trabajo se compone de secuencias de procesador y de espera

Objetivos: Equidad Eficiencia Bajo tiempo de respuesta Rendimiento alto Minimizar el tiempo de espera

Todos estos objetivos no se pueden conseguir simultáneamente

Page 4: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 4

Colas de procesos

Cola depreparados

PCB 12

Misc.

CabezaPCB 30

Misc.

Disco CabezaPCB 24

Misc.

Impresora Cabeza

CD-ROM Cabeza

Page 5: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 5

Planificadores (schedulers)

Existen dos planificadores de procesador Planificador a largo plazo

Controla el grado de multiprogramación Planificador a corto plazo

Selecciona entre los trabajos cargados en memoria y que están preparados para ejecutarse cual hará uso del procesador

El planificador a corto plazo debe ser muy rápido ya que entra en juego con una frecuencia muy alta

Planificador a medio plazo Carga y descarga trabajos desde el disco a la memoria y de la

memoria al disco en función del grado de sobrecarga del sistema.

Page 6: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 6

Relación entre los planificadores

Cola de preparados CPU

Cola de E/SE/S

Cola de E/SE/S

Cola de E/SE/S

Page 7: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 7

Criterios de planificación

Utilización del procesador Maximizar el rendimiento del procesador

Rendimiento (“Throughput”) Trabajos completados por unidad de tiempo

Tiempo de estancia (“Turnaround time”) Tiempo transcurrido desde que se lanza hasta que finaliza

Tiempo de espera Por operaciones de E/S o por otros aspectos

Tiempo de respuesta Importante en aplicaciones interactivas o de tiempo real

Page 8: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 8

Planificación FCFS

Primero en entrar, primero en salir Se lleva a cabo manejando la cola de procesos

preparados como una cola FIFO Es el algoritmo más sencillo de codificar Características y prestaciones:

Depende fuertemente de los tipos de trabajo y del instante en que llegan

Limitados por CPU: Mucha CPU y poca E/S

Limitados por E/S: Mucha E/S y poca CPU

Page 9: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 9

Eficiencia FIFO

Los tiempos de estancia y respuesta varían fuertemente de un momento a otro

Los tiempos medios de retorno son menores en el segundo caso que en el primero

tra=16 trb=11

Trabajo 1 Trabajo 2 Trabajo 3

0 12 15 21

Trabajo 1Trabajo 2 Trabajo 3

0 93 21

Page 10: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 10

Shortest Job First (SJF)

Asocia de forma dinámica a cada proceso la longitud de su siguiente ráfaga de CPU

Asigna la CPU al trabajo con la ráfaga siguiente más pequeña

Este algoritmo es óptimo para reducir los tiempos medios de retorno

Su dificultad es conocer cuáles van a ser las duraciones de las próximas ráfagas de CPU de cada proceso

¿Cómo se estima la duración de la siguiente ráfaga de CPU?

Page 11: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 11

Método de predicción

La siguiente ráfaga de CPU se predice como una media exponencial de las longitudes medias en anteriores ráfagas

Sea: tn: longitud de la n-ésima ráfaga de CPU

n: valor predicho para la n-ésima ráfaga de CPU : parámetro de ajuste

n+1 = tn + (1-) n

tn: contiene la información más reciente

n: contiene la historia pasada

Page 12: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 12

Algoritmos de prioridad

Se asocia una prioridad a cada proceso y la CPU se asigna al trabajo con la prioridad más alta

Las prioridades pueden definirse de dos formas: Internamente:

Consumo de tiempo de CPU Cantidad de memoria usada Recursos empleados

Externamente Tipo de usuario Tipo de aplicación Etcétera

Problema: posible inanición (“starvation”) de determinadas solicitudes

Page 13: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 13

Algoritmos con requisa

En los algoritmos anteriores, una vez que la CPU ha sido asignada a un proceso, éste la mantiene hasta que pide una E/S o termina

¿Cómo hacer que la CPU sea retirada a un proceso una vez asignada?

Prioridad con requisa (“preemption”): i.e. SJF

Trabajo 3Trabajo 2Trabajo 1

0 73 23

Trabajo 1

Llega el Trabajo 2 con ráfaga más corta

12

Page 14: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 14

Algoritmos “round robin” Usados en sistemas de tiempo compartido La CPU se asigna a cada proceso preparado durante un cuanto de

tiempo “q” La cola de procesos preparados es FIFO

Si la ráfaga de CPU > q Interrupción TIME-OUT Si la ráfaga de CPU < q Liberación de CPU

Prestaciones: dependen fuertemente de q q round-robin degenera en FCFS q 0 CPU/n

Si “q” es muy pequeño se pierde mucho tiempo en el cambio de contexto. Disminuye la eficacia del procesador

Si “q” es grande, los tiempos de respuesta aumentan Regla empírica: el 80% de las ráfagas de CPU deben ser menores

que el cuanto Problema: sólo existe una cola de trabajos preparados, no distingo

entre tipos de trabajos

Page 15: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 15

Colas multinivel

Dividen la cola de preparados en colas separadas en función del tipo de trabajo

Cada cola tiene su propio algoritmo de planificación

Debe existir otro algoritmo para elegir la cola en cada momento

Tareas del sistema

Prioridad baja

Prioridad alta

Tareas interactivas

Tareas de edición

Tareas batch

Page 16: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 16

Colas multinivel realimentadas

Los trabajos se mueven. Consideraciones: El algoritmo de planificación de cada cola Métodos para “ascender” y “descender” Dónde poner inicialmente a los trabajos

Quantum = 10

Quantum = 20

FCFS

Page 17: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 17

Algoritmo UNIX SVR3 y 4.3 BSD Un reloj HW interrumpe cada 10 ms La rutina de tratamiento del reloj tick(), tiene una de las

prioridades más altas Recarga el reloj HW si es necesario Actualiza el uso de CPU del proceso activo Cálculo de prioridades y manejo de finalización del quantum Actualiza la fecha Se manejan los callouts Se despierta al swapper y pagedaemon cuando es necesario Se manejan las alarmas

Sólo la supera la interrupción de fallo de alimentación Prioridades comprendidas entre 0 y 127

Núcleo: entre 0 y 49 Procesos de usuario: entre 50 y 127

El núcleo es ininterrumpible

Page 18: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 18

Estructura proc

Campos relacionados con la planificación:— p_pri Prioridad real— p_usrpri Prioridad en modo usuario— p_cpu Uso reciente de CPU— p_nice Definido por el usuario (oscila entre 0

y 39, valor por defecto 20) Cada tick se incrementa el valor de p_cpu para el

proceso activo hasta un máximo de 127 Inicialmente vale 0 Cada segundo se recalculan las prioridades

(schedcpu() vía callout)

Page 19: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 19

Recálculo de prioridades

El campo p_cpu se reduce por un factor denominado de decadencia (decay)

En SVR3 decay=1/2 En 4.3 BSD

decay=(2*car_media)/(2*car_media+1) car_media es el número medio de procesos activos en

el último segundo Fórmula:

p_usrpri=PUSER+(p_cpu/4)+(2*p_nice) PUSER=50

Page 20: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 20

Estructuras de datos

En la misma cola se emplea RR Cada 100 ms se invoca roundrobin()

whichqs

Cola 0 Prio. 0-3

Proc Proc

0 0 1 0 1 ...

qs

Cola 1 Prio. 4-7

Cola 2 Prio. 8-11

Cola 3 Prio. 12-15

Cola 4 Prio. 16-19

...

Cola 31 Prio. 124-127

Proc

Proc Proc

Page 21: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 21

Consecuencias del algoritmo

Si la carga es alta es ineficiente recalcular todas las prioridades cada segundo

No existe la posibilidad de asignar CPU a grupos de procesos

No existen plazos de respuesta acotados Las aplicaciones no tienen control sobre su prioridad El mecanismo nice es simple e inadecuado Se puede producir inversión de prioridades, el núcleo es

ininterrumpible Cuando un proceso de baja prioridad hace una llamada al

sistema puede retardar a uno de alta prioridad

Page 22: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 22

Algoritmo de VAX/VMS

Es un algoritmo con prioridades (32 niveles) Las prioridades bajas (0-15) corresponden a procesos de

usuario Tienen una prioridad base que es fija Offset: hasta 6 niveles sobre la base A igualdad de prioridad: RR Se beneficia a las tareas limitadas por E/S

Las prioridades altas altas (16-31) corresponden a procesos de tiempo real

Su prioridad no suele cambiar Planificación con prioridades y desalojo

Page 23: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 23

Algoritmo utilizado en W2K

Pensado para ser muy sensible a las necesidades de un único usuario en un entorno interactivo o en el papel de servidor

Algoritmo apropiativo con prioridades (base + offset) WNT soporta 32 niveles de prioridad

Prioridades 16-31 -> tareas de tiempo real Prioridades 1-15 -> tareas ordinarias La prioridad 0 es para “Zero page thread” Idle aparece con prioridad 0, pero se ejecuta con una

prioridad menor La prio. de un hilo ordinario no puede ser > 15

Page 24: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 24

Algoritmo utilizado en W2K

Las colas son colas doblemente enlazadas de tareas Ready

Las colas son comunes a todos los procesadores Se planifican hilos no procesos Los hilos del mismo nivel se ejecutan en RR En sistemas MP se ejecutan hilos simultáneamente

No se garantiza la ejecución de los n hilos más prioritarios si hay n procesadores

Se intenta mantener cada hilo en su procesador Un procesador puede interrumpir a otro para que planifique

una tarea

Page 25: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 25

Planificación de hilos en W2K

No existe un planificador central!!! Las rutinas de planificación se invocan cuando se

produce un evento que cambia el estado Ready de un hilo

Evento que provocan la activación del “scheduler” Interrupción del temporizador (fin del quantum) Interrupción del temporizador (“timed wait”) Interrupción HW (finalización de E/S) Operación V en un “Waitable object” Operación P en uno o varios “Dispatch objects”

Page 26: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 26

Escenarios de planificación

Apropiación Un hilo con mayor prioridad que el activo pasa al estado Ready El hilo de menor prioridad es expulsado El hilo requisado pasa a la cabeza de la cola Ready

Conmutación voluntaria Bloqueo en un “dispatch object” Finalización Disminución de la prioridad de modo explícito

Finalización de quantum Se decrementa la prioridad del hilo a no ser que ya se encuentre

en la prioridad base El hilo se introduce al final de la cola correspondiente a su

prioridad El hilo puede seguir ejecutándose si no hay tareas de igual o

mayor prioridad listas para ejecutarse

Page 27: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 27

Apropiación

La apropiación es estrictamente dirigida por eventos No se espera por el siguiente pulso de reloj No se garantiza un periodo mínimo de ejecución Los hilos en modo núcleo pueden ser también requisados

(a no ser que IRQL >= 2)

RunningReady

Desde el estado de espera

Page 28: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 28

Lista después de una espera

El proceso que termina la espera tiene menor prioridad que el proceso activo

Si el hilo que ha estado esperando no tiene una prioridad mayor que el hilo activo, es insertada al final de la cola que le corresponda

RunningReadyDesde el estado de espera

Page 29: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 29

Conmutación voluntaria

Cuando la tarea activa abandona la CPU Se ejecuta la tarea lista que se encuentre a la cabeza de

la cola de prioridad más alta

RunningReady

Al estado de espera

Page 30: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 30

Finalización de quantum

Cuando la tarea activa finaliza su quantum, se coloca al final de la cola de listos

Se aplica tanto a tareas de tiempo real como ordinarias, tanto en modo supervisor como usuario

Si no existen tareas en la cola, puede continuar su ejecución durante otro q

Boosting???

RunningReady

Page 31: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 31

Valor del quantum

El quantum estándar es de 2 ticks (12 para NT Server) El clock tick es de 10 ms, 15 ms en algunos Pentium MP El quantum lógico es 6 (36 en NT Server) El quantum se decrementa en 3 cada clock tick

Por tanto, el quantum es de 2 ticks Después de una espera el quantum sólo se decrementa en

1

Page 32: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 32

Ensanchamiento del quantum

Aplicable a la tarea que se ejecuta en primer plano En lugar de aumentar su prioridad, se le aumenta el

quantum Posibles valores:

Maximum = 6 ticks Middle = 4 ticks None = 2 ticks

Este ensanchamiento no se aplica a NT Server

RunningReady

Page 33: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 33

Ajuste de prioridad en W2K

Boost y Decay se aplican sólo a hilos con prioridades comprendidas entre 1 y 15

¿Cuándo se aplica? Fin de E/S Fin de espera por eventos o semáforos La tarea de primer plano finaliza una espera Tareas GUI despiertan como consecuencia de una “window

input” Para evitar “CPU starvation”

No aplicable a tareas de TR

Page 34: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 34

Boosting Después de una E/S: especificado por el device driver

Valores de boost: 1 disco, CD-ROM, puerto paralelo y vídeo 2 puerto serie, red, tubería con nombre 6 teclado y ratón 8 sonido

Después de una espera por evento o semáforo Boost = 1

Después de una espera en un “dispatcher object” por parte de la tarea en primer plano

Boost = 2 Comportamiento de boost

Se aplica a la prioridad base Nunca se debe superar el máximo de 15 Si después del boost se obtiene un quantum

Se cae un nivel y se asigna otro quantum Así hasta llegar a la prioridad base

Page 35: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 35

Decay cuando finaliza el quantum

Se cae a la siguiente cola Nunca por debajo de la prioridad base

RunningReady

Page 36: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 36

Boost y Decay

Prioridadbase

Prioridad

Activo Espera

Boost

Decay

Activo

Apropiación

Activo

Tiempo

Ready

Page 37: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 37

Boost para hilos GUI

Cuando un hilo GUI se despierta como consecuencia de un “window input” se le asigna un boost = 2

Este boost se suma a la prioridad actual, no a la prioridad base

Objetivo: mejorar el tiempo de respuesta de las tareas interactivas

Page 38: Planificación de uso del procesador Sebastián Sánchez Prieto.

1999-2003 S2P, OGP & IGT Planificación de CPU 38

¿Cómo evitar la inanición?

El “Balance Set Manager” busca esos hilos Es un hilo con prioridad 16 Se despierta cada segundo y analiza la cola de preparados Busca hilos que lleven preparados 300 ticks sin haberse

ejecutado Trata de evitar la inversión de prioridades En cada pasada busca 16 hilos listos Sube la prioridad de los hilos (boosting) hasta un valor de

10