Un planificador de tareas es una aplicación informática para controlar la ejecución desatendida de tareas en segundo plano . [ 1 ] Esto se conoce comúnmente como planificación por lotes , ya que la ejecución de tareas no interactivas se denomina a menudo procesamiento por lotes , aunque se distinguen y contrastan las tareas y los lotes tradicionales; consulte esa página para obtener más detalles. Otros sinónimos incluyen sistema por lotes , sistema de gestión de recursos distribuidos ( DRMS ), gestor de recursos distribuidos ( DRM ) y, comúnmente hoy en día, automatización de cargas de trabajo ( WLA ). La estructura de datos de las tareas a ejecutar se conoce como cola de tareas .
Los planificadores de tareas modernos suelen ofrecer una interfaz gráfica de usuario y un único punto de control para la definición y el monitoreo de las ejecuciones en segundo plano en una red distribuida de computadoras. Cada vez más, se requiere que los planificadores de tareas coordinen la integración de las actividades comerciales en tiempo real con el procesamiento informático tradicional en segundo plano, a través de diferentes plataformas de sistemas operativos y entornos de aplicaciones empresariales.
La planificación de trabajos no debe confundirse con la planificación de procesos , que es la asignación de los procesos que se están ejecutando actualmente a las CPU por parte del sistema operativo .
Descripción general
Las características básicas que se esperan de un software de programación de tareas incluyen:
- interfaces que ayudan a definir flujos de trabajo y/o dependencias entre trabajos
- Presentación automática de ejecuciones
- interfaces para supervisar las ejecuciones
- prioridades y/o colas para controlar el orden de ejecución de trabajos no relacionados
Si un software de un área completamente diferente incluye todas o algunas de esas características, se puede considerar que dicho software tiene capacidades de programación de tareas.
La mayoría de los sistemas operativos , como Unix y Windows , ofrecen capacidades básicas de programación de tareas, principalmente mediante `at`, `batch` , `cron` y el Programador de tareas de Windows . Los servicios de alojamiento web ofrecen capacidades de programación de tareas a través de un panel de control o una solución webcron . Muchos programas, como sistemas de gestión de bases de datos ( DBMS ) , copias de seguridad , sistemas de planificación de recursos empresariales (ERP ) y gestión de procesos de negocio (BPM) , también incluyen capacidades relevantes de programación de tareas. La programación de tareas proporcionada por el sistema operativo (SO) o el programa específico generalmente no permite programar tareas más allá de una única instancia del SO o fuera del ámbito del programa en cuestión. Las organizaciones que necesitan automatizar cargas de trabajo de TI no relacionadas también pueden aprovechar funciones más avanzadas de un programador de tareas, como:
- Programación en tiempo real basada en eventos externos e impredecibles.
- Reinicio y recuperación automáticos en caso de fallos.
- alertar y notificar al personal de operaciones
- generación de informes de incidentes
- registros de auditoría para fines de cumplimiento normativo
Estas funcionalidades avanzadas pueden ser desarrolladas por programadores internos, pero con mayor frecuencia las proporcionan proveedores especializados en software de gestión de sistemas .
Conceptos principales
Existen muchos conceptos fundamentales para casi todas las implementaciones de planificadores de tareas y que son ampliamente reconocidos con mínimas variaciones: tareas, dependencias, flujos de tareas y usuarios.
Más allá de las herramientas básicas de programación de instancias de un solo sistema operativo, existen dos arquitecturas principales para el software de programación de tareas.
- Arquitectura Maestro/Agente: la arquitectura tradicional para el software de planificación de tareas. El software de planificación de tareas se instala en una sola máquina (Maestro), mientras que en las máquinas de producción solo se instala un componente muy pequeño (Agente) que espera comandos del Maestro, los ejecuta y luego devuelve el código de salida al Maestro.
- Arquitectura cooperativa: un modelo descentralizado donde cada máquina puede colaborar en la planificación y delegar tareas programadas localmente a otras máquinas colaboradoras. Esto permite un equilibrio dinámico de la carga de trabajo para maximizar la utilización de los recursos de hardware y una alta disponibilidad para garantizar la prestación del servicio.
Historia
La planificación de trabajos tiene una larga historia [ 2 ] . Los planificadores de trabajos han sido uno de los componentes principales de la infraestructura de TI desde los primeros sistemas mainframe. Al principio, se procesaban pilas de tarjetas perforadas una tras otra, de ahí el término " procesamiento por lotes " [ 3 ] .
Desde un punto de vista histórico, podemos distinguir dos épocas principales en lo que respecta a los planificadores de tareas:
- La era de los ordenadores centrales
- Lenguaje de control de trabajos (JCL) en mainframes de IBM . Inicialmente basado en la funcionalidad JCL para gestionar dependencias, esta época se caracteriza por el desarrollo de sofisticadas soluciones de planificación (como el subsistema de entrada de trabajos 2/3 ) que forman parte del conjunto de herramientas de gestión y automatización de sistemas en el mainframe.
- La era de los sistemas abiertos
- Planificadores modernos en diversas arquitecturas y sistemas operativos. Dado que las herramientas de planificación estándar se limitan a comandos como ` at` y `batch` , la necesidad de planificadores de trabajos estándar para mainframes ha aumentado con la creciente adopción de entornos de computación distribuida.
En cuanto al tipo de programación, también existen distintas épocas:
- Procesamiento por lotes : la ejecución tradicional de tareas en segundo plano, basada en fechas y horas, durante un período definido en el que los recursos estaban disponibles para dicho procesamiento (la ventana de lotes ). En efecto, se trata del enfoque original de los sistemas centrales adaptado al entorno de sistemas abiertos.
- Automatización de procesos basada en eventos: donde los procesos en segundo plano no se pueden ejecutar simplemente en un momento definido, ya sea porque la naturaleza del negocio exige que la carga de trabajo se base en la ocurrencia de eventos externos (como la llegada de un pedido de un cliente o una actualización de existencias de una sucursal), o porque no hay una ventana de procesamiento por lotes suficiente.
- Planificación de tareas orientada a servicios: los recientes avances en la arquitectura orientada a servicios (SOA) han propiciado un cambio hacia la implementación de la planificación de tareas como un servicio de infraestructura de TI reutilizable que puede desempeñar un papel en la integración de la carga de trabajo de las aplicaciones empresariales existentes con nuevas aplicaciones en tiempo real basadas en servicios web .
Programación
Se utilizan diversos métodos para decidir qué tarea en particular ejecutar. Entre los parámetros que se pueden considerar se incluyen:
- Prioridad del trabajo
- Disponibilidad de recursos informáticos
- Clave de licencia si el trabajo utiliza software con licencia
- Tiempo de ejecución asignado al usuario
- Número de trabajos simultáneos permitidos para un usuario
- Tiempo estimado de ejecución
- Tiempo de ejecución transcurrido
- Disponibilidad de dispositivos periféricos
- Ocurrencia de eventos prescritos
- dependencia del trabajo
- dependencia de archivos
- dependencia de la solicitud del operador
Véase también
Referencias
- ↑ Efecto de las características del tamaño del trabajo en el rendimiento de la programación de trabajos
- ↑ Soporte. "Historia de la planificación y su papel en el mundo actual" . www.visualcron.com . Consultado el 10 de octubre de 2025 .
- ↑ "¿Qué es el procesamiento por lotes?" . www.ibm.com . Consultado el 10 de octubre de 2025 .
- Programación de trabajos