Sistema Operacional miniOS-0.00: Começando a fazer um do zero, o vai ser preciso?

Construindo um Sistema Operacional

Olá amiguinhos! Recentemente, eu comecei e terminei de construir um sistema operacional. OK, eu me orgulho disso, achei ele muito bem feito, mas ainda tem muitos pontos que eu vi que eu podia melhorar.

Então, agora, eu começo uma serie de posts em que eu pretendo refazer esse sistema, dessa vez muito mais organizado, comentando aqui no blog com posts explicando cada passo, comentando o código de forma realmente legal e inserindo alguns elementos a mais também, tudo isso com a opinião de vocês meus leitores.

Eu pretendo evoluir as ideias que eu já usei e/ou usar algumas ideias melhores que eu tinha pensado na época, mas como eu tinha tempo a cumprir eu não fiz. Além que também eu vou tentar refatorar muito do código que eu já tinha usado.

O plano de release

Como eu já fiz uma vez e tenho alguma noção, eu sei mais ou menos o caminho em ordem do que fazer, e em cada post eu vou tentar abordar cada um desses tópicos. Pelo menos esse é o plano…

Lista do que vou desenvolver em provável ordem:

  1. Estrutura de diretórios
  2. Configuração do Ambiente
  3. Build automatizado
  4. Linker
  5. Código ASM de inicialização
  6. Código “C” de inicialização
  7. Monitor
  8. kprintf
  9. Teste?
  10. Construtores globais
  11. Destrutores globais
  12. Biblioteca padrão “C
  13. Gerencia de memoria no final do kernel
  14. Algumas estruturas de dados
  15. Global Descriptor Table (GDT)
  16. Interrupt Descriptor Table (IDT)
  17. Interrupt Service Routines (ISR)
  18. Interrupt ReQuest (IRQ)
  19. Programmable Interval Timer (PIT)
  20. Teclado
  21. Interface para sistema de arquivo genérica
  22. Gerencia de memoria com paginação
  23. Multiprocesso
  24. Tratamento de Exceções?

Lembrando que provavelmente eu vou alterar esse lista com o tempo, porque eu posso mudar de ideia com relação a ordem ou posso quebrar em mais de um tema esses tópicos, coisas assim.

A parte que eu inicialmente acho mais difícil

Testes, esse é a parte realmente nova e que pode levar tempo. Requer que eu crie mais coisas também.

Testes influenciam o desenvolvimento depois, porque a arquitetura de testes influencia muito no desenvolvimento.

A complexidade é grande, e eu vou abordar melhor o porque no post sobre testes, em que eu devo resolver e propor alguma coisa.

O começo, algo feito

Como eu sempre gosto de deixar algo sempre pronto, com bônus inicial eu já criei o repositório para quem quiser ir acompanhando, no github.

Na verdade, é o repositório antigo que eu tinha feito, mas eu deletei(criei um branch, na verdade…) e recomecei do zero. Mas quem quiser já pode ir acompanhando, mas acho melhor que vocês falem comigo por aqui e vejam os posts aqui também ;).

Advertisements

12 responses to “Sistema Operacional miniOS-0.00: Começando a fazer um do zero, o vai ser preciso?

  • Vinipsmaker

    Boa iniciativa.
    =)

    E sobre o repositório: Para criar o novo branch do zero, você poderia ter utilizado branches órfãos, como indicado nessa resposta no stackoverflow: http://stackoverflow.com/a/4288660/883113

    • psychomantys

      Valeu Vini, acho que você é meu maior/único leitor :D.

      Sim, sim, mas eu queria em um futuro próximo misturar os 2 ramos, e possivelmente ficar só com 1, nesse meio tempo tendo os 2, e no final sendo apenas 1, que manteria todos os códigos.

      Mas realmente de qualquer forma eu não sabia como fazer um branch órfão, só sabia que existia.

      Existe também a possibilidade de criar o branch via interface web, que eu acho que pode criar vazio também, mas eu também não sei como fazer, nem se é possível…

  • oscar

    você se formou em que

  • Rhaldney

    E como eu posso colocar efeitos de transicão no SO?

  • Daniel S.O

    eae posta todos os detalhes de como voçe criou um sistema operacional. do zero

  • AfroEms

    Estou vendo esse blog agora, seria interessante mesmo sem ter leitores, continuar postando, uma hora aparecerá muita gente, eu mesmo já senti vontade de passar para os meu professores e colegas, porém, precisa de mais conteudo. Parabéns mesmo, torço para que siga em frente.

  • Eldack Souza

    Também to vendo em 2014, espero que esteja conseguindo ir além com seu sistema, por que também to nesse caminho.
    Boa sorte parceiro!

  • Nisael

    Estou acompanhando seu post agora em 2015, aguardo a continuação.

  • s_cesar

    iae,eu tava querendo criar um so bem bacana agora nessas ferias pra nao ficar sem nada pra fazer,por favor,me da umas dicas ai,eu nao conheco tao bem linguagem de programacao,mas sei um pouco,e to pesquisando mais sobre esse assunto

    • Psycho Mantys

      Então, é meio megalomaniaco o meu post, por isso estou fazendo as coisas muito devagar na verdade.

      Como dica logo, eu posso dizer que é bom olhar esses 2 links:
      http://www.osdever.net/bkerndev/index.php
      http://wiki.osdev.org/Main_Page

      O primeiro é um guia para um SO simples e funcional(tem alguns poréns, mas serve) e o segundo é de uma galera que reune varias informações sobre SO.

      Mais um tutorial que ensina uma coisas mais avançadas:
      http://www.jamesmolloy.co.uk/tutorial_html/

      O problema dele é que tem algumas má praticas e não ensina da melhor forma possível algumas outras coisas também. Apesar de ser possível concluir o que ele quer com o que ele ensina.

      Recomendo também fortemente a leitura das discussões sobre os artigos do Bran e do Molloy no OSDev.

  • SirCode

    Continua o tutorial porfavor, você é a unica pessoa que disse que vai ensinar bastante, não complica muito as coisas e que escreve em português 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: