La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Planificación de uso del procesador

Presentaciones similares


Presentación del tema: "Planificación de uso del procesador"— Transcripción de la presentación:

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  S2P, OGP & IGT

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  S2P, OGP & IGT

4 Colas de procesos PCB 12 PCB 30 PCB 24 Cola de preparados Cabeza Misc.
Disco Cabeza Misc. Impresora Cabeza CD-ROM Cabeza  S2P, OGP & IGT

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.  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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 12 15 21 Trabajo 2 Trabajo 3 Trabajo 1 3 9 21  S2P, OGP & IGT

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?  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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 3 7 12 23  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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)  S2P, OGP & IGT

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  S2P, OGP & IGT

20 Estructuras de datos En la misma cola se emplea RR
whichqs Cola 0 Prio. 0-3 Proc 1 ... qs Cola 1 Prio. 4-7 Cola 2 Prio. 8-11 Cola 3 Prio Cola 4 Prio Cola 31 Prio En la misma cola se emplea RR Cada 100 ms se invoca roundrobin()  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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 > tareas de tiempo real Prioridades > 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  S2P, OGP & IGT

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  S2P, OGP & IGT

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”  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT

35 Decay cuando finaliza el quantum
Se cae a la siguiente cola Nunca por debajo de la prioridad base Ready Running  S2P, OGP & IGT

36 Boost y Decay Prioridad Prioridad base Decay Boost Apropiación Activo
Espera Activo Ready Activo Tiempo  S2P, OGP & IGT

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  S2P, OGP & IGT

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  S2P, OGP & IGT


Descargar ppt "Planificación de uso del procesador"

Presentaciones similares


Anuncios Google