En informática , una tarea es una unidad de ejecución o una unidad de trabajo. El término es ambiguo; Los términos alternativos precisos incluyen proceso , proceso ligero , subproceso (para ejecución), paso , solicitud o consulta (para trabajo). En el diagrama adyacente, hay colas de trabajo entrante por hacer y trabajo finalizado saliente, y un grupo de subprocesosde hilos para realizar este trabajo. Las unidades de trabajo en sí mismas o los subprocesos que realizan el trabajo pueden denominarse "tareas", y estos pueden denominarse, respectivamente, solicitudes / respuestas / subprocesos, tareas entrantes / tareas completadas / subprocesos (como se ilustra) o solicitudes / respuestas / tareas.
Terminología
En el sentido de "unidad de ejecución", en algunos sistemas operativos , una tarea es sinónimo de un proceso [ cita requerida ] , y en otros con un hilo [ cita requerida ] . En la ejecución no interactiva ( procesamiento por lotes ), una tarea es una unidad de ejecución dentro de un trabajo , [1] [2] y la tarea en sí suele ser un proceso. El término " multitarea " se refiere principalmente al sentido de procesamiento (varias tareas que se ejecutan al mismo tiempo), pero tiene matices del sentido de trabajo de varias tareas que se realizan al mismo tiempo.
En el sentido de "unidad de trabajo", en un trabajo (que significa "trabajo único") una tarea puede corresponder a un solo paso (el paso en sí, no la ejecución del mismo), mientras que en el procesamiento por lotes las tareas individuales pueden corresponden a un solo paso de procesamiento de un solo artículo en un lote, o a un solo paso de procesamiento de todos los artículos en el lote. En los sistemas en línea, las tareas normalmente corresponden a una sola solicitud (en arquitecturas de solicitud-respuesta ) o una consulta (en la recuperación de información ), ya sea una sola etapa de manejo o todo el manejo de todo el sistema.
Ejemplos de
En el lenguaje de programación Java , estos dos conceptos (unidad de trabajo y unidad de ejecución) se combinan cuando se trabaja directamente con subprocesos, pero se distinguen claramente en el marco de Executors :
Cuando trabaja directamente con subprocesos, a
Thread
sirve como unidad de trabajo y como mecanismo para ejecutarlo. En el marco del ejecutor, la unidad de trabajo y el mecanismo de ejecución están separados. La abstracción clave es la unidad de trabajo, que se denomina tarea . [3]
Terminología de IBM
El uso del término por parte de IBM ha sido influyente, aunque subraya la ambigüedad del término, en la terminología de IBM, "tarea" tiene docenas de significados específicos, que incluyen: [4]
- Unidad de trabajo que representa uno de los pasos de un proceso.
- Unidad de trabajo que debe realizar un dispositivo o proceso.
- Un proceso y los procedimientos que ejecutan el proceso.
- Un conjunto de acciones diseñadas para lograr un resultado particular. Una tarea se realiza en un conjunto de objetivos en un horario específico.
- Unidad de cálculo. En un trabajo paralelo, dos o más tareas simultáneas trabajan juntas a través del paso de mensajes y la memoria compartida. Aunque es común asignar una tarea por procesador físico o lógico, los términos "tarea" y "procesador" no son intercambiables.
- Una actividad que tiene valor comercial, la inicia un usuario y la realiza un software.
En z / OS específicamente, se define precisamente como: [5]
- "En un entorno de multiprogramación o multiprocesamiento, una o más secuencias de instrucciones tratadas por un programa de control como un elemento de trabajo a realizar por una computadora".
El término tarea en OS / 360 a través de z / OS es aproximadamente equivalente a proceso ligero; las tareas en un paso de trabajo comparten un espacio de direcciones. Sin embargo, en MVS / ESA a través de z / OS, una tarea o bloque de solicitud de servicio (SRB) puede tener acceso a otros espacios de direcciones a través de su lista de acceso.
Kernel de Linux
El término tarea se usa en el kernel de Linux (al menos desde v2.6.13, [6] hasta e incluyendo v4.8 [7] ) para referirse a una unidad de ejecución, que puede compartir varios recursos del sistema con otras tareas en el sistema. Dependiendo del nivel de intercambio, la tarea puede considerarse como un hilo o proceso convencional . Las tareas se crean mediante la clone()
llamada al sistema, [8] donde un usuario puede especificar el nivel deseado de uso compartido de recursos.
Historia
El término tarea para una parte de un trabajo data de la multiprogramación a principios de la década de 1960, como en este ejemplo de 1961:
El modelo en serie tiene la capacidad de procesar tareas de un trabajo de manera independiente, similar al funcionamiento del IBM 709 . [9]
El término se popularizó con la introducción de OS / 360 (anunciado en 1964), que incluía la multiprogramación con un número fijo de tareas (MFT) y la multiprogramación con un número variable de tareas (MVT). En este caso, las tareas se identificaron con procesos livianos, un trabajo constaba de una serie de tareas y, más tarde, las tareas podían tener subtareas (en terminología moderna, procesos secundarios ).
Hoy en día, el término "tarea" se utiliza de forma muy ambigua. Por ejemplo, el Administrador de tareas de Windows administra los procesos (en ejecución) , mientras que el Programador de tareas de Windows programa los programas para que se ejecuten en el futuro, lo que tradicionalmente se conoce como un programador de trabajos , y usa la .job
extensión. Por el contrario, el término " cola de tareas " se utiliza comúnmente en el sentido de "unidades de trabajo".
Ver también
Referencias
- ^ "¿Qué es tarea? - Definición de WhatIs.com" . WhatIs.com . Consultado el 11 de junio de 2015 .
- ^ "¿Qué son los procesos informáticos?" . liutilities.com . Consultado el 11 de junio de 2015 .
- ^ Bloch, Joshua . Effective Java (Tercera ed.). pag. pag. 272 , artículo 68.
- ^ Terminología de IBM: T
- ^ Glosario de términos y abreviaturas de z / OS : T
- ^ " include/linux/sched.h" . GitHub.com . Linus Torvalds. 29 de agosto de 2005.
- ^ " include/linux/sched.h" . GitHub.com . Linus Torvalds. 3 de octubre de 2016.
- ^ "clon, __clone2 - crea un proceso hijo" . Manual del programador de Linux . 17 de julio de 2016 . Consultado el 6 de noviembre de 2016 .
- ^ James Larrimore McKenney (1961). Multiprogramación simultánea de ordenadores electrónicos . pag. 154 .