
En informática , una tarea es una unidad de ejecución o una unidad de trabajo. El término es ambiguo; entre los términos alternativos más precisos se incluyen proceso , proceso ligero , hilo (para ejecución), paso , solicitud o consulta (para trabajo). En el diagrama adjunto, se muestran colas de trabajo entrante y trabajo saliente completado, así como un grupo de hilos para realizar dicho trabajo. Tanto las unidades de trabajo como los hilos que las ejecutan pueden denominarse "tareas", y estas pueden denominarse respectivamente solicitudes/respuestas/hilos, tareas entrantes/tareas completadas/hilos (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 proceso , y en otros, de hilo . En la ejecución no interactiva ( procesamiento por lotes ), una tarea es una unidad de ejecución dentro de un trabajo , [ 1 ] [ 2 ] siendo la tarea en sí un proceso. El término " multitarea " se refiere principalmente al sentido de procesamiento (múltiples tareas que se ejecutan al mismo tiempo), pero tiene matices del sentido de trabajo (múltiples tareas que se realizan al mismo tiempo).
En el sentido de "unidad de trabajo", en un trabajo (que significa "una sola tarea") una tarea puede corresponder a un solo paso (el paso en sí, no su ejecución), mientras que en el procesamiento por lotes las tareas individuales pueden corresponder a un solo paso del procesamiento de un solo elemento en un lote, o a un solo paso del procesamiento de todos los elementos del lote. En los sistemas en línea, las tareas suelen corresponder a una sola solicitud (en arquitecturas de solicitud-respuesta ) o a una consulta (en recuperación de información ), ya sea una sola etapa de procesamiento o el procesamiento de todo el sistema.
Ejemplos
En el lenguaje de programación Java , estos dos conceptos (unidad de trabajo y unidad de ejecución) se confunden cuando se trabaja directamente con hilos, pero se distinguen claramente en el marco de trabajo Executors :
Cuando se trabaja directamente con hilos, un hilo
Threadsirve tanto como unidad de trabajo 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 que hace IBM del término ha sido influyente, aunque subraya la ambigüedad del término, en la terminología de IBM, "tarea" tiene docenas de significados específicos, entre ellos: [ 4 ]
- Una unidad de trabajo que representa uno de los pasos de un proceso.
- Una unidad de trabajo que debe ser realizada por un dispositivo o proceso.
- Un proceso y los procedimientos que lo llevan a cabo.
- Un conjunto de acciones diseñadas para lograr un resultado específico. Una tarea se realiza sobre un conjunto de objetivos según un cronograma determinado.
- Unidad de cálculo. En un trabajo paralelo, dos o más tareas concurrentes trabajan juntas mediante el paso de mensajes y la memoria compartida. Si bien 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, es iniciada por un usuario y es realizada por 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 del trabajo que debe realizar un ordenador."
En OS/360 y z/OS, el término tarea es prácticamente equivalente a un proceso ligero; las tareas de un paso de trabajo comparten un espacio de direcciones. Sin embargo, en MVS/ESA y z/OS, una tarea o un bloque de solicitud de servicio (SRB) puede tener acceso a otros espacios de direcciones mediante su lista de acceso.
núcleo de Linux
El término tarea se utiliza en el kernel de Linux (al menos desde la versión 2.6.13, [ 6 ] hasta la versión 4.8 inclusive [ 7 ] ) para referirse a una unidad de ejecución, que puede compartir diversos recursos del sistema con otras tareas. Según el nivel de compartición, la tarea puede considerarse un hilo o proceso convencional . Las tareas se crean mediante la clone()llamada al sistema, [ 8 ] donde el usuario puede especificar el nivel deseado de compartición de recursos.
Historia
El término "tarea" para referirse a una parte de un trabajo se remonta a la multiprogramación de principios de la década de 1960, como en este ejemplo de 1961:
El modelo serial 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 multiprogramación con un número fijo de tareas (MFT) y multiprogramación con un número variable de tareas (MVT). En este caso, las tareas se identificaban con procesos ligeros, un trabajo constaba de varias tareas y, posteriormente, las tareas podían tener subtareas (en terminología moderna, procesos hijos ).
Actualmente, el término "tarea" se utiliza de forma muy ambigua. Por ejemplo, el Administrador de tareas de Windows gestiona los procesos (en ejecución) , mientras que el Programador de tareas de Windows programa la ejecución de programas en el futuro (lo que tradicionalmente se conoce como planificador de trabajos ) y utiliza la .jobextensión . Por el contrario, el término " cola de tareas " se utiliza comúnmente en el sentido de "unidades de trabajo".
Véase también
Referencias
- ↑ "¿Qué es una 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 . Java eficaz (Tercera ed.). pág . 272 , artículo 68.
- ↑ Terminología de IBM: T
- ↑ Glosario de términos y abreviaturas de z/OS : T
- ↑ " " . GitHub.com . Linus Torvalds. 29 de agosto de 2005.
include/linux/sched.h - ↑ " " . GitHub.com . Linus Torvalds. 3 de octubre de 2016.
include/linux/sched.h - ↑ "clone, __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 computadoras electrónicas . pág. 154 .
- Terminología informática