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.
Top Related