1 / 38

Planificación de uso del procesador

Planificación de uso del procesador. Sebastián Sánchez Prieto. Concepto de planificación. Programa 1. Sistema Operativo. Programa 2. En ejecución. Salvar registros. Inactivo. Interrupción o llamada al sistema. Restaurar registros. Inactivo. En ejecución. Salvar registros.

Download Presentation

Planificación de uso del procesador

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Concepto de planificación Programa 1 Sistema Operativo Programa 2 En ejecución Salvar registros Inactivo Interrupción o llamada al sistema Restaurar registros Inactivo En ejecución Salvar registros Interrupción o llamada al sistema Restaurar registros Inactivo En ejecución

  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

  4. Colas de procesos PCB 12 PCB 30 Cola de preparados Cabeza Misc. Misc. PCB 24 Disco Cabeza Misc. Impresora Cabeza CD-ROM Cabeza

  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.

  6. Relación entre los planificadores CPU Cola de preparados E/S Cola de E/S E/S Cola de E/S E/S Cola de E/S

  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

  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

  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 2 Trabajo 3 Trabajo 1 0 3 9 21

  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?

  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 • tn: valor predicho para la n-ésima ráfaga de CPU • a : parámetro de ajuste tn+1 = a tn + (1-a) tn • tn: contiene la información más reciente • tn: contiene la historia pasada

  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

  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 Llega el Trabajo 2 con ráfaga más corta Trabajo 1 Trabajo 2 Trabajo 1 Trabajo 3 0 3 7 12 23

  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

  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 Prioridad alta Tareas del sistema Tareas interactivas Tareas de edición Tareas batch Prioridad baja

  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

  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

  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)

  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

  20. whichqs 0 0 1 0 1 ... qs Prio. 0-3 Cola 0 Proc Proc Proc Prio. 4-7 Cola 1 Prio. 8-11 Cola 2 Prio. 12-15 Cola 3 Prio. 16-19 Cola 4 ... Proc Proc Prio. 124-127 Cola 31 Estructuras de datos • En la misma cola se emplea RR • Cada 100 ms se invoca roundrobin()

  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

  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

  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

  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

  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”

  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

  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) Ready Running Desde el estado de espera

  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 Ready Running Desde el estado de espera

  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 Ready Running Al estado de espera

  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??? Ready Running

  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

  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 Ready Running

  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

  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

  35. Decay cuando finaliza el quantum • Se cae a la siguiente cola • Nunca por debajo de la prioridad base Ready Running

  36. Boost y Decay Decay Prioridad Boost Apropiación Prioridad base Activo Espera Activo Ready Activo Tiempo

  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

  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

More Related