El procesamiento por lotes computarizado es un método para ejecutar programas de software denominados trabajos en lotes de manera automática. Si bien los usuarios deben enviar los trabajos, no se requiere ninguna otra interacción por parte del usuario para procesar el lote. Los lotes pueden ejecutarse automáticamente en horarios programados, así como también en función de la disponibilidad de recursos informáticos.
El término "procesamiento por lotes" tiene su origen en la clasificación tradicional de los métodos de producción como producción por trabajo (producción única), producción por lotes (producción de un "lote" de múltiples artículos a la vez, una etapa a la vez) y producción en flujo (producción en masa, todas las etapas del proceso a la vez).
Las primeras computadoras eran capaces de ejecutar un solo programa a la vez. Cada usuario tenía el control exclusivo de la máquina durante un período de tiempo programado. Llegaban a la computadora con el programa y los datos, a menudo en tarjetas de papel perforadas y cintas magnéticas o de papel, y cargaban su programa, lo ejecutaban y lo depuraban, y se llevaban el resultado una vez terminado.
A medida que las computadoras se hicieron más rápidas, el tiempo de instalación y desmontaje se convirtió en un porcentaje mayor del tiempo disponible en la computadora. Se desarrollaron programas llamados monitores , los precursores de los sistemas operativos , que podían procesar una serie, o "lote", de programas, a menudo desde una cinta magnética preparada fuera de línea. El monitor se cargaba en la computadora y ejecutaba el primer trabajo del lote. Al final del trabajo, recuperaba el control y cargaba y ejecutaba el siguiente hasta que el lote estuviera completo. A menudo, el resultado del lote se escribía en una cinta magnética y se imprimía o perforaba fuera de línea. Algunos ejemplos de monitores fueron Fortran Monitor System de IBM , SOS (Share Operating System) y, finalmente, IBSYS para los sistemas 709x de IBM en 1960. [1] [2]
Las computadoras de tercera generación [ aclaración necesaria ] [3] capaces de multiprogramación comenzaron a aparecer en la década de 1960. En lugar de ejecutar un trabajo por lotes a la vez, estos sistemas pueden tener múltiples programas por lotes ejecutándose al mismo tiempo para mantener el sistema lo más ocupado posible. Uno o más programas pueden estar esperando entrada, uno ejecutándose activamente en la CPU y otros generando salida. En lugar de entrada y salida fuera de línea, los programas llamados spoolers leen trabajos de tarjetas, discos o terminales remotos y los colocan en una cola de trabajos para ser ejecutados. Para evitar bloqueos, el planificador de trabajos necesita saber los requisitos de recursos de cada trabajo (memoria, cintas magnéticas, discos montables , etc.), por lo que se desarrollaron varios lenguajes de script para proporcionar esta información de manera estructurada. Probablemente el más conocido sea el lenguaje de control de trabajos (JCL) de IBM. Los programadores de trabajos seleccionan trabajos para ejecutar según una variedad de criterios, incluyendo prioridad, tamaño de memoria, etc. El procesamiento por lotes remoto es un procedimiento para enviar trabajos por lotes desde terminales remotas, a menudo equipadas con un lector de tarjetas perforadas y una impresora de línea . [4] A veces, se utiliza el multiprocesamiento asimétrico para poner en cola la entrada y salida por lotes para una o más computadoras grandes utilizando un sistema conectado más pequeño y menos costoso, como en el IBM System/360 Attached Support Processor . [a]
El primer sistema de uso general de tiempo compartido, el Compatible Time-Sharing System (CTSS), era compatible con el procesamiento por lotes, lo que facilitó la transición del procesamiento por lotes a la informática interactiva . [5]
Desde finales de los años 1960 en adelante, la computación interactiva, como la que se realizaba a través de interfaces de terminal de computadora basadas en texto (como en los shells de Unix o los bucles de lectura-evaluación-impresión ), y más tarde las interfaces gráficas de usuario se volvieron comunes. La computación no interactiva, tanto los trabajos únicos como la compilación, como el procesamiento de múltiples elementos en lotes, se denominaron retrospectivamente procesamiento por lotes , y el término trabajo por lotes (en su uso temprano a menudo "lote de trabajos") se volvió común. El uso temprano se encuentra particularmente en la Universidad de Michigan , alrededor del Sistema de Terminal de Michigan (MTS). [6]
Aunque el tiempo compartido existía, su uso no era lo suficientemente robusto para el procesamiento de datos corporativos; nada de esto estaba relacionado con los equipos de registro unitario anteriores , que eran operados por humanos.
La computación no interactiva sigue siendo omnipresente en la informática, tanto para el procesamiento general de datos como para las tareas de "mantenimiento" del sistema (utilizando software del sistema ). Hoy en día, un programa de alto nivel (que ejecuta varios programas, con alguna lógica "adherente" adicional) se suele llamar script y se escribe en lenguajes de script , en particular scripts de shell para tareas del sistema; en IBM PC DOS y MS-DOS, esto se conoce como archivo por lotes . Esto incluye computadoras basadas en UNIX , Microsoft Windows , macOS (cuya base es el núcleo BSD Unix) e incluso teléfonos inteligentes . Un script en ejecución, en particular uno ejecutado desde una sesión de inicio de sesión interactiva , a menudo se conoce como un trabajo , pero ese término se usa de manera muy ambigua.
"No existe una contraparte directa del procesamiento por lotes de z/OS en sistemas PC o UNIX. Los trabajos por lotes se ejecutan normalmente en un momento programado o según sea necesario. Quizás la comparación más cercana sea con los procesos ejecutados por un comando at o cron en UNIX, aunque las diferencias son significativas". [7]
Las aplicaciones por lotes siguen siendo fundamentales en la mayoría de las organizaciones, en gran parte porque muchos procesos empresariales comunes son susceptibles de procesamiento por lotes. Si bien los sistemas en línea también pueden funcionar cuando no se desea la intervención manual, por lo general no están optimizados para realizar tareas repetitivas de gran volumen. Por lo tanto, incluso los sistemas nuevos suelen contener una o más aplicaciones por lotes para actualizar la información al final del día, generar informes, imprimir documentos y otras tareas no interactivas que deben completarse de manera confiable dentro de ciertos plazos comerciales.
Algunas aplicaciones son aptas para el procesamiento de flujo, a saber, aquellas que solo necesitan datos de una sola entrada a la vez (no totales, por ejemplo): comience el siguiente paso para cada entrada a medida que completa el paso anterior. En este caso, el procesamiento de flujo reduce la latencia de las entradas individuales, lo que permite que se completen sin esperar a que finalice todo el lote. Sin embargo, muchas aplicaciones requieren datos de todos los registros, en particular cálculos como los totales. En este caso, se debe completar todo el lote antes de obtener un resultado utilizable: los resultados parciales no son utilizables.
Las aplicaciones por lotes modernas hacen uso de marcos de trabajo por lotes modernos como Jem The Bee, Spring Batch [8] o implementaciones de JSR 352 [9] escritos para Java y otros marcos para otros lenguajes de programación, para proporcionar la tolerancia a fallas y la escalabilidad requeridas para el procesamiento de alto volumen. Para garantizar un procesamiento de alta velocidad, las aplicaciones por lotes a menudo se integran con soluciones de computación en cuadrícula para particionar un trabajo por lotes en una gran cantidad de procesadores, aunque existen desafíos de programación significativos para hacerlo. El procesamiento por lotes de alto volumen también impone demandas particularmente pesadas en las arquitecturas de sistemas y aplicaciones. Las arquitecturas que presentan un fuerte rendimiento de entrada/salida y escalabilidad vertical, incluidas las computadoras mainframe modernas , tienden a proporcionar un mejor rendimiento por lotes que las alternativas.
Los lenguajes de script se hicieron populares a medida que evolucionaron junto con el procesamiento por lotes. [10]
Una ventana de lote es "un período de actividad en línea menos intensiva", [11] cuando el sistema informático puede ejecutar trabajos por lotes sin interferencia de, o con, sistemas en línea interactivos.
Los trabajos de fin de día (EOD) de un banco requieren el concepto de corte , donde las transacciones y los datos se cortan para la actividad por lotes de un día en particular ("los depósitos después de las 3:00 p. m. se procesarán al día siguiente").
A medida que los requisitos de funcionamiento de los sistemas en línea se ampliaron para dar soporte a la globalización , Internet y otras necesidades comerciales, la ventana de lotes se redujo [12] [13] y se puso cada vez más énfasis en las técnicas que requerirían que los datos en línea estuvieran disponibles durante una cantidad máxima de tiempo.
El tamaño del lote se refiere a la cantidad de unidades de trabajo que se procesarán en una operación por lote. Algunos ejemplos son:
El sistema operativo o plataforma z/OS para mainframe de IBM tiene posiblemente el conjunto de funciones de procesamiento por lotes más refinado y evolucionado debido a sus orígenes, su larga historia y su continua evolución. Hoy en día, estos sistemas suelen admitir cientos o incluso miles de tareas simultáneas en línea y por lotes dentro de una única imagen del sistema operativo . Las tecnologías que facilitan el procesamiento simultáneo por lotes y en línea incluyen Job Control Language (JCL), lenguajes de script como REXX , Job Entry Subsystem ( JES2 y JES3 ), Workload Manager (WLM), Automatic Restart Manager (ARM), Resource Recovery Services (RRS), IBM Db2 data sharing, Parallel Sysplex , optimizaciones de rendimiento únicas como HiperDispatch , arquitectura de canal de E/S y varias otras.
Los programas Unix cron
, at
, y batch
(hoy batch
es una variante de at
) permiten una programación compleja de trabajos. Windows tiene un programador de trabajos . La mayoría de los clústeres informáticos de alto rendimiento utilizan el procesamiento por lotes para maximizar el uso del clúster. [15]
IBSYS era un sistema operativo para el 7090 que evolucionó a partir de SOS (SHARE Operating System)
CTSS se denominó "compatible" en el sentido de que
FMS
podía ejecutarse en B-core como un usuario "de fondo", casi con la misma eficiencia que en una máquina desnuda, y también porque los programas compilados para FMS por lotes podían cargarse y ejecutarse en el entorno de tiempo compartido "de primer plano" (con algunas limitaciones). ... Esta característica permitió que el Centro de cómputo hiciera la transición del procesamiento por lotes al tiempo compartido de forma gradual
352, la especificación estándar abierta para el procesamiento por lotes de Java. ... Los lenguajes de programación utilizados evolucionaron con el tiempo en función de lo que estaba disponible.
Un sistema de procesamiento por lotes inteligente, compartido y multiusuario mejora la escala... La mayoría de los clústeres
de HPC
están en Linux