En informática , un trabajo es una unidad de trabajo o unidad de ejecución (que realiza dicho trabajo). Un componente de un trabajo (como unidad de trabajo) se denomina tarea o paso (si es secuencial, como en un flujo de trabajo ). Como unidad de ejecución, un trabajo puede identificarse concretamente con un único proceso , que puede a su vez tener subprocesos ( procesos hijos ; siendo el proceso correspondiente al trabajo el proceso padre ) que realizan las tareas o pasos que comprenden el trabajo del trabajo; o con un grupo de procesos ; o con una referencia abstracta a un proceso o grupo de procesos, como en el control de trabajos de Unix .
Los trabajos se pueden iniciar de forma interactiva, como desde una línea de comandos , o programarse para una ejecución no interactiva mediante un programador de trabajos , y luego controlarse mediante un control de trabajos automático o manual . Los trabajos que tienen una entrada finita pueden completarse, con éxito o sin éxito, o no completarse y eventualmente terminarse. Por el contrario, el procesamiento en línea, como el que realizan los servidores, tiene una entrada abierta (atienden solicitudes mientras se ejecutan) y, por lo tanto, nunca se completan, solo se detienen cuando se terminan (a veces llamado "cancelado"): el trabajo de un servidor nunca termina.
El término "trabajo" tiene un significado tradicional como "pieza de trabajo", del inglés medio "jobbe of work", y se utiliza como tal en la fabricación, en la frase " producción por trabajo ", que significa "producción personalizada", donde se contrasta con la producción por lotes (muchos artículos a la vez, un paso a la vez) y la producción en flujo (muchos artículos a la vez, todos los pasos al mismo tiempo, por artículo). Tenga en cuenta que estas distinciones se han vuelto borrosas en la informática, donde se encuentra el término oxímoron " trabajo por lotes ", y se utiliza ya sea para un trabajo único o para una ronda de " procesamiento por lotes " (el mismo paso de procesamiento aplicado a muchos artículos a la vez, originalmente tarjetas perforadas ).
En este sentido de "trabajo", una computadora programable realiza "trabajos", ya que cada uno puede ser diferente del anterior. El término "trabajo" también es común en la investigación de operaciones , antes de su uso en informática, en usos como la programación de talleres de trabajo (véase, por ejemplo, Baker & Dzielinski (1960) y referencias al respecto de toda la década de 1950, incluidos varios " Informes del Departamento de Investigación de Sistemas " del Centro de Investigación de IBM). Esta analogía se aplica a los sistemas informáticos, donde los recursos del sistema son análogos a las máquinas en un taller de trabajo , y el objetivo de la programación es minimizar el tiempo total desde el principio hasta el final ( makespan ). El término "trabajo" para el trabajo informático data de mediados de la década de 1950, como en este uso de 1955:
"Luego se escribe el programa para un trabajo individual, llamando a estas subrutinas por su nombre siempre que sea necesario, evitando así reescribirlas para problemas individuales". [1]
El término continuó usándose ocasionalmente, como en el caso del IBM 709 (1958), y se utilizó más a principios de los años 1960, como en el caso del IBM 7090 , con un uso generalizado a partir del lenguaje de control de trabajos de OS/360 (anunciado en 1964). Un uso temprano estándar de "trabajo" es para compilar un programa a partir del código fuente, ya que se trata de una tarea única. El programa compilado puede luego ejecutarse en lotes de datos.