Pular para o conteúdo

Por Que Escrever um SO?

Poucos projetos hobby de sistema operacional chegam a um estado de uso prático e de propósito geral. Isso é característico da atividade, não um motivo para desistir: o valor do exercício está menos no resultado final do que no entendimento necessário para produzi-lo.

Um sistema operacional toca em praticamente todas as camadas de um computador: como a CPU inicializa e alterna entre níveis de privilégio, como a memória física se transforma nos espaços de endereçamento virtual que um programa enxerga, como uma interrupção de teclado vira um caractere na tela, como um escalonador decide o que executar em seguida e como um sistema de arquivos transforma bytes em um disco em arquivos e diretórios. Esses assuntos podem ser estudados isoladamente, mas implementar um kernel é o que os conecta: um defeito de gerenciamento de memória que mais tarde corrompe o tratamento de interrupções é um exemplo comum da interdependência entre subsistemas que o estudo isolado não transmite.

O desenvolvimento de kernel também oferece poucas das conveniências típicas da programação de aplicações. Não existe biblioteca padrão de C, alocador de memória ou abstração de processo até que sejam escritos. Essa ausência de infraestrutura pronta é parte do que torna o exercício instrutivo: funcionalidades normalmente dadas como certas se revelam uma série de decisões de design específicas, cada uma das quais precisa ser tomada explicitamente.

O Linux começou como um projeto desse tipo, descrito por Linus Torvalds em 1991 como “apenas um hobby, não vai ser grande nem profissional”. A maioria dos kernels hobby não chega a um escopo comparável, o que não diminui o valor do exercício. Chegar a um prompt de shell, executar um segundo processo ou montar um sistema de arquivos pela primeira vez são marcos comumente citados em projetos dessa escala.