# Mainframe

Um mainframe é um computador de grande porte dedicado normalmente ao processamento de um volume enorme de informações. O termo mainframe era utilizado para se referir ao gabinete principal que alojava a unidade central de processamento nos primeiros computadores.
Na década de 50 e 60 dominaram a área de informática em grandes corporações. Os mainframes são capazes de oferecer serviços de processamento a milhares de usuários por meio de milhares de terminais conectados diretamente ou através de uma rede. Foram muito utilizados em guerra para cálculo balístico.
Embora venham perdendo espaço para os servidores de arquitetura PC e servidores Unix, que em geral possuem custo menor, ainda são muito usados em ambientes comerciais e grandes empresas (bancos, empresas de aviação, universidades, etc.).
São computadores que anteriormente ocupavam um grande espaço e necessitavam de um ambiente especial para seu funcionamento, mas atualmente possuem o mesmo tamanho dos demais servidores de grande porte, com menor consumo de energia elétrica. Os mainframes são capazes de realizar operações em grande velocidade e sobre um volume muito grande de dados.
Os mainframes têm a capacidade de executar diferentes sistemas operacionais, sendo seus recursos de hardware virtualizados através de um componente de hardware nativo (PR/SM) ou adicionalmente por software. Desta forma um único mainframe pode substituir dezenas ou mesmo centenas de servidores menores usando Máquinas virtuais.
Os mainframes surgiram com a necessidade das empresas em executar tarefas, que levavam dias para serem concluídas. Era preciso então criar um supercomputador capaz de executar estas tarefas em menos tempo e mais precisamente.

## História

Os mainframes nasceram em 1946 e foram sendo aperfeiçoados. Em 7 de abril de 1964, a IBM apresentou o System/360, mainframe que, na época, foi o maior projeto de uma empresa. Desde então, outras empresas – como a HP e a Burroughs (atual Unisys) – lançaram seus modelos de mainframe. Existem mainframes em operação no mundo inteiro.
Posteriormente a IBM lançou a série /370, e a Burroughs, por sua vez, lançou as máquinas de terceira geração: B-3500 e B-6500, sucedidas pela série 700: B-3700 e B-6700.
No fim da década de 1970, ao mesmo tempo que cresciam os sistemas destinados a grandes corporações, começaram a reduzir o tamanho de uma série das máquinas para chegar a clientes menores: a IBM lançou o S/38; e a Burroughs, a série B-1700 e posteriormente o B-700, máquinas de quarta geração cujo software básico era escrito em Micro Implemented Language e Software Development Language. Foram as primeiras máquinas Burroughs microprogramáveis, o que lhes dava uma flexibilidade ímpar. Estas máquinas marcaram o início do uso de circuitos integrados com tecnologia com integração em média escala.
Atualmente a IBM produz quatro versões de mainframes.
Hoje, segundo especialistas como Laudon (2007), há uma forte tendência de crescimento para este setor, inclusive com as novas versões do Cobol (principal linguagem usada nos Mainframes) usando ambiente gráfico.
A primeira empresa a usar o S/360 no Brasil foi a Bayer, empresa de produtos químicos, em 1966. Outras empresas e órgãos do governo adotaram o mainframe depois, como o governo do Estado de São Paulo, as Usiminas e em Paulo Afonso.
Desde então, outras empresas lançaram seus modelos de mainframe. Além disso, bastante coisa mudou no mundo da tecnologia. Na verdade, boa parte do mercado de informática que existe hoje surgiu depois do primeiro mainframe.
Foi só depois disso, por exemplo, que surgiu o circuito integrado --mais conhecido hoje em dia como chip semicondutor. Sem esses chips, dificilmente teriam surgidos os microprocessadores, que começaram a se tornar populares na década de 80.

## Hardware

Como são computadores com capacidade dimensionada para aplicações que exijam grandes recursos, os mainframes possuem hardwares semelhantes como memórias, processadores, discos rígidos etc., porém o tamanho destes hardwares se diferem dos de computadores de outros portes, como servidores e desktops.

### Processadores

Os mainframes possuem um banco de processadores bastante versátil, capaz de suportar uma troca de processadores, inserção ou remoção sem precisar desligar o mainframe. Estes processadores são como pequenas caixas, com uma extremidade para a interface, que podem ser encaixados neste banco de processadores. Por efetuarem processos continuadamente e com sua capacidade próxima ao limite, ocorre um aquecimento excessivo do processador, sendo preciso ter um bom cooler e um sistema de refrigeração na sala onde está o mainframes.

### Discos (Drives)

Os discos podem ser substituídos sem que precise desligar o mainframe, os mesmos normalmente utilizam tecnologia RAID (Redundant Array of Inexpensive Disks) para gerenciar e armazenar dados. Atualmente os sistemas de discos para Mainframes são fornecidos não mais apenas pela própria IBM, mas também por empresas como Hitachi Data Systems (HDS) e EMC, tornando esse segmento um negócio muito lucrativo devido a grande demanda mundial.

### Fitas

Fitas normalmente são elementos essenciais em um mainframe. Os discos armazenam o sistema operacional e os aplicativos que rodam no mainframe, mas os dados salvos são armazenados em uma fita de backup.

## Sistemas e subsistemas
### Sistemas operacionais

No passado os sistemas operacionais desenvolvidos para mainframe eram criados especialmente para a finalidade de cada modelo, seja para processar textos, bancos de dados, efetuar cálculos ou gerenciar dispositivos. Eram baseados em sistemas próprios, sendo os mais conhecidos : MVS, VSE, VM, TPF (da IBM), OS2200, MCP (da Unisys), GCOS (da Bull), e outros de empresas como Fujitsu, Hitachi e Amdhal. Atualmente os Mainframes IBM suportam sistemas operacionais baseados na evolução destes sistemas como z/OS, z/VM, z/VSE e z/TPF além de distribuições GNU/Linux ou o próprio GNU/Linux.

### Subsistemas MVS

TSO (Time Sharing Option) é responsável pela interação entre o Sistema e o Operador. Possibilita checar as transações e permite a inserção de comandos no terminal para alocar arquivos e rodar programas. Ele funciona com base no ISPF que provê a interface baseada em menus e o acesso as aplicações do sistema.
VTAM (Virtual Telecommunications Access Method) é um subsistema que realiza a comunicação via rede entre uma aplicação e o terminal (ou outra aplicação). Ex.: a conexão entre o sistema do caixa eletrônico e o CICS ou o IMS.
Consoles (MCS Consoles) são dispositivos que estão fisicamente ligados a um sistema MVS que provê a comunicação básica entre os operadores e o sistema operacional.

## Formas de acesso

Existem dois tipos de acessos, o acesso físico e acesso lógico:

### Acesso físico

É feito por meio de placas inseridas na parte posterior no mainframe, podendo ser de vários tipos, como cabos coaxiais, pares trançados e até fibra ótica. Esta placa pode ser ligada diretamente ao terminal ou a um repetidor de sinal, ligado a uma topologia de rede. Normalmente os mainframes estão centralizados em uma rede FDDI, uma rede extremamente rápida devido ao uso de fibra ótica, já que o Mainframe será acessado de vários lugares e não pode tolerar perda da taxa de transferência.

### Acesso Lógico

O acesso lógico pode ser feito de várias formas: por um terminal que emula o sistema operacional do mainframe, chamados de “terminais burros” porque não são capazes de executar nenhuma operação interna; por sistemas operacionais Windows e Linux, em PC’s, através de programas como Client Access, que emulam o SO do mainframe, mas podem suportar várias sessões que trabalham paralelamente competindo pelo processador do mainframe e, por serem apenas um aplicativo, liberam o usuário para acessar outros recursos do PC, como processadores de texto, acesso à Internet etc.

## Mainframes

A distinção entre supercomputadores e mainframes não é clara e direta, mas geralmente falando os supercomputadores são utilizados na solução de problemas em que o tempo de cálculo é um limite, enquanto os mainframes são utilizados em tarefas que exigem alta disponibilidade e envolvem alta taxa de transferência de dados (internos ou externos ao sistema). Como consequência:
* os supercomputadores são mais complexos do ponto de vista do programador, devido ao alto grau de paralelismo na execução das instruções e pelo fato de que, ao contrário dos mainframes, não existe uma camada de abstração que esconde estas questões;
* os supercomputadores são otimizados para realização de tarefas complicadas utilizando principalmente a memória, enquanto os mainframes são otimizados para realizar tarefas que acessam grandes quantidades de informação oriunda de bases de dados;
* normalmente os supercomputadores são utilizados em aplicações científicas e militares, enquanto os mainframes são voltados a aplicações civis, sejam governamentais ou empresariais. A análise de modelos de clima, análise estrutural de proteínas e processamento de filmes digitais são tarefas bastante apropriadas para os supercomputadores. O processamento de cartões de crédito, gerenciamento de contas bancárias, negociações mercantis e processamento de seguro social são tarefas normalmente realizadas por mainframes. (Uma exceção: certas aplicações militares exigem um nível de segurança muito alto, que é uma forte característica dos mainframes);
* as tarefas executadas pelos supercomputadores toleram interrupções (por exemplo, cálculos de modelos de previsão de aquecimento global ou pesquisa acadêmica). Os mainframes executam tarefas que exigem alta disponibilidade, podendo executar serviços continuamente por anos (por exemplo, sistemas de emissão de passagens aéreas ou processamento de cartões de crédito);
* os supercomputadores são construídos para atender uma finalidade específica. Os mainframes são construídos para realizar uma grande variedade de tarefas de execução diária;
* os mainframes suportam totalmente o software antigo (no caso da IBM, inclusive aplicações escritas na década de 1960) convivendo com novas versões. No caso dos supercomputadores, a tendência é ignorar a compatibilidade retroativa de software no projeto de novos sistemas;
* os mainframes possuem um grande número de processadores que auxiliam os processadores centrais. Eles são utilizados em funções de criptografia, gerenciamento de entrada/saída, monitoração do ambiente, manipulação de memória, etc. Devido a esta característica o número de processadores dos mainframes é muito maior do que se esperaria. Os projetos de supercomputadores não incluem este grande número de processadores de uso específico já que eles não adicionam poder de processamento de cálculo.