Estrategias Avanzadas de Planificación de Tareas en Sistemas de Tiempo Real
Clasificado en Informática
Escrito el en español con un tamaño de 4,05 KB
Planificación de Tareas: Conceptos Fundamentales
La planificación de tareas se refiere a la estrategia de distribuir el tiempo de procesador entre diversas tareas, con el objetivo de satisfacer sus requisitos temporales específicos. La asignación biunívoca entre acciones y procesadores se conoce como un plan de ejecución (o schedule). El componente del sistema encargado de esta función es el planificador (o scheduler).
Esquemas de Planificación
Existen diferentes enfoques para la planificación de tareas, cada uno con sus propias características:
Planificación Dirigida por Tiempo (Time/Clock-Driven)
En este esquema, el planificador se activa y ejecuta cada vez que se recibe una señal de reloj predefinida. Un ejemplo clásico de este tipo es la planificación cíclica.
Planificación por Turno Circular (Round-Robin)
Las acciones que están listas para ejecutarse se organizan en una cola de tipo FIFO (First-In, First-Out). Cada acción se ejecuta durante un periodo de tiempo preestablecido, conocido como "rodaja de tiempo" o quantum, y luego se coloca al final de la cola. Una variante de este método permite el uso de rodajas de tiempo desiguales o ponderadas, asignando más tiempo a tareas con mayor necesidad.
Planificación por Prioridades
Cada acción o tarea posee una prioridad asignada. El sistema siempre ejecuta la acción con la mayor prioridad entre todas las que están listas para ser procesadas. Este tipo de planificación suele estar dirigida por sucesos (event-driven), reaccionando a eventos que cambian el estado de las tareas o sus prioridades.
Planificación con y sin Desalojo (Preemptive vs. Non-Preemptive)
Planificación con Desalojo (Preemptive Scheduling)
En este modelo, una acción que se está ejecutando puede ser interrumpida y desalojada del procesador para permitir la ejecución de otra tarea, generalmente una de mayor prioridad o más urgente.
Planificación sin Desalojo (Non-Preemptive Scheduling)
Una acción que ha comenzado a ejecutarse mantiene el control del procesador hasta que se cumpla una de las siguientes condiciones:
- Termina su ejecución.
- Necesita un recurso que no está disponible en ese momento.
- Abandona el procesador voluntariamente.
Prioridades Fijas y Variables
Prioridades Fijas (Estáticas)
En este esquema, la prioridad de las acciones dentro de una misma tarea permanece constante a lo largo de su ciclo de vida (conocido como planificación estática). Las tareas listas para ejecutarse son despachadas en estricto orden de prioridad. El despacho puede implementarse de varias maneras:
- Con desalojo (preemptive)
- Sin desalojo (non-preemptive)
- Con desalojo limitado
Generalmente, se asume el uso de prioridades fijas con desalojo, ya que esto tiende a ofrecer un mejor tiempo de respuesta para las tareas de alta prioridad. Un ejemplo de esto son las prioridades monótonas en frecuencia.
Prioridades Variables (Dinámicas)
A diferencia de las prioridades fijas, la prioridad de una acción se determina o ajusta en el momento de su ejecución. Un ejemplo común es el algoritmo "primero el más urgente" (Earliest Deadline First - EDF), donde se asigna mayor prioridad a la acción que debe finalizar antes.
Modelos de Tareas
Un modelo de tareas define las características y propiedades de las tareas dentro de un sistema de tiempo real. Estos modelos suelen establecer restricciones específicas sobre las tareas para facilitar el análisis del sistema y asegurar el cumplimiento de los requisitos temporales. Un ejemplo de modelo de tareas podría ser: "solo tareas periódicas e independientes".