Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Concepto de planificacin
Programa 1
En ejecucin
Sistema Operativo
Salvar registros
Programa 2
Inactivo
Restaurar registros
Inactivo En ejecucin
Salvar registros
Interrupcin o llamada al sistema En ejecucin
Restaurar registros
Inactivo
Planificacin CPU 2
Planificacin
La ejecucin de un trabajo se compone de rfagas de CPU y E/S Objetivos perseguidos en la planificacin de CPU: Equidad Eficiencia Bajo tiempo de respuesta Rendimiento alto Minimizar el tiempo de espera Todos estos objetivos no se pueden conseguir simultneamente
Planificacin CPU 3
Colas de procesos
Cola de preparados Cabeza
PCB 12
PCB 30
Disco
Cabeza
PCB 24
Impresora Cabeza
CD-ROM
Cabeza
Planificacin CPU 4
Planificadores (schedulers)
Controla el grado de multiprogramacin Selecciona entre los trabajos cargados en memoria y que estn preparados para ejecutarse cual har uso del procesador El planificador a corto plazo debe ser muy rpido ya que entra en juego con una frecuencia muy alta Carga y descarga trabajos desde el disco a la memoria y de la memoria al disco en funcin del grado de sobrecarga del sistema.
Planificacin CPU 5
Cola de preparados
CPU
E/S
Cola de E/S
E/S
Cola de E/S
E/S
2010-2011 Mariano Gmez Plaza
Cola de E/S
Planificacin CPU 6
Criterios de planificacin
Utilizacin 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 la planificacin. Tiempo de respuesta Importante en aplicaciones interactivas o de TR
Planificacin CPU 7
Planificacin FCFS
Primero en entrar, primero en salir Se lleva a cabo manejando la cola de procesos preparados como una cola FIFO Es el algoritmo ms sencillo de codificar Caractersticas 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
Planificacin CPU 8
Eficiencia FIFO
20
24
32
Trabajo 2
Trabajo 3
Trabajo 1
12
32
Los tiempos medios de retorno son menores en el segundo caso que en el primero
Planificacin CPU 9
Asocia de forma dinmica a cada proceso la longitud de su siguiente rfaga de CPU Asigna la CPU al trabajo con la rfaga ms pequea Este algoritmo es ptimo para reducir los tiempos medios de espera Su dificultad es conocer cules van a ser las duraciones de las prximas rfagas de CPU de cada proceso Cmo se estima la duracin de la siguiente rfaga de CPU?
Planificacin CPU 10
Mtodo de prediccin
La siguiente rfaga de CPU se predice como una media exponencial de las longitudes medias en anteriores rfagas Sea:
tn:
longitud de la n-sima rfaga de CPU Xn: valor predicho para la n-sima rfaga de CPU E : parmetro de ajuste
Xn+1 = E tn + (1-E) Xn
tn:
Planificacin CPU 11
Algoritmos de prioridad
Se asocia una prioridad a cada proceso y la CPU se asigna al trabajo con la prioridad ms alta Las prioridades pueden definirse de dos formas: Internamente Externamente Problema: posible inanicin (starvation) de determinadas solicitudes
Planificacin CPU 12
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 Cmo hacer que la CPU sea retirada a un proceso una vez asignada? Prioridad con requisa (preemption): SJF
Llega el Trabajo 2
Trabajo 1
Trabajo 2
Trabajo 1
Trabajo 3
12
23
Planificacin CPU 13
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 rfaga de CPU > q Interrupcin TIME-OUT Si la rfaga de CPU < q Liberacin de CPU q p g round-robin degenera en FCFS q p 0 CPU/n
Planificacin CPU 14
Si q es muy pequeo se pierde mucho tiempo en el cambio de contexto. Disminuye la eficacia del procesador Si q es grande, los tiempos de respuesta aumentan Regla emprica: el 80% de las rfagas de CPU deben ser menores que el cuanto Problema: slo existe una cola de trabajos preparados, no distingo entre tipos de trabajos
Planificacin CPU 15
Colas multinivel
Dividen la cola de Prioridad alta preparados en colas separadas en funcin del tipo de trabajo Cada cola tiene su propio algoritmo de planificacin Debe existir otro algoritmo para elegir la cola en cada momento
Prioridad baja
Tareas interactivas
Tareas de edicin
Tareas batch
Planificacin CPU 16
El algoritmo de planificacin de cada cola Mtodos para ascender y descender Dnde poner inicialmente a los trabajos
Quantum = 10
Quantum = 20
FCFS
Planificacin CPU 17
Prioridades dinmicas: -20 (alta) +20 (baja) Cada 200 ms un reloj hardware interrumpe al procesador y se carga un nuevo proceso Cada segundo se recalcula la prioridad de todos los procesos preparados Se elige al proceso con la prioridad ms alta Ajuste de prioridad: beneficia a los procesos que han usado poco el procesador en el pasado reciente
Planificacin CPU 18
Pasado reciente
Ventana=5xN
Instante actual
N: valor medio del n de procesos ejecutables en el ltimo minuto Consecuencias del algoritmo: se penaliza a los procesos intensivos en CPU durante los periodos de fuerte carga y se olvida de ellos cuando est ligeramente cargado
Planificacin CPU 19
Los procesos limitados por E/S corren muy rpidamente despus de terminar una operacin de E/S Los procesos limitados por CPU no sufren inanicin corriendo en rfagas de 1 segundo Los cambios en el comportamiento de un proceso se compensan automticamente
Planificacin CPU 20
Algoritmo de VAX/VMS
Es un algoritmo con prioridades (32 niveles) Prio. bajas (0-15): 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 Prio. altas (16-31): procesos de tiempo real Su prioridad no suele cambiar Planificacin con prioridades y desalojo
Planificacin CPU 21
Vlido en sistemas mono y multiprocesador Es vlido para sistemas UMA y NUMA La planificacin se realiza a nivel de hilos Los cambios de contexto estn optimizados si los hilos pertenecen a la misma tarea Quantum entre 10 y 100 milisegundos Prioridades dinmicas con 32 colas Los nmeros bajos corresponden a prioridades altas y viceversa
Planificacin CPU 22
Cola de preparados
Cola 0 Cola 1 Cola 2 ... Cola 31 Cerrojo Contador Marca
Libre 3 2
Hilo
Hilo
Hilo
Clculo de prioridades
Prioridad -> base + offset Base -> Prio. usuario < Prio. sistema Offset=uso reciente de CPU x factor de carga Mach utiliza una tcnica de envejecimiento denominada factor de sobrecarga (FS) basada en marcas de tiempo FS = n de hilos / n de procesadores Este factor se calcula como una media exponencial para evitar variaciones bruscas
Planificacin CPU 24
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
Planificacin CPU 25
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 simultneamente No se garantiza la ejecucin de los n hilos ms prioritarios si hay n procesadores Se intenta mantener cada hilo en su procesador Un procesador puede interrumpir a otro para que planifique una tarea
Planificacin CPU 26
No existe un planificador central!!! Las rutinas de planificacin se invocan cuando se produce un evento que cambia el estado Ready de un hilo Evento que provocan la activacin del scheduler Interrupcin del temporizador (fin del quanto) Interrupcin del temporizador (timed wait) Interrupcin HW (finalizacin de E/S) Operacin V en un Waitable object Operacin P en uno o varios Dispatch objects
Planificacin CPU 27
Escenarios de planificacin
Apropiacin 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 Conmutacin voluntaria Bloqueo en un dispatch object Finalizacin Disminucin de la prioridad de modo explcito
Planificacin CPU 28
Escenarios de planificacin
Finalizacin 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 ejecutndose si no hay tareas de igual o mayor prioridad listas para ejecutarse
Planificacin CPU 29
Apropiacin
La apropiacin es estrictamente dirigida por eventos No se espera por el siguiente pulso de reloj No se garantiza un periodo mnimo de ejecucin Los hilos en modo ncleo pueden ser tambin requisados (a no ser que IRQL >= 2)
Ready Running
Planificacin CPU 30
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
Ready
Running
Planificacin CPU 31
Conmutacin voluntaria
Cuando la tarea activa abandona la CPU Se ejecuta la tarea lista que se encuentre a la cabeza de la cola de prioridad ms alta
Ready Running
Al estado de espera
Planificacin CPU 32
Finalizacin 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 ejecucin durante otro q Ready Running Boosting???
Planificacin CPU 33
Quantum
El quantum estndar es de 2 ticks (12 para NT Server) El clock tick es de 10 ms, 15 ms en algunos Pentium MP El quantum lgico es 6 (36 en NT Server) El quantum se decrementa en 3 cada clock tick Por tanto, el quantum es de 2 ticks Despus de una espera el quantum slo se decrementa en 1
Planificacin CPU 34
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 Ready Running Middle = 4 ticks None = 2 ticks
Boost y Decay se aplican slo a hilos con prioridades comprendidas entre 1 y 15 Cundo se aplica? Fin de E/S Fin de espera por eventos o semforos 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
Planificacin CPU 36
Boosting
1 disco, CD-ROM, puerto paralelo y vdeo 2 puerto serie, red, tubera con nombre 6 teclado y ratn 8 sonido
Planificacin CPU 37
Boosting
Despus 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 mximo de 15 Si despus del boost se obtiene un quantum
Planificacin CPU 38
Planificacin CPU 39
Boost y Decay
Decay
Prioridad
Boost
Apropiacin
Prioridad base
Activo
Espera
Activo
Ready
Activo
Tiempo
Planificacin CPU 40
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
Planificacin CPU 41
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 inversin de prioridades En cada pasada busca 16 hilos listos Sube la prioridad de los hilos (boosting) hasta un valor de 10
Planificacin CPU 42
Un reloj HW interrumpe cada 10 ms La rutina de tratamiento del reloj tick(), tiene una de las prioridades ms altas Slo la supera la interrupcin de fallo de alimentacin Prioridades comprendidas entre 0 y 127 Ncleo: entre 0 y 49 Procesos de usuario: entre 50 y 127 El ncleo es ininterrumpible
Planificacin CPU 43
Rutina tick()
Recarga el reloj HW si es necesario Actualiza el uso de CPU del proceso activo Clculo de prioridades y manejo de finalizacin del quantum Actualiza la fecha Se manejan los callouts Se despierta al swapper y pagedaemon cuando es necesario Se manejan las alarmas
Planificacin CPU 44
Estructura proc
p_pri Prioridad actual 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 mximo de 127. Inicialmente vale 0 Cada segundo se recalculan las prioridades (schedcpu() va callout)
Planificacin CPU 45
Reclculo 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 nmero medio de procesos activos en el ltimo segundo Frmula:
p_usrpri=PUSER+(p_cpu/4)+(2*p_nice) PUSER=50
Planificacin CPU 46
Estructuras de datos
whichqs 0 0 1 0 1 qs Cola 0 Cola 1 Cola 2 Cola 3 Cola 4 Prio. 0-3 Prio. 4-7 Prio. 8-11 Prio. 12-15 Prio. 16-19 ... Cola 31 Prio. 124-127 ...
Proc
Proc
Proc
Proc
Proc
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 inversin de prioridades
Planificacin CPU 48