ALGORITMOS DE PROGRAMACIÓN NO EXPULSIVOS
Planificación Procesos Activos Decide Política de Planificación Algoritmo de Planificación Asigna de Planificador Distribución Equitativa Time Sharing Slice ó Quantum
CARACTERISTICAS DE UN BUEN ALGORITMO DE PLANIFICACION Equidad Garantizar que cada proceso obtiene su proporción justa de la CPU Eficacia Tiempo de Respuesta Tiempo de Regreso Rendimiento Mantener ocupada la CPU el 100 % del tiempo Minimizar el tiempo de respuesta para los usuarios interactivos Minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados Maximizar el número de tareas procesadas por hora
Instantes de planificación Un instante de planificación es aquél en el cuál el planificador tiene que decidir qué tarea debe ejecutarse 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 Planificación NO EXPULSIVOS ALGORITMOS DE PLANIFICACIÓN EXPULSIVOS FCFS 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 POR LOTES. PARA SISTEMAS INTERACTIVOS. PARA SISTEMAS DE TIEMPO REAL.
Sistemas por Lotes FCFS First-Come First-Served (primero en llegar primero en ser atendido) 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
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 P2 P3 P1 Diagrama de Gantt 0 9 13 15 P1 P2 P3 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 6 15
FCFS Shortest Job First (primero la tarea más corta) No expulsivo Se calcula el plan de ejecución off-line 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
SJF - Ejemplo: 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 Proceso 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 SJF expulsivo Espera media: (9+1+0+2)/4=3 0 7 8 12 16 P1 P3 P2 P4 2 4 5 7 11 16 P1 P2 P3 P2 P4 P1
Planificación por Prioridad Cada proceso tiene una prioridad, entrara primero en la CPU el que tenga mayor prioridad Política de prioridades expulsiva o no 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
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