El procesamiento por lotes computarizado es un método para ejecutar programas de software llamados trabajos en lotes automáticamente. 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 se pueden ejecutar automáticamente en horarios programados y también dependiendo de la disponibilidad de recursos informáticos.
El término "procesamiento por lotes" se origina 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 sólo un 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 programas y datos, a menudo en tarjetas de papel perforadas y cintas magnéticas o de papel, y cargaban su programa, lo ejecutaban y depuraban, y llevaban la salida cuando terminaban.
A medida que las computadoras se volvieron más rápidas, el tiempo de instalación y desmontaje pasó a ser un porcentaje mayor del tiempo disponible en la computadora. Se desarrollaron programas llamados monitores , precursores de los sistemas operativos , que podían procesar una serie, o "lote", de programas, a menudo a partir de cintas magnéticas preparadas fuera de línea. El monitor se cargaría en la computadora y ejecutaría el primer trabajo del lote. Al final del trabajo, recuperaría el control, cargaría y ejecutaría el siguiente hasta que se completara el lote. A menudo, el resultado del lote se escribía en una cinta magnética y se imprimía o perforaba fuera de línea. 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 [ se necesita aclaración ] [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 varios 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, programas llamados spoolers leen trabajos de tarjetas, discos o terminales remotos y los colocan en una cola de trabajos para ejecutarlos. Para evitar interbloqueos, el programador de trabajos necesita conocer los requisitos de recursos de cada trabajo: memoria, cintas magnéticas, discos montables , etc., por lo que se desarrollaron varios lenguajes de programación para proporcionar esta información de forma estructurada. Probablemente el más conocido sea el lenguaje de control de trabajos (JCL) de IBM. Los programadores de trabajos seleccionan los trabajos para ejecutar de acuerdo con una variedad de criterios, incluida la prioridad, el tamaño de la memoria, etc. El lote 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, el multiprocesamiento asimétrico se utiliza para poner en cola la entrada y salida por lotes de una o más computadoras grandes utilizando un sistema adjunto más pequeño y menos costoso, como en el procesador de soporte adjunto IBM System/360 . [a]
El primer sistema de tiempo compartido de propósito general, el Sistema de tiempo compartido compatible (CTSS), era compatible con el procesamiento por lotes. Esto facilitó la transición del procesamiento por lotes a la informática interactiva . [5]
Desde finales de la década de 1960 en adelante, la informática interactiva, como a través de interfaces de terminales de computadora basadas en texto (como en los shells de Unix o los bucles de lectura, evaluación e impresión ), y más tarde las interfaces gráficas de usuario se volvieron comunes. El cálculo no interactivo, tanto trabajos únicos como la compilación y el procesamiento de múltiples elementos en lotes, pasó a denominarse retrospectivamente procesamiento por lotes , y el término trabajo por lotes (en su uso inicial, a menudo "lote de trabajos") se volvió común. El uso temprano se encuentra particularmente en la Universidad de Michigan , alrededor del Michigan Terminal System (MTS). [6]
Aunque el tiempo compartido existía, su uso no era lo suficientemente sólido para el procesamiento de datos corporativos; Nada de esto estaba relacionado con el equipo de registro de la unidad anterior , que era operado 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 el software del sistema ). Un programa de alto nivel (que ejecuta múltiples programas, con alguna lógica de "pegamento" adicional) hoy en día se denomina con mayor frecuencia script y se escribe en lenguajes de scripting , particularmente scripts de shell para tareas del sistema; en IBM PC DOS y MS-DOS esto se conoce como archivo por lotes . Eso incluye computadoras basadas en UNIX , Microsoft Windows , macOS (cuya base es el kernel BSD Unix) e incluso teléfonos inteligentes . Un script en ejecución, particularmente uno ejecutado desde una sesión de inicio de sesión interactiva , a menudo se conoce como 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 generalmente se ejecutan 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 críticas en la mayoría de las organizaciones, en gran parte porque muchos procesos comerciales 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, normalmente no están optimizados para realizar tareas repetitivas y de gran volumen. Por lo tanto, incluso los sistemas nuevos suelen contener una o más aplicaciones por lotes para actualizar 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 susceptibles de procesamiento de flujo, es decir, aquellas que solo necesitan datos de una única 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 completarlas 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 utilizan marcos por lotes modernos como Jem The Bee, Spring Batch [8] o implementaciones de JSR 352 [9] escritas para Java y otros marcos para otros lenguajes de programación, para proporcionar la tolerancia a fallas y la escalabilidad necesarias para alta -procesamiento de volumen. Para garantizar un procesamiento de alta velocidad, las aplicaciones por lotes a menudo se integran con soluciones de computación grid para dividir un trabajo por lotes en una gran cantidad de procesadores, aunque existen importantes desafíos de programación al hacerlo. El procesamiento por lotes de gran volumen también impone exigencias particularmente altas a las arquitecturas de sistemas y aplicaciones. Las arquitecturas que presentan un sólido rendimiento de entrada/salida y escalabilidad vertical, incluidas las computadoras centrales modernas , tienden a proporcionar un mejor rendimiento por lotes que las alternativas.
Los lenguajes de secuencias de comandos se hicieron populares a medida que evolucionaron junto con el procesamiento por lotes. [10]
Una ventana por lotes 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 interactivos en línea.
Los trabajos de fin de día (EOD) de un banco requieren el concepto de transición , 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 p. m. se procesarán al día siguiente").
A medida que los requisitos para el tiempo de actividad de los sistemas en línea se ampliaron para soportar 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 técnicas que requerirían que los datos en línea estuvieran disponibles durante un período de tiempo máximo. .
El tamaño del lote se refiere al número de unidades de trabajo que se procesarán dentro de una operación por lotes. Algunos ejemplos son:
El sistema operativo o plataforma IBM mainframe z/OS tiene posiblemente el conjunto de instalaciones 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 de sistema operativo . Las tecnologías que ayudan al procesamiento simultáneo por lotes y en línea incluyen el lenguaje de control de trabajos (JCL), lenguajes de secuencias de comandos como REXX , subsistema de entrada de trabajos ( JES2 y JES3 ), administrador de carga de trabajo (WLM), administrador de reinicio automático (ARM) y servicios de recuperación de recursos (RRS). , uso compartido de datos de IBM Db2 , Parallel Sysplex , optimizaciones de rendimiento únicas como HiperDispatch , arquitectura de canal de E/S y muchos otros.
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 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 fue llamado "compatible" en el sentido de que
FMS
podía ejecutarse en B-core como un usuario "en segundo plano", casi tan eficientemente como en una máquina básica, 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ó al Centro de Cómputo hacer la transición de lote a tiempo compartido de manera gradual
JSR 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