51 pontos por GN⁺ 2025-03-22 | 1 comentários | Compartilhar no WhatsApp
  • Um guia prático sobre como desenvolver diretamente um sistema operacional x86
  • Escrito para fornecer detalhes técnicos sem revelar informação demais por meio de exemplos de código ou amostras
  • Não explica a teoria de sistemas operacionais nem como um sistema operacional específico funciona
  • Os capítulos iniciais são explicados de forma detalhada e concreta para ajudar o leitor a se acostumar rapidamente a escrever código
  • Os capítulos finais descrevem de forma geral os conceitos e requisitos, incentivando o leitor a realizar a implementação e o design por conta própria
  • Se for necessário estudar teoria de sistemas operacionais, recomenda-se Modern Operating Systems de Andrew Tanenbaum

Conteúdo principal dos capítulos

  • Capítulos iniciais
    • Capítulos 2–3: configuração do ambiente de desenvolvimento e boot do kernel do SO em uma máquina virtual → início da escrita de código em C
    • Capítulo 4: saída na tela e saída pela porta serial
    • Capítulo 5: segmentação
    • Capítulo 6: interrupções e tratamento de entrada
  • Etapas após o desenvolvimento de um kernel funcional
    • Capítulo 7: preparação para suporte a aplicações em modo usuário
    • Capítulos 8–9: configuração de memória virtual com paginação
    • Capítulo 10: alocação de memória
    • Capítulo 11: execução de aplicações de usuário
  • Tópicos avançados
    • Capítulo 12: sistema de arquivos
    • Capítulo 13: chamadas de sistema
    • Capítulo 14: multitarefa

Contexto do livro e processo de desenvolvimento

  • Este livro e o kernel do SO foram desenvolvidos por meio de um curso avançado individual do Royal Institute of Technology, na Suécia
  • Os autores já haviam cursado anteriormente uma disciplina de teoria de SO, mas tinham pouca experiência prática no desenvolvimento de kernels
  • Eles criaram um novo curso e escreveram este livro para implementar a teoria na prática e aprofundar sua compreensão
  • A arquitetura x86 foi, por muito tempo, a arquitetura de hardware mais amplamente usada, e há uma enorme quantidade de material de referência e emuladores disponíveis
  • A documentação sobre os detalhes do hardware muitas vezes era complexa e difícil de entender

Forma de desenvolvimento

  • Trabalho em tempo integral por cerca de 6 semanas
  • Implementação em pequenas etapas e realização de testes manuais a cada etapa → mais facilidade para identificar a causa dos bugs
  • A maior parte do código foi escrita com pair programming → expectativa de redução de bugs

Público-alvo

  • Adequado para leitores com os seguintes conhecimentos prévios:
    • familiaridade com UNIX/Linux e programação de sistemas
    • familiaridade com a linguagem C
    • entendimento de sistemas computacionais e notação hexadecimal, entre outros
  • Iniciantes também podem usá-lo como ferramenta de estudo, mas o nível de dificuldade é alto

1 comentários

 
GN⁺ 2025-03-22
Comentários do Hacker News
  • Adoro osdev. Não sei qual é o objetivo final, mas é muito legal poder criar o que você quer

    • Quando consegui fazer as interrupções básicas do x86 e as chamadas de sistema funcionarem, tudo passou a fazer sentido
    • Quando você começa com chamadas de sistema, o mundo é seu
    • Recomendo fortemente mexer com SOs como hobby
    • Usei isso como uma oportunidade para aprender Rust e ganhei mais do que esperava
    • Agora já estou relativamente acostumado com Rust e consigo provocar mais falhas duplas e triplas do que a maioria das pessoas
  • Muita gente recomenda sua alternativa favorita, mas eu ainda sou um grande fã do Project Oberon

    • Pode não ser adequado para a computação de 2025, mas é um pequeno SO gráfico escrito em uma linguagem de sistema com segurança de memória
    • Há conteúdo suficiente para aprender sobre desenvolvimento de SO
    • Site do Project Oberon
  • Este livro tem a falha clássica dos tutoriais de osdev

    • Há muitas explicações sobre detalhes do x86, mas quase nada sobre osdev
    • Detalhes do x86 não são osdev
    • Isso é uma parte extremamente pequena do que um SO básico precisa lidar
  • Meu livro favorito sobre SO é Operating Systems: Three Easy Pieces

    • Fala mais sobre como funciona do que sobre desenvolvimento
    • Está disponível gratuitamente em HTML e PDF, e também vendem a versão impressa
    • Site do OSTEP
  • Obrigado! Isso parece um ótimo material sobre o tema

    • Queria ainda ter o código-fonte do "SO" que fiz quando era adolescente
    • Escrevi um bootloader MBR, fiz a transição para o modo protegido, mostrei caracteres na tela e até entrada de teclado
    • Recomendo muito se você estiver procurando um desafio divertido
  • Este comentário traz uma nostalgia dos anos 2000

    • Havia um site chamado planet-source-code.com que era popular na comunidade de desenvolvedores
    • Havia centenas de mini sistemas operacionais escritos pelos membros
    • A maioria tinha bootloaders escritos em C/C++ e assembly, compilados com Mingw32, e inicializava a partir de disquetes comuns
  • O livro é bom. Vale a pena olhar as issues no GitHub

    • Há partes que precisam de correção
    • O último commit foi há 10 anos
  • Eu queria que dois livros japoneses sobre desenvolvimento de sistemas operacionais fossem traduzidos para o inglês

    • Eles vão até mostrar como fazer janelas funcionarem em um ambiente gráfico
    • Um deles é um desafio de 30 dias
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • Houve uma tentativa de traduzir "30-days Homemade OS" para o inglês, mas não foi muito longe
    • os-in-30-days GitHub
    • Não conheço nenhum livro ou artigo em inglês que vá tão longe
    • O Fusion ainda não concluiu o capítulo sobre ambiente gráfico
    • Site do Fusion OS
  • Fico me perguntando onde está o manual do pequeno livro vermelho de SO

  • Já que estamos falando de desenvolvimento de SO, jogos tornam o aprendizado divertido

    • Eu queria criar um jogo que ensinasse sistemas operacionais enquanto viaja pela história da computação
    • O jogador assumiria o papel do escalonador de processos e do manipulador de interrupções
    • Poderia começar em um sistema de CPU única com RAM muito limitada, evoluir para um sistema SMP e chegar às plataformas distribuídas multisistema de hoje em dia