250 likes | 505 Views
Planificación de procesos. Cecilia Hernández 2007-1. Planificación de Procesos. Recordando cambio de contexto Cambiando CPU de un proceso a otro Procesos cambian de estados ejecución a bloqueado (ejecución instrucción I/O) bloqueado a listo por interrupciones
E N D
Planificación de procesos Cecilia Hernández 2007-1
Planificación de Procesos • Recordando cambio de contexto • Cambiando CPU de un proceso a otro • Procesos cambian de estados • ejecución a bloqueado (ejecución instrucción I/O) • bloqueado a listo por interrupciones • Proceso espera por evento, evento se produce • Reloj interrumpe y SO planifica a otro proceso • Planificación: Elegir que proceso de la cola de listos ejecutar • Planificación implica una decisión (política) • Cambio de contexto es una forma de hacerlo (mecanismo)
Multiprogramación y planificación • Multiprogramación permite aumentar la utilización de recursos y productividad sobreponiendo E/S y procesamiento • Que procesos/hebras ejecutar y por cuanto tiempo? • 2 visiones para la planificación en CPU • Largo plazo: determina nivel de multiprogramación • Cuantos trabajos se cargan a memoria • Ingresarlo a memoria o sacarlo (swapping) • Corto plazo: qué trabajo ejecutar a continuación para proporcionar un buen servicio • Ocurre frecuentemente, idea minimizar sobrecarga por cambio de contexto • Idea de buen servicio depende de muchas cosas
Objetivos de Planificación • Maximizar la utilización de CPU (CPU Utilization) • Maximizar la Productividad número de requerimientos atendidos por unidad de tiempo (throughput) • Minimizar tiempo de respuesta promedio (Response time) • Desde inicio hasta obtención primera respuesta de sistema • Minimizar tiempo de espera promedio (Waiting time) • Tiempo en cola de listos • Minimizar tiempo que tarda en proceso ejecutarse completamente, de inicio a fin (Turnaround time) • Favorecer algunos procesos, prioridad (Priority) • Evitar espera indefinida • Algunos sistemas favorecen algunos objetivos frente a otros • Productividad. Sistema de procesamiento de transacciones • Tiempo de respuesta. Sistema interactivo
Diferencia entre sistemas batch e interactivos • Sistemas batch • Importa maximizar throughput y minimizar turnaround time • Sistemas interactivos • Importa maximizar throughput y minimizar turnaround time y response time • De acuerdo a como se comportan procesos o hebras en un sistema • Procesos batch (CPU-bound) • Procesos interactivos (I/O-bound)
También importante para planificadores • Típicamente tratan de evitar inanición (starvation) • Cuando un proceso es prevenido de progresar porque otro proceso tiene el recurso que necesita • Ejemplo. Procesos de alta prioridad no permiten a procesos de baja prioridad ejecutarse • Inanición también se puede producir en hebras/procesos sincronizados
Planificador • Módulo que mueve trabajos entre colas • Algoritmo de planificación determina que trabajo ejecutar a continuación • Se ejecuta cuando • Un trabajo pasa de listo a bloqueado • Ocurre una interrupción del timer • Se crea o termina un trabajo • 2 tipos de sistemas de planificación • No apropiativa • Planificador espera que trabajo termine o ceda CPU • Apropiativa • Planificador interrumpe trabajo en ejecución y fuerza un context switch
Planificación Apropiativa/No Apropiativa • No Apropiativa. Una vez que procesos adquieren CPU no la liberan, excepto • Proceso pasa a estado de espera (bloqueado) • Proceso termina • Apropiativa. SO puede decidir quitar CPU a proceso para dársela a otro • Usa interrupciones de reloj
Algoritmos No 1 (FCFS) • FCFS (First Come, First Served) • Atención por orden de llegada • Justo, simula mundo real (banco, supermercado, etc) • Típicamente No Apropiativo • Ejemplo: P1 : 24ms, P2 : 3ms, P3 : 3ms • Tiempo de respuesta promedio? Tiempo de espera promedio? • Ventajas? • Desventajas?
FCFS (cont) • Ventajas • Ningún proceso espera indefinidamente • Desventajas • Tiempo de espera promedio puede ser alto, depende de: • tiempo de ejecución de procesos • orden de llegada • procesos cortos tienen espera alta si están detrás de los largos • Puede producir baja utilización de recursos • cuando procesos esperan podrían ocupar otros recursos
Algoritmo No2 (SJF) • Short-Job-First (SJF) • Asocia cada proceso con el tiempo de ejecución, tiempo que ocupo CPU la ultima vez antes de cambiarse a estado de espera • CPU es asignada a proceso con el menor tiempo de ejecución • Si dos procesos tienen igual tiempo de ejecución se aplica FCFS • Calcule tiempo de respuesta y espera promedios usando ejemplo anterior • Puede ser apropiativo y no apropiativo
SJF (cont) • Versión apropiativa Shortest-Remaining-Time-First • Calcula tiempo de ejecución mas corto y tiempo de llegada • Ejemplo: Calcular tiempo de respuesta y espera promedio Proceso Tiempo llegada Tiempo ejecución P1 0 8 P2 1 4 P3 2 9 P4 3 5
SJF (cont) • Ventajas • Parece perfecto • Mejor tiempo de espera promedio que FCFS • Desventajas • Espera indefinida? • Como estimar tiempo de procesamiento de próximo requerimiento de proceso?
Algoritmo No 3: (RR) • Round Robin (RR) • Cola de procesos listos tratada como cola FIFO circular • A cada proceso se le entrega CPU por un periodo de tiempo, llamado quantum • Proceso se ejecuta por la duración del quantum o hasta que pasa a bloqueado • Ejemplo P1 : 24 ms, P2 : 3ms, P3 : 3ms, quantum 4ms • Ventajas ? • Estupendo para procesos interactivos (sistemas de tiempo compartido)
RR (cont) • Desventajas • Valor del quantum muy importante en rendimiento de RR • Problemas si es muy chico? • Tiempo de overhead por cambio de contexto • Problemas si es muy grande? • Se acerca a FCFS • Recomendación • 80% de tiempo de ejecución de procesos (cada requerimiento antes de bloquearse) debería ser mas cortas que quantum
Algoritmo No 4 : Prioridades • Asignar prioridades a procesos • Ejecutar proceso con mayor prioridad • Si hay procesos con igual prioridad, aplicar FCFS • SJF, prioridad es tiempo de próximo requerimiento • Ejemplo: Proceso Tiempo Ejecución Prioridad P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2
Prioridades (cont) • Como asignar prioridades • Internamente por SO, en base a uso de recursos (memoria, archivos, etc) • Externamente (no por SO) de acuerdo a importancia de procesos • Espera indefinida • Si continuamente llegan procesos de alta prioridad, los de baja prioridad esperan indefinidamente • Solución Espera indefinida • Envejecimiento • aumentar prioridad como función acumulada en el tiempo • decrementar prioridad como función acumulada de tiempo de procesamiento
Combinando Algoritmos • En la práctica los sistemas actuales usan una combinación de estos algoritmos (RR, Prioridad, SJF) • Ejemplo: Múltiples colas retroalimentadas • Tiene jerarquía de colas • Tiene prioridades para ordenar las colas • Nuevos procesos entran a cola de mayor prioridad • Cada cola planificada con RR • Quantums son distintos en cada cola • Procesos se cambian de colas en base a historia
Múltiples Colas Retroalimentadas • Idea, separar procesos en base a sus necesidades de ejecución • Procesos interactivos están en las colas de mayor prioridad • Procesos que usan mucha CPU se cambian a colas de menor prioridad • Procesos que llevan mucho tiempo en el sistema se cambian a colas de mayor prioridad
Planificación en UNIX • Usa múltiples colas realimentadas • De acuerdo a tipo de proceso • procesos de tiempo compartido • procesos de sistema • Procesos de tiempo real • Planificación por prioridad entre distintas colas y RR dentro de cada cola • Procesos con alta prioridad siempre se ejecutan primero • Procesos con la misma prioridad se planifican con RR • Procesos cambian prioridad dinámicamente • Se incrementa si proceso hace E/S antes de terminar quantum • Se decrementa si proceso usa todo su quantum • Objetivo? • Premiar procesos interactivos • Típicamente usan CPU por periodos pequeños de tiempo
Planificador Linux • Soporta: • una CPU • SMP (Simultaneous Multi-Processors) • Multiprocesadores en un chip o no, cada uno con caches y compartiendo Memoria Principal • SMT (Simultaneous Multi-Threading) • Procesador con recursos adicionales para soportar hebras. Sistema con Memoria principal compartida • NUMA (Non- Uniform Memory Access) • Unico sistema usando mas de un nodo (una máquina con un procesador o un multiprocesador es decir con propia CPU o set de CPUs y memorias)
Planificador de CPU en Linux 2.4 • 2 algoritmos para planificación de procesos • Uno para procesos de tiempo compartido, en donde CPU se multiplexa en forma justa entre procesos • Una para procesos con requermientos de tiempo real, donde prioridades absolutas son más importantes que justicia • Algoritmo para procesos que comparten tiempo • Prioridades y créditos asociadas a proceso • Proceso con más créditos se ejecuta primero • A cada interrupción del timer se decrementan créditos de proceso en ejecución. Cuando llega a 0 se planifica el siguiente proceso • Cuando créditos de todos los procesos listos es 0, créditos se recalculan para todos los procesos (incluyendo los bloqueados) • créditos = (créditos/2) + prioridad
Algoritmo Planificador Linux 2.4 vs 2.6 • Diferencias entre version 2.4 y 2.6 • Algoritmos de 2.4 del orden O(n) • Tiempo ejecución varía linealmente al aumentar tamaño entrada • Algoritmos de 2.6 del orden O(1) • Tiempo ejecución constante independiente del número de tareas a ejecutar en sistema • Estructuras básicas en 2.6 • Runqueues • Priority arrays
Algunos problemas mejorados en 2.6 • Planificación de tareas de tiempo real (soft) • Mayor rapidez en atender este tipo de tareas • Algunos problemas para procesos que parecen interactivos (I/O-bound) • Procesos/hebras que usan mucho E/S considerados como interactivos • A veces están relacionados con BD no necesariamente interactivos • Procesos/hebras que son CPU-bound e I/O-bound pueden anular efectos de boost y penalidad de planificador • Mayor información • http://www.inf.udec.cl/~chernand/links/linux_cpu_scheduler.pdf
Resumen • Planificación de procesos puede influenciar fuertemente el rendimiento • Como? • Generalmente, múltiples objetivos tienen conflictos • Como? • Existen diversos algoritmos puros, pero normalmente los sistemas implementan lo bueno de varios