Planificacion en Linux

Post on 03-Jul-2015

263 views 1 download

Transcript of Planificacion en Linux

PLANIFICACION EN LINUX

 

 

Linux está basado en la planificación tradicional de Unix añadiendo 2 clases de prioridad para procesos de tiempo real flexibles. Las tres clases de prioridad de Linux son las siguientes:

 

   SCHED_FIFO: hilos de tiempo real con planificación FIFO.

 

   SCHED_RR: hilos de tiempo real con planificación por turno rotatorio.

 

   SCHED_OTHER: hilos que no son de tiempo real y otros.

 

Dentro de cada clase se utilizan múltiples prioridades, siendo las prioridades de las clases de tiempo real mayores que la de la clase SCHED_OTHER. Para los hilos FIFO, se aplican las siguientes reglas:

 

1.     El sistema no interrumpe la ejecución de un hilo FIFO, exepto en los siguientes casos:

 

a)   Pasa a estar listo otro hilo FIFO de mayor prioridad.

 

b)   El hilo FIFO en ejecución se bloquea a la espera de un evento, como una E/S.

 

c)   El hilo FIFO en ejecución abandona el procesador como resultado de la ejecución de la primitiva sched_yield.

 

2.Cuando se interrumpe un hilo FIFO en ejecución, pasa a la cola asociada a su prioridad.

  3.Cuando un hilo FIFO pasa a listo y tiene mayor prioridad que el hio que está en ejecución, se expulsa al hilo en ejecución y pasa a ejecutar el hilo de mayor prioridad. Si más de un hilo tiene esta mayor prioridad, se escoge al que lleva más tiempo esperado.

  La política SCHED_RR es similar a la SCHED_FIFO, exepto por el uso de un cuanto de tiempo asociada a cada hilo. Cuando un hilo SCHED_RR ha consumido su cuanto de tiempo, pasa a suspendido y se escoge un hilo de tiempo real con una prioridad igual o mayor.

La figura 10.9 ilustra las diferencias entre la planificación FIFO y RR. Supóngase un programa de cuatro hilos con tres prioridades relativas asignadas según la figura 10.9. Supóngase que todos los hilos que esperan están listos para ejecutarse cuando termina o se bloquea el hilo actual y no hay ningún hilo de mayor prioridad despierto mientras se está ejecutando un hilo. La figura 10.9 muestra el orden de ejecución si todos los hilos son de la clase SCHED_FIFO. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, aunque los hilos B y C tienen la misma prioridad, se ejecuta el hilo B porque lleva mas tiempo esperando que C. El hilo B se ejecuta hasta que termina o se bloquea; entonces, pasa a ejecutar el hilo C hasta que termina o se bloquea. Por último, se ejecuta el hilo A.

 

 

Figura 10.9 Ejemplo de planificación Linux

  La figura 10.9 muestra el orden de ejecución si todos los hilos son de la clase SCHED_RR. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, los hilos B y C comparten el tiempo porque ambos tienen la misma prioridad. Por último, se ejecuta el hilo A.

La última clase de prioridad es SCHED_OTHER. Un hilo de esta clase ejecuta sólo si no hay hios de tiempo real listos para ser ejecutados. Dentro de la clase SCHED_OTHER, se utiliza el algoritmo tradicional de Unix.

 

 

"Planificación de Procesos" Sistemas Operativos I

Mapa Conceptual

1. Planificación

2. Tipos de Planificadores

3. Tipos de Procesos

4. Algoritmos de Planificación

6. Planificadores Especiales

7. Planificación en Linux

8. Kernel

10. Funciones Básicas del Kernel

12. Fuentes de Linux

13. Reporte de Actividad

R e f e r e n c i a s

Planificación

Scheduler : El planificador se encarga de seleccionar un proceso que espera en la fila y asignarle tiempo de CPU

Dispatcher: El despachador se encarga de asignar el CPU al proceso seleccionado

Tipos de Planificadores

Co-operativemultitasking : En el Planificador No-expropiativo(non-preemptive) una vez que se asigna CPU a un proceso, dicho proceso se apropia del CPU hasta que termine ó por sí mismo ceda el CPU a otro proceso

Pre-emptivemultitasking : Planificador Expropiativodá un

tiempo limite (Time slicing) después del cual el proceso actual es suspendido, para dar paso a otro proceso y mantener así la ilusión de concurrencia, e.g. quantum=20-200ms

Tipos de Procesos

Por tipo de operaciones

Procesos con uso intensivo de CPU: gran cantidad de complejos cálculos matemáticos (CPU bound)

Procesos con uso intensivo de E/S: mucha interacción con dispositivos de E/S (IO bound)

Por tipo de transacciones

Procesos Interactivos

Procesos por Lotes

Procesos de Tiempo Real

Algoritmos de Planificación

Criterios útiles para planificar procesos

Tiempo ocioso o en espera

Previsibilidad, plazos o tiempos de respuesta requerido

Equidad, prioridades y privilegios

Trabajo pendiente o tareas por realizar

Exigencias de E/S

Productividad, utilización y carga del CPU y E/S

Algoritmos de Planificación

FCFS, FIFO: Pororden de arribo(first-come, first-served)

SPN, SRT: Primero el trabajo más corto o con menor tiempo restante (shortest process next, shortest remaining time)

RR: Por turno rotatorio usando quantums, i.e. interrupciones

periódicas de reloj (Round-robinscheduling)

FB: Realimentación Multinivel, maneja prioridades dinámicas con múltiples colas penalizando a los procesos más viejos (Feedback)

Planificadores Especiales

Planificación de Multiprocesadores: para equipos con

más de un procesador (Multiprocessing)

Planificación : sistemas con altos requerimientos de precisión, eficiencia, determinismo, bajo tiempo de respuesta, tareas periódicas, configuración avanzada, tolerancia a fallas, etc.

Planificación en Linux

Los procesos de Linux son preemptive, sin embargo el kernel es non-preemptive

A cada proceso se le permite ser ejecutado por un breve período de tiempo de 200ms (time-slice ó quantum)

Linux utiliza un algoritmo simple de planificación basado en prioridades dinámicas, i.e. schedulefunction

Linux cuenta con dos tipos de prioridades: normal y real-time

Linux Kernel 2.4 soporta con eficiencia sistemas multiprocesadores

Utilerías: top, ps -aux

Kernel

Kernel : Núcleo del Sistema Operativo

Programa que corre como proceso en modo privilegiado, supervisor o kernel

Programa de alto rendimiento (mucho código ensamblador optimizado)

Proceso que siempre esta cargado en memoria no intercambiable a disco, i.e. swapping

Kernel

Kernel : Proceso capaz de acceder cualquier recurso de hardware directamente (incluyendo el CPU)

Tipos de Kernel:

Monolítico : Variables compartidas entre procesos

Micro Kernel : Módulos independientes e intercambiales

Funciones Básicas del Kernel

Gestión de Procesos

Creación y terminación de los procesos

Planificación y expedición de los procesos

Cambio de procesos (Contextswitch)

Sincronización de procesos

Comunicación entre procesos (Inter-processcommunication)

Gestión de los bloques de control de procesos

Gestión de memoria

Asignación de espacios de direcciones a los procesos

Intercambio (swapping)

Gestión de páginas y segmentos

Funciones Básicas del Kernel

Gestión E/S

Gestión de buffers

Asignación de canales de E/S y dispositivos a los procesos

Funciones de soporte

Tratamiento de interrupciones

Contabilidad y estadísticas

Supervisión

Fuentes de Linux

Actividad: Con el propósito de conocer los detalles de implementación del scheduler de Linux, busca y reporta links donde aparezca por ejemplo la función scheduler.c, la estructura task_struct, la macro de ensamblador para cambio-contexto switch_to, etc.