O kernel do Linux é frequentemente mencionado como um software de código aberto esmagadoramente extenso. Até o momento deste artigo, a versão mais recente é a v6.5-rc7, composta por aproximadamente 36 milhões de linhas de código. Sem dúvida, o Linux é fruto do árduo trabalho de muitos colaboradores ao longo das décadas.
No entanto, a primeira versão do Linux, a v0.01, era bastante pequena. Consistia apenas em 10.239 linhas de código. Excluindo comentários e linhas em branco, eram apenas 8.670 linhas. É pequeno o suficiente para ser compreendido e representa um bom ponto de partida para aprender sobre o funcionamento interno dos kernels de sistemas operacionais semelhantes ao UNIX.
Ler a v0.01 é realmente uma experiência para programadores entusiastas de código aberto. É como visitar o Museu da História da Computação em Mountain View. Vamos mergulhar em uma análise de alguns pontos desta primeira versão!
A v0.01 possui 66 chamadas de sistema. Aqui está a lista delas:
- Ele oferece suporte à leitura, gravação, criação e exclusão de
arquivos e diretórios. Além disso, outros conceitos fundamentais como chmod(2)
(permissão), chown(2) (proprietário) e pipe(2) (comunicação entre processos)
também são suportados.
- fork(2) e execve(2) estavam presentes. Apenas o formato executável a.out era suportado.
- O conceito de sockets não foi implementado. Portanto, nenhum
suporte de rede.
- Algumas funcionalidades como mount(2) não foram implementadas. Elas apenas retornam ENOSYS.
Há boatos de que Linus Torvald originalmente nomeou seu kernel como "FREAX". O Makefile na Linux v0.01 ainda tinha o seguinte comentário, ele era realmente FREAX!
Hoje, o Linux suporta uma variedade de sistemas de arquivos, como ext4, Btrfs e XFS. E a v0.01? ext2? Não, aqui temos uma dica de include/linux/fs.h:
A resposta é o sistema de arquivos MINIX!
Hoje em dia as principais distro Linux utilizam em sua maioria o sistema ext4, sucessor do ext (extended file system - sistema de arquivos estendido), ext2, ext3, que foram inspirados no sistema de arquivos MINIX.
Sem alardes! Deixe o usuário saber que algo deu errado e congele o sistema. Ponto.
Espero que você tenha aproveitado a leitura do código-fonte do Linux v0.01 e as nossas pontuações de alguns pontos interessantes. Se você estiver interessado na v0.01, faça o download do tarball da v0.01 em kernel.org. Ler o código não é tão difícil, o Linux v0.01 é minimalista, mas muito bem escrito.
Este artigo é uma releitura de uma análise feita pelo programador Seiya Nuta. Se você fala inglês e deseja ler na íntegra, com mais informações e uma análise bem divertida em seu blog,
acesse aqui!