Implementando um sistema operacional em 1.000 linhas
(operating-system-in-1000-lines.vercel.app)- 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
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
14 comentários
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.
Ótimo material, obrigado!!!!!!!!
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é?
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.
Obrigado pelo ótimo material.
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.
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.
Provavelmente é porque, no país, não há empresas investindo em nível de kernel, né..? haha
Não sei bem se não fazem porque não precisam ou porque não conseguem, mas o fato é que não existe.
Muito obrigado pelo ótimo material.
São justamente livros como esses que devem ser como os manuais secretos de artes marciais de que falam nos romances wuxia, né? haha
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!
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
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
Acho muito legal criar um pequeno sistema operacional para RISC-V
Para fãs de Rust, o guia do phil-opp pode ser um exercício divertido
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
Seria interessante comparar com xv6-riscv
Discussões de baixo nível são sempre interessantes
A parte mais complicada de criar um sistema operacional é a depuração
Dois projetos são mencionados
Bom material; deixei salvo para ler no fim de semana
Implementando um sistema operacional em 1.000 linhas
Um kernel em Nim...
Parece divertido.