# Processamento em lote

É um tipo de processamento de dados multiprogramavel em fila ou lote (grandes quantidades), sendo o primeiro de seu gênero, implementados na década de 1960 e não dependendo da interação com o usuário. Os programas, também chamados de jobs, eram executados a partir de cartões perfurados, onde poderiam possuir metadados associados ou alguma indicação de prioridade de recursos.

## Vantagens

Benefícios do Processamento em Lote:
* Acelera o processamento de informações em massa;
* Busca evitar a ociosidade do computador, não necessitando de supervisão ou interação do usuário;
* Permite o uso de diferentes prioridades para trabalhos interativos e não interativos;
* Executa apenas uma vez o programa para processar grandes quantias de dados, reduzindo a sobrecarga de sistema.

## Desvantagem

* Ele possui várias, entre elas o usuário não consegue finalizar um processo durante a sua execução, é necessário aguardar até a finalização do processo.

## História

O termo "processamento em lote" se refere a produção de vários itens de uma só vez, fazendo uma produção em massa onde todas as etapas são feitas de uma só vez. Isso vem desde o século XIX, no processamento de dados armazenados pelos cartões perfurados por equipamentos de registro de unidades. Um exemplo é a máquina de tabulação de Herman Hollerith[2]. Os cartões armazenavam um registro com diferentes campos, sendo eles processados um por um pela máquina, de forma igual. O modelo de processamento em lote continuou a ser dominante desde o início da computação eletrônica em meados dos anos 50. O processamento em Lotes pode ser idealizado nos dias de hoje como comandos SQL, analisando colunas, linhas etc. Inicialmente as máquinas que as processavam foram construídas como hard-wired realizando apenas uma função, assim era necessário uma máquina para cada estágio. Pelo final da década de 60 a computação interativa domina por meio das interfaces de terminal, como exemplo em shells Unix. As interfaces gráficas de usuário veio a se tornar algo comum após isso. Na computação não interativa o sistema de processamento em lotes continuou sendo bem utilizado, um bom exemplo disso é o MTS (Michigan Terminal System). A computação não interativa está bem difundida dentro das tecnologias atuais, tanto nos processamentos de dados como para manutenções de sistema, ou a utilização de scripts.
Por exemplo, para processar dados usando dois programas, exemplo1 e exemplo2, é possível obter dados iniciais de uma entrada de arquivo e armazenar o resultado final em um arquivo:
O processamento em lote pode ser substituído por um fluxo: o arquivo intermediário pode ser eliminado com um tubo, alimentando a saída de um passo para o próximo à medida que se torna disponível:

## Modernização

O processamento em lote ainda é utilizado para no final do dia gerar um relatório, ou processamentos de provas como por exemplo o ENEM, sendo bastante utilizados quando se precisa de uma conclusão confiável dentro de determinado prazo e em alguns aplicativos onde é necessário apenas uma única entrada com várias informações.
Aplicações em lote modernas fazem uso de estruturas em lote modernas, como Jem The Bee, Spring Batch ou implementações do JSR 352 [3] escritas para Java, e outras estruturas para outras linguagens de programação, para fornecer tolerância a falhas e escalabilidade necessárias para processamento de alto volume . Para garantir o processamento em alta velocidade, os aplicativos em lote geralmente são integrados a soluções de computação em grade para particionar um trabalho em lote em um grande número de processadores, embora haja desafios de programação significativos ao fazer isso. O processamento em lote de alto volume coloca também demandas particularmente pesadas nas arquiteturas de sistemas e aplicativos. Arquiteturas que apresentam forte desempenho de entrada / saída e escalabilidade vertical, incluindo computadores mainframe modernos, tendem a fornecer melhor desempenho de lote do que as alternativas.As linguagens de script se tornaram populares à medida que evoluíram junto com o processamento em lote.

## Batch window

O processamento em lote ou Batch Window consiste no tempo em que o sistema de computador é capaz de executar trabalhos em lote sem a interferência de sistemas on-line. Muitos dos primeiros sistemas de computador ofereciam apenas processamento em lote, de modo que os trabalhos pudessem ser executados a qualquer momento dentro de um dia de 24 horas. Com o advento do processamento de transações, as solicitações on-line podem ser solicitadas apenas das 9h às 17h, deixando dois turnos disponíveis para o trabalho em lote, neste caso, a processamento do lote seria dezesseis horas. O problema geralmente não é que o sistema de computador é incapaz de suportar trabalho on-line e em lote simultâneo, mas que os sistemas em lote geralmente exigem acesso a dados em um estado consistente, livre de atualizações on-line até que o processamento em lote seja concluído. Um exemplo é o processamento de final de dia de um banco, onde os dados até determinado horário estão na processamento do dia atual e os dados após este horário são jogados para a processamento do próximo dia. Por isso existem os depósitos até as 15h para ter um processamento no mesmo dia. A processamento do lote é ainda mais complicada pelo tempo de execução real de uma atividade em lote específica. Alguns lotes no banco podem levar entre 5 e 9 horas de tempo de execução, juntamente com restrições globais. Algumas atividades do lote são interrompidas ou paralisadas para permitir o uso periódico de bancos de dados no meio do lote (geralmente em somente leitura) para suportar scripts de teste automatizados. executar durante a noite ou terceirizado\testando contratos e recursos de desenvolvimento no exterior. Problemas mais complexos surgem quando as instituições têm atividades em lote que podem ser dependentes, o que significa que ambos os lotes precisam ser concluídos na mesma processamento de lote. Conforme os requisitos de tempo de atividade dos sistemas on-line foram expandidos para suportar a globalização, a Internet e outros requisitos de negócios, a processamento de lote diminuiu e a ênfase foi colocada em técnicas que exigiriam que os dados on-line estivessem disponíveis por um período máximo.

## Uso de processamento em lote comum
### Bancos de Dados

O processamento em lote também é usado para atualizações eficientes do banco de dados em massa e para o processamento automatizado de transações, em comparação com os aplicativos de processamento interativo de transações online (OLTP). A etapa de extração, transformação, carregamento (ETL) no preenchimento de data warehouses é inerentemente um processo em lote na maioria das implementações.

### Imagens

O processamento em lote geralmente é usado para executar várias operações com imagens digitais, como redimensionar, converter, marca d'água ou editar arquivos de imagem.

### Conversões

O processamento em lote também pode ser usado para converter arquivos de computador de um formato para outro. Por exemplo, um trabalho em lotes pode converter arquivos proprietários e legados em formatos padrão comuns para consultas e exibição de usuários finais.

## Ambientes de programação e execução em lote notáveis

Os programas cron, at e batch do Unix (o lote atual é uma variante de at) permitem o agendamento complexo de tarefas. O Windows possui um agendador de tarefas. A maioria dos clusters de computação de alto desempenho usa o processamento em lote para maximizar o uso do cluster.O sistema operacional ou plataforma de mainframe z / OS da IBM tem indiscutivelmente o conjunto de instalações de processamento em lote mais altamente refinado e evoluído devido às suas origens, longa história e evolução contínua. Atualmente, esses sistemas geralmente suportam centenas ou mesmo milhares de tarefas on-line e em lote simultâneas em uma única imagem do sistema operacional. As tecnologias que auxiliam o processamento em lote e on-line simultâneo incluem linguagem Job Control (JCL), linguagens de script como REXX, Job Entry Subsystem (JES2 e JES3), Workload Manager (WLM), Automatic Restart Manager (ARM), Resource Recovery Services (RRS) , Compartilhamento de dados DB2, Parallel Sysplex, otimizações de desempenho exclusivas, como HiperDispatch, arquitetura de canais de E/S e vários outros.

## Referencias

Jump up ^ Austrian, Geoffrey D. (1982). Herman Hollerith: Forgotten Giant of Information Processing. Columbia University Press. pp. 41, 178–179.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 5ª ed. Rio de Janeiro: LTC – Livros Técnicos Científicos, 2013.
[2] FERNANDES, L. M. Sistemas Operacionais. 3ª ed. Fortaleza - CE: EdUECE - Universidade Estadual do Ceará, 2015.
[3] "Batch Applications for the Java Platform". Java Community Process. Retrieved 2015-08-03.
TANEMBAUM, A. S. Sistemas operacionais modernos. 2 ª ed. São Paulo: Prentice Hall, 2003.
DEITEL, H. M.; DEITEL P. J.; CHOFFNES, D. R. Sistemas operacionais. 3ª ed. São Paulo: Pearson Prentice Hall, 2008.
NUNES, J. R. S. Introdução aos sistemas operacionais. Rio de Janeiro: LTC, 1990.
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas operacionais. 3ª ed. Porto Alegre: Instituto de Informática da UFRGS,2004.
STATO F. A. Domínio Linux: do básico aos servidores. 2ª ed. Florianópolis: Visual Books, 2004.
SILBERSCHATZ, A; GALVIN, P. B; GAGNE, G. Fundamentos de sistemas operacionais. 6ª ed. Rio de Janeiro: LTC – Livros Técnicos Científicos, 2002.
TANEMBAUM, A. S. Operating systems: design and implementation. Englewood Cliffs: Prentice Hall, 1997.