Muita gente (na verdade não muitas, só os muito nerds) tem curiosidade de saber qual é o sistema operacional usado pela Curiosity em sua missão em Marte. O fato é que o trabalho de controlar uma reentrada de uma cápsula requer muito mais agilidade do que sistemas operacionais como Linux, Mac ou Windows podem prover. Não pode haver tela azul ou kernel panic no espaço.
Um dos poucos Sistema Operacional de Tempo Real que atende as especificações é o vxWorks, um sistema de microkernel de código fechado com 27 anos de maturidade, desenvolvido pela Wind River, uma subsidiária da Intel. Roda em mais de 1 bilhão de sistemas embarcados, inclusive nos roteadores AirPort Extreme da Apple e no humilde Linksys WRT54G.
Desde 1994 quase tudo que a NASA lança, incluindo os 3 robôs anteriores em Marte, roda vxWorks. O sistema também é usado na cápsula Dragon, que como todo mundo viu recentemente, funciona redondinha.
Claro, o Sistema Operacional é só parte do pacote. Há a questão do software. O vídeo da NASA fala de 700 mil linhas de código para a manobra de EDL (Entrada, Descida e Pouso). Quanto isso representa, do total das subrotinas da Curiosity?
Segundo dados fornecidos por um workshop em software de naves espaciais, a Curiosity tem no total 2,5 milhões de linhas de código. No caso, C. 2,5 milhões de linhas parece muito, mas o conjunto de softwares da Apollo 11 tinha 145 mil. O ônibus espacial voava (e caía com estilo, na volta) com 400 mil linhas. O Windows XP tem 45 milhões de linhas, o OS X 10.4 tem 86 milhões e mesmo o Android nada menos que 12 milhões.
Com esses 2,5 milhões de linhas o vxWorks mantém a Curiosity funcionando, com todas as constantes checagens de segurança, diagnósticos e logs, além das tarefas normais. São mais de 160 threads, algumas com capacidade de disparar alarmes e assumir prioridade máxima em frações de pentelhonésimos de segundo, como as que controlam a temperatura dos vários componentes.
A equipe que desenvolveu o software da Curiosity é impressionantemente pequena. Foram apenas 30 programadores, e uma equipe de teste e debug de 10 pessoas. Boa parte do software é baseado em um núcleo de rotinas com 15 anos de idade, usado em outros equipamentos da NASA.
Interessante!