Tarefa (computação) - Task (computing)

Um pool de thread de amostra (caixas verdes) com filas de tarefas de tarefas em espera (azul) e tarefas concluídas (amarelo), no sentido de tarefa como "unidade de trabalho".

Na computação , uma tarefa é uma unidade de execução ou uma unidade de trabalho. O termo é ambíguo; termos alternativos precisos incluem processo , processo leve , thread (para execução), etapa , solicitação ou consulta (para trabalho). No diagrama adjacente, há filas de trabalho de entrada para fazer e de trabalho concluído de saída e um pool de threads de threads para executar esse trabalho. Tanto as unidades de trabalho em si ou os threads que executam o trabalho podem ser referidos como "tarefas", e estes podem ser referidos respectivamente como solicitações / respostas / threads, tarefas de entrada / tarefas concluídas / threads (conforme ilustrado) ou solicitações / respostas / tarefas.

Terminologia

No sentido de "unidade de execução", em alguns sistemas operacionais , uma tarefa é sinônimo de processo e, em outros, de thread . Na execução não interativa ( processamento em lote ), uma tarefa é uma unidade de execução dentro de um trabalho , com a própria tarefa normalmente um processo. O termo " multitarefa " se refere principalmente ao sentido de processamento - várias tarefas sendo executadas ao mesmo tempo - mas tem nuances do sentido de trabalho de várias tarefas sendo executadas ao mesmo tempo.

No sentido de "unidade de trabalho", em um trabalho (que significa "trabalho único"), uma tarefa pode corresponder a uma única etapa (a própria etapa, não a sua execução), enquanto no processamento em lote as tarefas individuais podem correspondem a uma única etapa de processamento de um único item em um lote ou a uma única etapa de processamento de todos os itens do lote. Em sistemas online, as tarefas geralmente correspondem a uma única solicitação (em arquiteturas de solicitação-resposta ) ou a uma consulta (em recuperação de informações ), seja em um único estágio de tratamento ou em todo o tratamento de todo o sistema.

Exemplos

Na linguagem de programação Java , esses dois conceitos (unidade de trabalho e unidade de execução) são combinados ao trabalhar diretamente com threads, mas claramente distinguidos na estrutura Executors :

Quando você trabalha diretamente com threads, a Threadserve tanto como uma unidade de trabalho quanto como o mecanismo para executá-lo. Na estrutura do executor, a unidade de trabalho e o mecanismo de execução são separados. A abstração chave é a unidade de trabalho, que é chamada de tarefa .

Terminologia IBM

O uso do termo pela IBM foi influente, embora sublinhe a ambigüidade do termo, na terminologia da IBM, "tarefa" tem dezenas de significados específicos, incluindo:

  • Uma unidade de trabalho que representa uma das etapas de um processo.
  • Uma unidade de trabalho a ser realizada por um dispositivo ou processo.
  • Um processo e os procedimentos que o executam.
  • Um conjunto de ações destinadas a atingir um determinado resultado. Uma tarefa é executada em um conjunto de destinos em uma programação específica.
  • Uma unidade de computação. Em uma tarefa paralela, duas ou mais tarefas simultâneas trabalham juntas por meio da passagem de mensagens e da memória compartilhada. Embora seja comum alocar uma tarefa por processador físico ou lógico, os termos "tarefa" e "processador" não são intercambiáveis.
  • Uma atividade que tem valor comercial, é iniciada por um usuário e executada por software.

Especificamente no z / OS , é definido precisamente como:

  • "Em um ambiente de multiprogramação ou multiprocessamento, uma ou mais sequências de instruções tratadas por um programa de controle como um elemento de trabalho a ser realizado por um computador."

O termo tarefa no OS / 360 por meio do z / OS é aproximadamente equivalente a processo leve; as tarefas em uma etapa de trabalho compartilham um espaço de endereço. No entanto, em MVS / ESA por meio de z / OS, uma tarefa ou Service Request Block (SRB) pode ter acesso a outros espaços de endereço por meio de sua lista de acesso.

Kernel Linux

O termo tarefa é usado no kernel do Linux (pelo menos desde a v2.6.13, até e incluindo a v4.8) para se referir a uma unidade de execução, que pode compartilhar vários recursos do sistema com outras tarefas no sistema. Dependendo do nível de compartilhamento, a tarefa pode ser considerada como um processo ou thread convencional . As tarefas são criadas usando a chamada do sistema, onde um usuário pode especificar o nível desejado de compartilhamento de recursos. clone()

História

O termo tarefa para uma parte de um trabalho data da multiprogramação no início dos anos 1960, como neste exemplo de 1961:

O modelo serial tem a capacidade de processar tarefas de um trabalho de maneira independente, semelhante ao funcionamento do IBM 709 .

O termo foi popularizado com a introdução do OS / 360 (anunciado em 1964), que apresentava multiprogramação com um número fixo de tarefas (MFT) e multiprogramação com um número variável de tarefas (MVT). Nesse caso, as tarefas foram identificadas com processos leves, um trabalho consistia em várias tarefas e, posteriormente, as tarefas poderiam ter subtarefas (na terminologia moderna, processos filhos ).

Hoje, o termo "tarefa" é usado de forma muito ambígua. Por exemplo, o Gerenciador de Tarefas do Windows gerencia (em execução) processos , enquanto o Agendador de Tarefas do Windows agenda programas para serem executados no futuro, o que é tradicionalmente conhecido como agendador de trabalhos , e usa a .jobextensão. Em contraste, o termo " fila de tarefas " é comumente usado no sentido de "unidades de trabalho".

Veja também

Referências