Criar um sistema operacional

Os sistemas operacionais possibilitam que as pessoas interajam com o hardware de um computador; eles consistem em centenas de milhares de linhas de código. Geralmente são feitos com C#, C, C++ e linguagens de programação assembler. Os sistemas operacionais permitem que você navegue em um computador, habilite o armazenamento de dados e execute comandos. Não pense que é fácil fazer um sistema operacional. Exige muito conhecimento.

Degraus

Imagem intitulada Faça um sistema operacional de computador Passo 1
1. Aprenda a programar antes de começar. Assembly é essencial e outra linguagem de programação de alto nível adicional, como C, é altamente recomendada.
Imagem intitulada Faça um sistema operacional de computador Passo 2
2. Decida em qual mídia carregar seu sistema operacional. Pode ser uma unidade de CD, unidade de DVD, unidade flash, disco rígido, disquete ou qualquer outro PC.
Imagem intitulada Faça um sistema operacional de computador Passo 3
3. Decida qual é a ideia central sobre o sistema operacional. No Windows, por exemplo, uma GUI fácil de usar e segurança forte é a ideia central.
Imagem intitulada Faça um sistema operacional de computador Passo 4
4. Determine qual plataforma de processador seu sistema operacional suportará. IA-32, ARM e x86_64 são as arquiteturas mais comuns para computadores pessoais, então essas são sua melhor aposta.
Imagem intitulada Faça um sistema operacional de computador Passo 5
5. Decida se você quer construir tudo sozinho do zero, ou se existe um kernel existente no qual você quer construir. Linux From Scratch é um projeto de exemplo para quem quer construir sua própria distribuição Linux.
Imagem intitulada Faça um sistema operacional de computador Passo 6
6. Decida se deseja usar seu próprio bootloader ou um existente, como o Grand Unified Bootloader (GRUB). Como codificar seu próprio bootloader requer amplo conhecimento do hardware e do BIOS, pode atrasar o planejamento para programar o kernel real.
Imagem intitulada Faça um sistema operacional de computador Passo 7
7. Decida qual linguagem de programação usar. Embora seja possível criar um sistema operacional em uma linguagem como Pascal ou BASIC, é melhor usar C ou Assembly. A montagem é absolutamente necessária, pois algumas partes vitais de um sistema operacional exigem. C++, por outro lado, contém elementos de linguagem que requerem outro sistema operacional completo para ser executado.
Para poder compilar um sistema operacional a partir de código C ou C++ você obviamente precisa de algum tipo de compilador. Portanto, você deve ler o guia/manuais/documentação do usuário para o compilador C/C++ escolhido, seja fornecido com o software ou disponível no site do distribuidor. Você precisará saber muitas coisas complicadas sobre seu compilador e, para desenvolver em C++, precisará ter conhecimento do esquema de desmembramento do compilador e da ABI. Você verá os vários formatos executáveis ​​(ELF, PE, COFF, binário regular, etc.).), bem como o fato de que o formato nativo do Windows, PE (.exe), é protegido por direitos autorais.
Imagem intitulada Faça um sistema operacional de computador Passo 8
8. Decida qual interface de programação de aplicativos (API) usar. Uma boa API para escolher é POSIX, pois está bem documentada. Todos os sistemas Unix têm pelo menos suporte parcial para POSIX, então seria trivial portar programas Unix para o seu sistema operacional.
Imagem intitulada Faça um sistema operacional de computador Passo 9
9. Decidindo sobre o projeto. Existem kernels monolíticos e microkernels. Os kernels monolíticos executam todos os serviços no kernel, enquanto os microkernels combinam um kernel pequeno com daemons de usuário combinados que implementam serviços. Em geral, os kernels monolíticos são mais rápidos, mas os microkernels têm melhor isolamento de falhas e confiabilidade.
Imagem intitulada Faça um sistema operacional de computador Passo 10
10. Considere desenvolver e trabalhar em equipe. Dessa forma, menos tempo é necessário para resolver mais problemas, o que pode produzir um sistema operacional melhor mais rapidamente.
Imagem intitulada Faça um sistema operacional de computador Passo 11
11. Não apague completamente seu disco rígido. Lembre-se de que limpar sua unidade excluirá irreversivelmente todos os dados! Use o GRUB ou outro gerenciador de inicialização para configurar uma inicialização dupla com outro sistema operacional até que seu próprio sistema esteja totalmente funcional.
Imagem intitulada Faça um sistema operacional de computador Passo 12
12. Comece pequeno. Comece com pequenas coisas, como exibir texto e interrupções, antes de passar para os problemas maiores, como gerenciamento de memória e multitarefa. Certifique-se também de fazer uma versão de 32 bits e 64 bits.
Imagem intitulada Faça um sistema operacional de computador Passo 13
13. Mantenha um backup do seu código-fonte que funcionou mais recentemente. Isso fornece uma medida de proteção caso algo dê muito errado com a versão atual do seu sistema operacional ou seu desenvolvimento. Se o seu computador travar e não conseguir mais inicializar, é uma ótima ideia ter uma segunda cópia para trabalhar para que você possa depurar.
Imagem intitulada Faça um sistema operacional de computador Passo 14
14. Considere testar seu novo sistema operacional com uma máquina virtual. Em vez de reiniciar o computador sempre que fizer alterações ou transferir arquivos do computador de desenvolvimento para a máquina de teste, você pode usar uma máquina virtual para executar o sistema operacional no sistema operacional atual. Alguns dos programas de VM incluem VMWare (também possui software de servidor disponível gratuitamente), a alternativa de código aberto Bochs, Microsoft Virtual PC (não compatível com Linux) e Oracle VirtualBox.
Imagem intitulada Faça um sistema operacional de computador Passo 15
15. Liberar um `candidato a lançamento`.Isso permitirá que os usuários alertem você sobre possíveis problemas com seu sistema operacional.
Imagem intitulada Faça um sistema operacional de computador Passo 16
16. Um sistema operacional também pode ser fácil de usar, portanto, certifique-se de adicionar recursos fáceis de usar, tornando-o parte integrante do seu design.

Pontas

  • Verifique possíveis impasses e outros erros. Erros, impasses e outros problemas começarão a aparecer em seu projeto de SO.
  • Se você quiser que seu sistema seja viável, certifique-se de implementar recursos de segurança como sua principal prioridade.
  • Com sites como OSDev e OSDever você pode desenvolver seu próprio sistema operacional. Nota: Para a maioria dos propósitos, o OSDev.org prefere que você consulte o wiki deles para tirar dúvidas e não participe do fórum. Se você decidir participar do fórum, existem requisitos: você deve ter um conhecimento profundo de C ou C++ e montador x86. Você também deve entender conceitos de programação comuns e complexos, como listas vinculadas, filas, etc. A Comunidade OSDev declara expressamente em suas regras que a Comunidade não se destina a tomar conta de novos programadores.
  • `Não participe o OSDev.org para começar a fazer perguntas óbvias logo após. Isso simplesmente resultará em respostas como""leia o manual/leia o manual". Leia a Wikipedia e os manuais das diferentes ferramentas que deseja usar.
  • Se você está tentando desenvolver um sistema operacional, nem é preciso dizer que espera-se que você seja um deus da programação.
  • Você também deve ter lido os manuais do processador para a arquitetura de processador escolhida; seja x86 (Intel), ARM, MIPS, PPC, etc. é. Tutoriais de arquitetura de processador podem ser facilmente encontrados com uma pesquisa no Google ("Manuais Intel", "Manuais ARM" etc.).
  • Depois que todo o desenvolvimento estiver completo, você pode decidir se deseja liberar o código como código aberto ou proprietário.
  • Não comece com um projeto de sistema operacional para aprender programação. Se você ainda não possui um conhecimento profundo de C, C++, Pascal ou qualquer outra linguagem apropriada, incluindo manipulação de ponteiros, manipulação de bits de baixo nível, deslocamento de bits, linguagem assembly inline, etc., então você não está realmente pronto para o desenvolvimento de seu próprio sistema operacional.
  • Pode ser sensato criar uma partição completamente nova para o `desenvolvimento` do sistema operacional.
  • O sistema operacional que você cria pertence à empresa que iniciou o serviço primeiro (mesmo que você tenha o direito de distribuição gratuita e de modificá-lo como desejar e executá-lo sob a GPL).

    Avisos

    • Você não terá criado um sistema operacional completo em duas semanas. Comece com um sistema operacional que possa inicializar e depois passe para as coisas divertidas.
    • Se você fizer algo tão imprudente quanto escrever bytes aleatórios em portas de E/S aleatórias, seu sistema operacional travará e você poderá (em teoria) danificar seu hardware.
    • Não espere que seja fácil construir um sistema operacional que funcione bem. Existem todos os tipos de interdependências complicadas. Por exemplo, para permitir que um sistema operacional lide com vários processadores, você precisará usar "mecanismos de bloqueio" de gerenciamento de memória para impedir que vários processadores usem o mesmo recurso/recurso ao mesmo tempo. O "fechaduras" usado para isso requer a presença de um escalonador/escalonador para garantir que apenas um processador possa acessar um recurso crítico em um determinado momento, com todos os outros aguardando. Mas o agendador novamente depende da presença de um Gerenciador de Memória. Este é um caso de dependência de deadlock. Não existe uma maneira padrão de resolver problemas como esse; espera-se que todo programador de sistema operacional seja habilidoso o suficiente para encontrar sua própria maneira de lidar com isso.
    • A gravação descuidada do seu sistema operacional no disco rígido pode danificá-lo completamente. Tome cuidado.

    Necessidades

    • Um computador
    • Uma CPU para a arquitetura que você desenvolverá
    • Memória suficiente (RAM) para uma máquina virtual
    • Um sistema operacional `host` (usado para desenvolver o código-fonte do Assembler (e outros), além de compilá-lo e empacotá-lo enquanto ainda está em seus estágios iniciais, eventualmente seu sistema operacional pode hospedar a si mesmo)
    • Um editor de programação codificado por cores (use isso se você não tiver um IDE - Ambiente de Desenvolvimento Integrado)
    • Um compilador
    • Uma unidade de CD/DVD

    Оцените, пожалуйста статью