En informática, el control de trabajos se refiere al control de múltiples tareas o trabajos en un sistema informático , asegurando que cada uno de ellos tenga acceso a los recursos adecuados para funcionar correctamente, que la competencia por recursos limitados no cause un punto muerto en el que dos o más trabajos no puedan completarse. , resolviendo las situaciones en las que ocurren y terminando los trabajos que, por cualquier motivo, no se están desempeñando como se esperaba.
El control de trabajos se ha desarrollado desde los primeros días de las computadoras donde los operadores humanos eran responsables de configurar, monitorear y controlar cada trabajo, hasta los sistemas operativos modernos , que asumen la mayor parte del trabajo de control del trabajo.
Incluso con un sistema de programación altamente sofisticado, es deseable alguna intervención humana. Los sistemas modernos permiten a sus usuarios detener y reanudar trabajos, ejecutarlos en primer plano (con la capacidad de interactuar con el usuario) o en segundo plano. Los sistemas similares a Unix siguen este patrón .
Historia
Para los primeros desarrolladores de computadoras resultó obvio que sus máquinas rápidas pasaban la mayor parte del tiempo inactivas porque el único programa que estaban ejecutando tenía que esperar mientras un dispositivo periférico lento completaba una operación esencial como leer o escribir datos; en términos modernos, los programas estaban ligados a la E / S , no al cómputo . El almacenamiento en búfer solo proporcionó una solución parcial; eventualmente, un búfer de salida ocuparía toda la memoria disponible o el programa vaciaría un búfer de entrada, y el sistema se vería obligado a esperar a que un dispositivo relativamente lento completara una operación.
Una solución más general es la multitarea . Hay más de un programa o proceso en ejecución en la computadora en un momento dado. Si un proceso no puede continuar, su contexto se puede almacenar y la computadora puede iniciar o reanudar la ejecución de otro proceso. Al principio, bastante poco sofisticado y basado en técnicas de programación especiales, la multitarea pronto se automatizó y generalmente se realizaba mediante un proceso especial llamado programador , que tiene la capacidad de interrumpir y reanudar la ejecución de otros procesos. Normalmente, un controlador para un dispositivo periférico suspende la ejecución del proceso actual si el dispositivo no puede completar una operación de inmediato, y el programador coloca el proceso en su cola de trabajos inactivos. Cuando el periférico completó la operación, el proceso se reactiva. Una suspensión y reanudación similares también pueden aplicarse a la comunicación entre procesos , donde los procesos tienen que comunicarse entre sí de manera asincrónica, pero a veces pueden tener que esperar una respuesta.
Sin embargo, esta programación de bajo nivel tiene sus inconvenientes. Un proceso que rara vez necesita interactuar con periféricos u otros procesos simplemente acapararía los recursos del procesador hasta que se completara o se detuviera mediante la intervención manual. El resultado, particularmente para los sistemas interactivos que ejecutan tareas que interactúan frecuentemente con el mundo exterior, es que el sistema es lento y lento para reaccionar de manera oportuna. Este problema se resuelve asignando un "intervalo de tiempo" a cada proceso, un período de ejecución ininterrumpida después del cual el programador lo coloca automáticamente en la cola de suspensión. A los procesos se les podrían asignar diferentes prioridades, y el planificador podría entonces asignar diferentes partes del tiempo de ejecución disponible a cada proceso sobre la base de las prioridades asignadas.
Este sistema de multitarea preventiva forma la base de la mayoría de los sistemas de control de trabajos modernos.
Procesamiento por lotes
Si bien el procesamiento por lotes puede ejecutarse las 24 horas del día, con o sin operadores de computadora, [1] dado que la computadora es mucho más rápida que una persona, la mayoría de las decisiones se toman antes de que el trabajo comience a ejecutarse y requiere planificación por parte del "programador".
Funciones orientadas a lotes
Aunque puede estar presente un operador de computadora, el procesamiento por lotes está diseñado para operar principalmente sin intervención humana. Por lo tanto, se deben incluir muchos detalles en las instrucciones enviadas:
- qué programas ejecutar;
- qué archivos y / o dispositivos usar para entrada-salida; [2] y
- a veces para indicar también en qué condiciones se debe omitir un paso.
Idiomas de control de trabajos
Lote
Los primeros sistemas operativos y monitores residentes en computadoras eran relativamente primitivos y no eran capaces de una asignación sofisticada de recursos. Por lo general, estas decisiones de asignación las tomaba el operador de la computadora o el usuario que envió un trabajo. El procesamiento por lotes era común y los sistemas informáticos interactivos raros y costosos. Los lenguajes de control de trabajos (JCL) se desarrollaron como instrucciones primitivas, típicamente perforadas en tarjetas en la cabecera de un mazo que contiene datos de entrada, solicitando recursos como asignación de memoria, números de serie o nombres de carretes de cinta magnética para que estén disponibles durante la ejecución, o la asignación de nombres de archivo o dispositivos a los números de dispositivo a los que hace referencia el trabajo. Un ejemplo típico de este tipo de lenguaje, todavía en uso en mainframes, es IBM 's Job Control Language (también conocido como JCL). Aunque el formato de los primeros JCL estaba destinado al uso de tarjetas perforadas , el formato sobrevivió a la transición al almacenamiento en archivos de computadora en disco.
BANG y otros JCL que no son de IBM
Los sistemas por lotes de mainframe que no eran de IBM tenían algún tipo de lenguaje de control de trabajos, se llamara así o no; su sintaxis era completamente diferente a la de las versiones de IBM, pero por lo general proporcionaban capacidades similares. Los sistemas interactivos incluyen " lenguajes de comandos": los archivos de comandos (como los archivos PCDOS ".bat") se pueden ejecutar de forma no interactiva, pero normalmente no proporcionan un entorno tan sólido para ejecutar trabajos desatendidos como JCL. En algunos sistemas informáticos, el lenguaje de control del trabajo y el lenguaje de comando interactivo pueden ser diferentes. Por ejemplo, TSO en sistemas z / OS usa CLIST o Rexx como lenguajes de comandos junto con JCL para el trabajo por lotes. En otros sistemas, estos pueden ser iguales.
Los JCL no IBM de lo que en un momento se conocía como BUNCH (Burroughs, Univac / Unisys, NCR, Control Data, Honeywell), excepto Unisys , son parte del BANG [3] [4] que se ha silenciado.
Interactivo
A medida que se desarrollaron los sistemas de tiempo compartido, surgió el control interactivo del trabajo. Un usuario final en un sistema de tiempo compartido podría enviar un trabajo de forma interactiva desde su terminal remota ( entrada de trabajo remota ), comunicarse con los operadores para advertirles de requisitos especiales y consultar al sistema sobre su progreso. Podría asignar una prioridad al trabajo y terminarlo (matarlo) si lo desea. También podría, naturalmente, ejecutar un trabajo en primer plano, donde podría comunicarse directamente con el programa en ejecución. Durante la ejecución interactiva, podría interrumpir el trabajo y dejar que continúe en segundo plano o matarlo. Este desarrollo de la computación interactiva en un entorno multitarea condujo al desarrollo del shell moderno .
JCL, sistemas de archivos e independencia de dispositivos
La capacidad de no tener que especificar parte o toda la información sobre un archivo o dispositivo para ser utilizada por un programa dado se denomina independencia del dispositivo.
Computación en tiempo real
La multitarea preventiva con control del trabajo asegura que un sistema funcione de manera oportuna la mayor parte del tiempo . En algunos entornos (por ejemplo, operar maquinaria costosa o peligrosa), una fuerte restricción de diseño del sistema es la entrega de resultados oportunos en todas las circunstancias. En tales circunstancias, el control del trabajo es más complejo y el papel de la programación es más importante.
Dado que los sistemas en tiempo real realizan una programación basada en eventos para todas las operaciones en tiempo real, "la secuencia de estas operaciones en tiempo real no está bajo el control inmediato de un operador de computadora o programador". [5]
Sin embargo, un sistema puede tener la capacidad de intercalar tareas en tiempo real y otras tareas menos críticas en el tiempo, donde la línea divisoria podría ser, por ejemplo, una respuesta requerida en una décima de segundo. [5] : p.1 En el caso de los sistemas Xerox RBM (Real-time / Batch Monitor), [6] [7] [8], por ejemplo, existían otras dos capacidades: [5] : p.2
- comandos del operador de la computadora ("entrada de teclado no solicitada");
- secuencias de trabajos en segundo plano ( trabajos por lotes ).
enlaces externos
- Control de trabajos: la biblioteca GNU C
Ver también
- Lenguaje de mando
- Idioma de control de trabajos
- Control de trabajos (Unix)
Referencias
- ^ "Mainframe trabajando fuera de horario: procesamiento por lotes" .
- ^ y muchos más detalles, como si el archivo se conservará o eliminará, el espacio máximo en disco al que puede crecer, el nombre de una cinta que se premontará
- ^ lo que Xerox Data Systems y su compra de SDS llamaron su signo de exclamación"Lista de sistemas operativos" .
- ^ el SLASH SLASH de su JCL, llamado SLANT SLANT por algunos. El resto de esta nota a pie de página es un recordatorio, dedicado a la primera persona de quien escuché a SLANT SLANT, el difunto operador senior de computadoras y oficial militar retirado que enseñó muchas lecciones orientadas a las personas. Dejemos que esto se agregue a sus citas.
- ^ a b c Xerox Real-Time Batch Monitor (RBM), computadoras Sigma 2/3, Guía del usuario (PDF) . Xerox Corporation . Consultado el 16 de febrero de 2017 .
- ^ una familia: Scientific Data Systems SDS Sigma 2 y 3, renombrado / combinado como Xerox Data Systems adquirido por Xerox, Xerox 530.
- ^ La SDS Sigma 5, 6 y 7 se convirtió en la Xerox 560
- ^ XOs SIGMR 5/7 MONITOR DE LOTES EN TIEMPO REAL (RBM-2) (PDF) . Consultado el 16 de febrero de 2017 .