Era os anos 60, quando os "computadores" da época ocupavam facilmente uma sala inteira e tinham uso muito específico. Não existiam computadores pessoais, e nossos smartphones e tablets não existiam nem mesmo nos filmes de ficção científica! Então, a NASA se viu frente ao desafio de construir computadores a bordo das naves Apollo para ajudar no controle de navegação (incluindo pouso e decolagem) e colocá-los no espaço minúsculo das naves do projeto Apollo - aonde, a propósito, qualquer quilograma a mais era regulado pois poderia representar um uso maior de combustível.
Resumindo o artigo (vale a leitura!), e adicionando algumas informações extras, os desafios eram vários:
- Do ponto de vista de hardware, o desafio foi conseguir miniaturizar os computadores existentes. Ainda não tinham sido inventados os microprocessadores, então os computadores de bordo foram desenvolvidos usando circuitos integrados, uma novidade na época;
- Os computadores foram "empacotados" em uma caixa de magnésio-alumínio selada, robusta, em cor dourada, que media cerca de 15cm x 30cm x 61 cm, pesava 70 quilos e consumia cerca de 55 watts;
- E o hardware tinha que ter altíssimo nível de confiabilidade ("reliability", em inglês), para resistir as condições necessárias de vôo no espaço!
- Os computadores do sistema de navegação do Módulo de Comando e do Módulo Lunar possuíam uma "memória fixa" que armazenava os programas (equivalente ao que hoje chamamos de "ROM"), com um tamanho equivalente a 72 Mbytes (ela tinha, na verdade, espaço para 36.864 palavras de 15 bits cada + bit de paridade) e também tinha uma área de "memória apagável" (nossa "RAM") de 4 Kbytes para dados variáveis (2048 "palavras" de 15 bits e bit de paridade);
- Os computadores de bordo tinham que rodar em tempo real e multitarefa, algo inédito na época;
- Os engenheiros tiveram que desenvolver um sequenciador em software para ordenar as tarefas por prioridade;
- Haviam tarefas consideradas "críticas" e outras que eram "secundárias", então quando necessário o computador podia processar somente as tarefas críticas. e ignorar as secundárias. Além disso, haviam tarefas baseadas em tempo (ex: acionar o motor durante a descida em um determinado momento);
- Em caso de reinicio do computador, ele voltava a operar as atividades críticas do exato ponto aonde pararam;
- Os programas eram todos escritos em Assembler, até mesmo porque ainda não existiam linguagens de alto nível. A linguagem C, por exemplo, foi inventado em 1972 (ano da última missão do programa Apollo, a Apollo 17);
- As espaçonaves tinham que utilizar o mínimo possível de linhas de código, devido a limitações de processamento e memória;
- Mesmo assim, o software tinha 6 Mbytes de tamanho, e foi considerado o programa mais complexo da época!
- Na Terra, o controle da missão utilizava um Mainframe da IBM.
O time de engenheiros de software da NASA era liderado por uma mulher, a Margaret Hamilton - na época, com 32 anos.
Para saber mais:
- "How Apollo 11 influenced modern computer software and hardware"
- "Lessons from Apollo 11: Is IT ready to go mission-critical?"
- "Apollo 11: Mission Out of Control" (WIRED)
- "Margaret Hamilton Led the NASA Software Team That Landed Astronauts on the Moon"
- Entrevista muito legal: Margaret Hamilton: ‘They worried that the men might rebel. They didn’t’
- "Computers in Spaceflight: The NASA Experience"
- Relatórios sobre o famoso erro de memória que aconteceu durante a descida do módulo lunar, e quase comprometeu a missão:
Nenhum comentário:
Postar um comentário