planificación de uso del procesador sebastián sánchez prieto
TRANSCRIPT
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
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
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
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.
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
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
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
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
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?
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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”
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
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
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
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
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
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
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
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
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
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
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
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
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