Ir ao conteúdo
  • Cadastre-se

C Desenvolvimento de Sistema Operacional


Posts recomendados

Olá, pessoal, tudo bem? Eu entendo um pouco de arquitetura e organização de computadores, sistemas operacionais, programação e eu to querendo escrever um sistema operacional. Eu sei que o processo é mais longo e complexo mas eu já li os livros do Tannembaum e Deitel e to querendo um pouco da leitura e ir mais para uma parte mais prática, de escrever os primeiros códigos, etc. Alguém tem alguma ideia por onde eu posso começar? Escrever um bootloader ou usar algum já desenvolvido? Quais passos iniciar eu posso seguir, onde eu posso procurar uma informação mais detalhada e inicial para eu começar a escrita?

  • Obrigado 1
Link para o post
Compartilhar em outros sites

Algo que eu recomendaria muito seria tentar treinar um pouco contribuindo pro kernel do linux. Obviamente há pouca probabilidade de um novato contribuir com algo revolucionário mas esse não deveria ser o foco. O ideal seria ter um contato mais próximo com a compilação de um kernel, sua arquitetura, como o funcionam os módulos em C, encapsulamento de informação, como desenvolver um projeto grande, como mante-lo, como gerenciar um controlador de versões (no caso git), como trabalhar em equipe, as boas práticas de programação e segurança etc etc. Pessoalmente, acho que depois de algum tempo estudando em detalhes o kernel do linux e como um projeto dessa magnitude funciona, além de eventualmente até contribuir na manutenção do código, você poderia (mais) facilmente enveredar num projeto próprio. Mas tampouco devemos nos iludir e achar que seria fácil. Pra entrar na comunidade de desenvolvedores do kernel você tem a obrigação de estudar tudo o que já foi desenvolvido nos últimos 20 anos, então apenas pra entrar já há muita coisa pra estudar.

Por sinal, ter no currículo "linux kernel developer" é uma catapulta profissional nos dias de hoje. 😁

  • Curtir 2
Link para o post
Compartilhar em outros sites

Bom, talvez. Primeiro espera-se que você tenha um bom domínio de inglês, afinal você vai interagir com os demais nesse idioma. Dai, alguns passos iniciais podem ser (não necessariamente na ordem abaixo):

a) Ser um usuário do Linux, entender o sistema. Nada que um dual boot ou uma maquina virtual não possa ajudar. Seria interessante entender o terminal do Linux, seu funcionamento e arquitetura além do sistema de arquivos utilizado pra abstrair o HD.

 

b) Entender um pouco do Unix, o sistema operacional ancestral do Linux, do BSD, do MacOS da Apple, do Android etc. Talvez não precisemos de rigor acadêmico aqui. Então, há muitos artigos no google contando em detalhes a historia de ambos, Unix e do próprio Linux. Por sinal, há um vídeo célebre no YouTube com os próprios criadores do Unix explicando seu funcionamento. Absolutamente sensacional: 

 

 

c) Entender como funciona o controlador de versão utilizado no Linux, chamado git. Por sinal, nesta etapa você vai aprender algo pra vida inteira, útil pra qualquer outro projeto de programação que venha a trabalhar. Recomendo praticar um pouco abrindo uma conta no www.github.com e testar com pequenos exemplos até ficar fluente no uso de git. Existe uma infinidade de tutoriais no google.

 

d) Estudar o funcionamento do kernel do Linux. Um bom pontapé inicial seria o guia de programação de módulos: https://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf

 

e) Entender como funciona o processo de contribuir com algumas linhas de código: https://opensource.com/article/18/8/first-linux-kernel-patch. O código do Linux está dividido em várias seções, cada qual sob administração de um mantenedor. Essa pessoa vai revisar o seu código e aceitá-lo ou não. Caso seja aceito, vai pra revisão do mantenedor da próxima seção e assim segue-se até eventualmente chegar nas mãos do Linus Torvalds que faz a revisão final. Finalmente, caso o Linus aceite a contribuição, o código entra no próximo patch lançado. Tudo isso feito através do git.

 

f) Certificar-se que está programando seguindo boas práticas de programação e o estilo de C adotado pelo Linux: https://slurm.schedmd.com/coding_style.pdf.

 

Acho que depois de experimentar um pouco de tudo isso você não apenas vai ter mais conhecimento pra um projeto solo como seria um programador de altíssimo nível.

  • Curtir 1
Link para o post
Compartilhar em outros sites

Ou melhor: http://www.linuxfromscratch.org/lfs/view/stable-systemd/

✌️

 

Na linha dos colegas, tem um monte de código open source precisando de mão de obra. Garimpe no GitHub/GitLab e adote um (ou vários)! ❤️

  • Curtir 1
Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!