ALGORITMOS DE PLANIFICACION NO EXPULSIVOS
Transcripción
ALGORITMOS DE PLANIFICACION NO EXPULSIVOS
Algoritmos de Programación No Expulsivos ALGORITMOS DE PROGRAMACIÓN NO EXPULSIVOS Planificación Política de Planificación Algoritmo de Planificación Decide de Asigna Distribución Equitativa Time Sharing Slice ó Quantum Planificador Algoritmos de Programación No Expulsivos Procesos Activos CARACTERISTICAS DE UN BUEN ALGORITMO DE PLANIFICACION Eficacia Garantizar que cada proceso obtiene su proporción justa de la CPU Mantener ocupada la CPU el 100 % del tiempo Minimizar el tiempo de respuesta para Tiempo de Respuesta los usuarios interactivos Minimizar el tiempo que deben esperar los Tiempo de Regreso usuarios por lotes para obtener sus resultados Maximizar el número de tareas Rendimiento procesadas por hora Algoritmos de Programación No Expulsivos Equidad Instantes de planificación Los instantes de planificación existen cuando: Concluye la ejecución de un proceso o hilo Un proceso se bloquea Se crea un nuevo proceso o hilo Ocurre una interrupción de I/O Ocurre una interrupción de reloj Algoritmos de Programación No Expulsivos Un instante de planificación es aquél en el cuál el planificador tiene que decidir qué tarea debe ejecutarse Algoritmos de Planificación FCFS EXPULSIVOS PARA SISTEMAS POR LOTES. SJF PLANIFICACIÓN POR PRIORIDAD Entornos de los procesos OBEJTIVOS DE LOS ALGORITMOS DE PLANIFICACIÓN PROCESAMIENTO POR LOTES (BASH) INTERACTIVOS TIEMPO REAL PARA SISTEMAS INTERACTIVOS. PARA SISTEMAS DE TIEMPO REAL. Algoritmos de Programación No Expulsivos ALGORITMOS DE PLANIFICACIÓN NO EXPULSIVOS Sistemas por Lotes FCFS No expulsivo Las tareas son atendidas en el orden en que se activan Fácil de implementar ya que se necesita tan sólo mantener una lista de tareas activas Una tarea puede retrasar la ejecución de tareas Es el algoritmo más sencillo, el primer proceso que solicita la CPU es el primero en recibirla Tiempo de espera promedio bastante largo 8 4 4 4 A B C D Algoritmos de Programación No Expulsivos First-Come First-Served (primero en llegar primero en ser atendido) FCFS - Ejemplo: Planificación de servicio por orden de llegada. Calcular el tiempo de espera, tiempo de retorno y tiempo medio de esperas si aplicamos el algoritmo FCFS suponiendo que los procesos siguientes llegan en el mismo instante y en el orden: P1, P2, P3. ¿Y si el orden de llegada es: P2, P3, P1?. Proceso Duración P1 9 P2 4 P3 2 0 9 P1 13 P2 Tipo de espera P1=0; P2=9; P3=13; Tipo de Retorno P1=9; P2=13; P3=15; Tipo de espera medio: (0+9+13)/3= 7,3 Si P1 hubiera llegado de último los tiempos hubieran mejorado bastante (espera media=3,3) 0 4 P2 6 P3 15 P1 15 P3 Algoritmos de Programación No Expulsivos Diagrama de Gantt FCFS Shortest Job First (primero la tarea más corta) No expulsivo 4 4 4 8 B C D A Mejora el tiempo de respuesta promedio con respecto al anterior Entra en la CPU el proceso con la ráfaga de CPU más corta Se pueden estimar las duraciones de los procesos, según su historia reciente El proceso en CPU es desalojado si llega a la cola un proceso con duración más corta Algoritmos de Programación No Expulsivos Se calcula el plan de ejecución off-line Proceso Calcular el tiempo medio de espera que resulta de aplicar Un algoritmo SJF no expulsivo Proceso Llegada Duración P1 0 7 P2 2 4 P3 4 1 P4 5 4 Llegada Duración Espera SFJ Espera SRTF P1 0 7 0 9 P2 2 4 6 1 P3 4 1 3 0 P4 5 4 7 2 SJF no expulsivo Espera media: (0+6+3+7)/4=4 0 7 P1 SJF expulsivo Espera media: (9+1+0+2)/4=3 0 2 P1 P3 4 P2 8 5 P3 12 P2 7 P2 16 P4 11 P4 16 P1 Algoritmos de Programación No Expulsivos SJF - Ejemplo: Planificación por Prioridad Cada proceso tiene una prioridad, entrara primero en la CPU el que tenga mayor prioridad La prioridad se puede definir: De forma interna la define el CPU De forma externa la definen los usuarios SJF es un caso de planificación por prioridad Los procesos de prioridad más baja tienen riesgo de inanición Solución: envejecimiento. Ir aumentando de forma progresiva la prioridad de los procesos en espera Algoritmos de Programación No Expulsivos Política de prioridades expulsiva o no Linux utiliza un planificador basado en la noción de prioridad, que indica la importancia del proceso. Entre mayor sea la prioridad, más importante es el proceso. El planificador elige para ejecución al proceso con la mayor prioridad En Linux, la prioridad de los procesos se asigna de manera dinámica, lo que significa que su valor cambia en el tiempo. La definición de la prioridad de un proceso depende del uso de CPU del proceso en el pasado. Si el proceso ha utilizado poco tiempo de CPU, Linux eleva su valor de prioridad para que pueda ser ejecutado inmediatamente, buscando así una distribución equitativa del tiempo de CPU. Otra característica del planificador de Linux es que es del tipo expulsivo (preemptable), lo que significa que si algún proceso se activa con una prioridad mayor a la del proceso que está en ejecución, se expulsa al proceso actual y se ejecuta al proceso más prioritario Algoritmos de Programación No Expulsivos