¿Qué es la programación de trabajos?
La programación de trabajos, también conocida como programación por lotes, es un proceso que asigna recursos del sistema para controlar la ejecución de programas en segundo plano no atendidos. El programador decide qué trabajos ejecutar, en qué momento y los recursos de la unidad central de procesamiento (CPU) necesarios para completar el trabajo. Asegura que todos los trabajos se completen de acuerdo con las prioridades establecidas.
El software de programación de trabajos puede realizar la programación y monitorear trabajos o lotes en tiempo real. Los programadores de trabajos modernos tienen una interfaz gráfica de usuario (GUI) con un sistema de control de punto único. Muchas empresas utilizan software de automatización de cargas de trabajo para automatizar tareas propensas a errores relacionadas con la programación de trabajos, el procesamiento y el almacenamiento.
El software de automatización de cargas de trabajo ayuda a las empresas a reducir la interacción manual, permitiendo al departamento de TI centrarse en tareas con mayor prioridad. Los profesionales de TI pueden abordar rápidamente problemas de registro central y generación de informes y hacer uso de otras capacidades como la autorremediación, alertas y notificaciones.
Los programadores de trabajos utilizan algunos parámetros estándar para decidir qué trabajo ejecutar. Estos parámetros son los siguientes:
- Prioridad del trabajo
- Dependencia del trabajo
- Disponibilidad de recursos informáticos
- Dependencia de archivos
- Dependencia de aviso del operador
- Tiempo estimado de ejecución
- Tiempo de ejecución transcurrido
- Tiempo de ejecución asignado a un usuario
- Trabajos simultáneos permitidos para un usuario
- Disponibilidad de dispositivos periféricos
- Ocurrencia de eventos prescritos
- Disponibilidad de clave de licencia cuando un trabajo está utilizando un software con licencia
Tipos de programación de trabajos
Las empresas programan trabajos o lotes a través de múltiples tipos de procesos de programación. A continuación se presentan tres tipos comunes de programación de trabajos que los equipos de TI utilizan para optimizar su entorno.
- Programación a largo plazo: Una larga lista de elementos está lista para ser procesada cuando se crean nuevos procesos. Esto requiere un poder de procesamiento sustancial y añade sobrecarga al sistema operativo. El SO mantiene una lista larga, y hay un aumento en el cambio de contexto y la asignación. Este tipo se encarga de gestionar una lista tan larga de procesos. Un programador a largo plazo decide los trabajos que entran en la cola de procesamiento de los programadores a corto o mediano plazo. Limita los procesos que entran en la cola basándose en diferentes algoritmos de procesamiento.
- Programación a mediano plazo: Para algunos sistemas operativos, un nuevo proceso comienza en una condición de intercambio. Un intercambio ocurre cuando un proceso se elimina de la memoria de acceso aleatorio (RAM) y se añade al disco duro. Este tipo es parte de la función de intercambio. Cuando hay espacio libre en la memoria principal, el programador decide qué proceso puede ser intercambiado. Esto depende de la memoria, la prioridad y otros recursos requeridos. Un programador a mediano plazo a menudo realiza la función de intercambio para procesos intercambiados.
- Programación a corto plazo: Un programador a corto plazo, también llamado despachador, comienza cuando ocurre un nuevo evento. Esto ocurre con más frecuencia y podría interrumpir un proceso en ejecución. Los programadores a corto plazo son rápidos y seleccionan nuevos procesos listos para ejecución, asignando la CPU a uno de ellos, lo que ocurre con mucha frecuencia.
Algoritmos de programación de trabajos
La programación a corto plazo utiliza principalmente algoritmos de programación de trabajos para asignar procesos y optimizar el comportamiento del sistema. A continuación se presentan algunos algoritmos o políticas de programación comunes que impactan qué procesos deben ser asignados a la CPU.
Algoritmo de programación FCFS
El algoritmo de programación de trabajos primero en llegar, primero en ser servido (FCFS) sigue el método de primero en entrar, primero en salir. A medida que los procesos se unen a la cola de listos, el programador elige el trabajo más antiguo en la cola y lo envía para su procesamiento. El tiempo promedio de procesamiento para estos trabajos es comparativamente largo.
A continuación se presentan las ventajas y desventajas de los algoritmos FCFS.
- Ventaja: FCFS añade una sobrecarga mínima al procesador y es mejor para procesos largos.
- Desventaja: Se producen efectos de convoy cuando incluso un trabajo pequeño espera mucho tiempo para pasar al procesamiento, lo que resulta en una menor utilización de la CPU.
Programación SJF
El trabajo más corto primero (SJF), también conocido como el siguiente trabajo más corto (SJN), selecciona un trabajo que requeriría el menor tiempo de procesamiento y lo asigna a la CPU. Este algoritmo asocia cada proceso con la duración del siguiente estallido de CPU. Un estallido de CPU es cuando los procesos utilizan la CPU antes de que ya no esté lista.
Supongamos que dos trabajos tienen el mismo estallido de CPU. El programador entonces usaría el algoritmo FCFS para resolver el empate y mover uno de ellos a la ejecución.
A continuación se presentan las ventajas y desventajas de la programación del trabajo más corto primero.
- Ventaja: El rendimiento es alto ya que los trabajos más cortos son preferidos sobre un proceso de larga duración.
- Desventaja: Registra el tiempo transcurrido que añade una sobrecarga adicional a la CPU. Además, puede resultar en inanición ya que los procesos largos estarán en la cola por mucho tiempo.
Programación por prioridad
La programación por prioridad asocia una prioridad (un número entero) a cada proceso. El que tiene la prioridad más alta se ejecuta primero. Por lo general, se asigna el número entero más pequeño a un trabajo con la prioridad más alta. Si hay dos trabajos con prioridad similar, el algoritmo utiliza FCFS para determinar cuál pasaría al procesamiento.
A continuación se presenta una ventaja y una desventaja de la programación por prioridad.
- Ventaja: Los trabajos prioritarios tienen un buen tiempo de respuesta.
- Desventaja: Los trabajos más largos pueden experimentar inanición.
Programación por turnos
La programación por turnos está diseñada para sistemas de tiempo compartido. Es un programador preventivo basado en el reloj y a menudo se le llama un programador de división de tiempo. Cada vez que ocurre un intervalo de reloj periódico, el programador mueve un trabajo que se está procesando actualmente a la cola de listos. Toma el siguiente trabajo en la cola para su procesamiento en base a primero en llegar, primero en ser servido.
Decidir un quantum de tiempo o un intervalo de tiempo es complicado en este algoritmo de programación. Si el intervalo de tiempo es corto, los trabajos pequeños se procesan más rápido.
A continuación se presentan algunas ventajas y desventajas de la programación por turnos.
- Ventajas: Proporciona un trato justo a todos los procesos, y la sobrecarga del procesador es baja.
- Desventajas: El rendimiento puede ser bajo si el intervalo de tiempo es muy corto.
¿Cómo funciona el software de programación de trabajos?
El software de programación de trabajos empresariales consta de una interfaz de programación de trabajos y un agente de ejecución. Estos elementos juegan un papel vital en la función general de un sistema de programación de trabajos.
A continuación se presentan algunas responsabilidades principales de un programador de trabajos o por lotes:
- Definir tareas para ejecutar con la ayuda de la función de arrastrar y soltar
- Crear una cola y programar trabajos para priorizar la ejecución de tareas
- Asignar trabajos al agente correcto basándose en múltiples factores como prioridad, frecuencia y más
Por otro lado, un agente de ejecución se encarga de los siguientes procesos:
- Enviar tareas para su ejecución
- Monitorear tareas durante la ejecución
Un agente de ejecución se refiere a información técnica como la disponibilidad de la CPU, el tiempo de ejecución proyectado y las dependencias durante la ejecución.
Las empresas pueden automatizar varias tareas con software de programación de cargas de trabajo.
A continuación se presentan algunas de las tareas comunes que los programadores de trabajos automatizan.
- Activación de eventos: Los programadores de trabajos pueden detectar eventos de activación como correos electrónicos, modificaciones de archivos, actualizaciones del sistema, transferencias de archivos y eventos definidos por el usuario. Pueden conectarse a diferentes API para detectar tales activaciones.
- Procesamiento de archivos: Las herramientas de programación de trabajos monitorean los movimientos de archivos. Tan pronto como un archivo de activación entra en el sistema, informa al agente de ejecución para procesar la tarea preestablecida.
- Transferencia de archivos: Los programas de programación de trabajos pueden activar un protocolo de transferencia de archivos (FTP) para iniciar una transferencia segura desde el servidor a Internet o extraer datos de Internet al servidor.
- Registro de eventos: Los sistemas de programación de trabajos generan y registran registros de eventos para el cumplimiento normativo.
Programación de trabajos vs. programación de CPU vs. automatización de cargas de trabajo
Entender estos tres términos es imprescindible al aprender sobre la programación de trabajos.
Tanto la programación de trabajos como la programación de CPU están asociadas con la ejecución de procesos. La programación de trabajos es el mecanismo que decide qué proceso debe ser movido a la cola de listos. Por lo general, los programadores a largo plazo realizan la programación de trabajos.
Por otro lado, la programación de CPU es un mecanismo que determina qué proceso debe ser ejecutado a continuación y asigna la CPU en consecuencia. Los programadores a corto plazo suelen realizar la programación de CPU.
Las herramientas tradicionales de programación de trabajos automatizan tareas para plataformas o aplicaciones específicas. Por otro lado, el software de automatización de cargas de trabajo centraliza los controles de trabajos en múltiples plataformas, aumentando la coordinación entre sistemas operativos y reduciendo conflictos.

Sagar Joshi
Sagar Joshi is a former content marketing specialist at G2 in India. He is an engineer with a keen interest in data analytics and cybersecurity. He writes about topics related to them. You can find him reading books, learning a new language, or playing pool in his free time.