126 pontos por GN⁺ 2025-01-09 | 14 comentários | Compartilhar no WhatsApp
  • Este livro explica como construir, do zero e passo a passo, um pequeno sistema operacional
  • A ideia de desenvolvimento de sistema operacional (OS) ou de kernel pode assustar, mas as funções básicas de um OS (especialmente o kernel) são surpreendentemente simples
  • O Linux também começou com 8.413 linhas de código e, embora o kernel Linux de hoje seja enorme, ele começou com uma base pequena, como um projeto de hobby

Primeiros passos

  • Vamos implementar em C troca de contexto básica, paginação, modo de usuário, shell de linha de comando, driver de dispositivo de disco e operações de leitura/gravação de arquivos
  • Tudo isso é possível com 1.000 linhas de código
  • A parte mais difícil de criar um OS por conta própria é a depuração
  • Antes de implementar depuração com printf, ela não pode ser usada, e você precisará aprender várias técnicas e habilidades de depuração que não eram necessárias no desenvolvimento de aplicações
  • Especialmente ao começar "do zero", você vai encontrar partes difíceis como o processo de boot e a paginação
  • Mas não se preocupe! Você também vai aprender como depurar um OS
  • Quanto mais difícil for a depuração, maior será a satisfação ao ter sucesso
  • Vamos mergulhar no fascinante mundo do desenvolvimento de OS!

Outras informações

  • Os exemplos de implementação podem ser baixados no GitHub.
  • Este livro é disponibilizado sob a licença CC BY 4.0, e os exemplos de implementação e o código-fonte estão sob a licença MIT
  • É preciso estar familiarizado com a linguagem C e com um ambiente similar ao UNIX; se você consegue executar gcc hello.c && ./a.out, então está pronto
  • Este livro foi originalmente escrito como um apêndice do livro em japonês "Projeto e implementação de microkernel"
  • Boas hacking de OS!

Sumário do livro

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

14 comentários

 
princox 2025-01-15

Sempre conheci sistemas operacionais apenas por livros, então é ótimo poder vê-los em código de verdade.

Obrigado por compartilhar um material tão bom.

 
yuhyun 2025-01-13

Ótimo material, obrigado!!!!!!!!

 
reagea0 2025-01-10
  • Este livro foi originalmente escrito como um apêndice do livro "Projeto e Implementação de Microkernel", originalmente escrito em japonês.

Tenho muita inveja dessa frase. Parece que no Japão realmente saem muitos bons livros especializados. Deve ser uma questão de tamanho da população, né?

 
gurugio 2025-01-11

Quando vejo os livros que são traduzidos, parece que não há livros que cheguem a um nível técnico muito profundo, mas por outro lado realmente parece que saem livros de áreas bem variadas. Acho que isso acontece porque o mercado é maior.

 
romakus 2025-01-10

Obrigado pelo ótimo material.

 
skrevolve 2025-01-09

Vale a pena tentar fazer uma vez ou pelo menos entender até esse nível. Depois, quando você enxergar como o sistema Linux funciona por dentro, isso acaba sendo útil na hora de lidar com Linux.

 
gurugio 2025-01-09

Até o começo dos anos 2000, era até uma moda cada um tentar fazer um pequeno kernel, então eu também cheguei a fazer isso, e graças a isso pude trabalhar alguns anos com desenvolvimento do kernel Linux. Como também saíram muitos livros sobre criação de sistemas operacionais aqui no país, se você procurar bem, provavelmente vai encontrar livros que explicam isso com mais detalhes.
Se não for para mudar de área para algo relacionado e for só por diversão, não diria que é ruim, mas hoje em dia eu recomendaria mais estudos sobre IA ou k8s. Ainda hoje, de vez em quando aparecem posts em lugares como o KLDP de gente dizendo que quer se tornar desenvolvedor de kernel, mas, pelos comentários, a resposta é sempre para ir para o exterior.

 
bbulbum 2025-01-10

Provavelmente é porque, no país, não há empresas investindo em nível de kernel, né..? haha

 
gurugio 2025-01-11

Não sei bem se não fazem porque não precisam ou porque não conseguem, mas o fato é que não existe.

 
coma333 2025-01-09

Muito obrigado pelo ótimo material.

 
tsboard 2025-01-09

São justamente livros como esses que devem ser como os manuais secretos de artes marciais de que falam nos romances wuxia, né? haha

 
bbulbum 2025-01-09

Muito interessante. Sempre quis estudar programação de sistemas algum dia, e isso me faz pensar que, como primeira abordagem, eu poderia entender programaticamente como um sistema operacional funciona!

 
GN⁺ 2025-01-09
Comentários do Hacker News
  • O autor escreveu um livro para que seja possível criar um sistema operacional por conta própria em um fim de semana, e dá para usar sua linguagem de programação favorita, como Rust ou Zig, em vez de C

    • Ele deixou apenas as partes essenciais, sem tentar ser parecido com UNIX, e também é divertido pensar nas diferenças em relação a Linux ou Windows
    • Projetar um sistema operacional é como criar o seu próprio mundo
    • Alguns parágrafos podem parecer tradução automática, e ele pede que, se alguém tiver tempo, envie um PR
    • O conteúdo foi escrito em Markdown
  • Com base na experiência com programação de sistemas operacionais "hobby", é melhor adicionar a configuração de depuração com GDB o mais cedo possível

    • O QEMU tem um servidor GDB embutido, e é preciso conectar o cliente GDB da arquitetura-alvo (riscv) ao servidor GDB do QEMU pela rede
  • Acho muito legal criar um pequeno sistema operacional para RISC-V

    • Pessoalmente, escrevi um kernel para x86-64 em Nim e estou desenvolvendo um plugin para JetBrains
  • Para fãs de Rust, o guia do phil-opp pode ser um exercício divertido

    • Quando tentei pela primeira vez, entendi só uns 5%, mas voltei 2 ou 3 anos depois e fui revisando o tema aos poucos
  • Comecei a estudar RISC-V, e o emulador fornecido pelo livro que estou lendo é mais simples que o QEMU e tem uma licença estranha

    • Parece um projeto acadêmico, e fico curioso se é usado na prática
  • Seria interessante comparar com xv6-riscv

    • Há uma versão HTML do livro do xv6
  • Discussões de baixo nível são sempre interessantes

    • Encontrei um pequeno erro de digitação na "página 101 do RISC-V": "CPU" foi usado por engano no lugar de "ISA"
  • A parte mais complicada de criar um sistema operacional é a depuração

    • Quanto mais velho fico, mais penso que problemas que não exigem conhecimento especializado complexo podem ser resolvidos por tentativa e erro repetidos
  • Dois projetos são mencionados

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • Bom material; deixei salvo para ler no fim de semana

 
mhcoma 2025-01-14

Implementando um sistema operacional em 1.000 linhas

Um kernel em Nim...
Parece divertido.