O sistema operacional permite que o usuário interaja com o hardware do computador. O sistema é composto por centenas de milhares de linhas de código. Normalmente, o sistema operacional é feito usando as linguagens de programação C #, C, C ++ e assembly. O sistema operacional permite que você navegue em seu computador enquanto salva e executa comandos. Não pense que criar um sistema operacional é fácil. É preciso muito conhecimento para fazer isso.
Etapa
Etapa 1. Em primeiro lugar, aprenda sobre programação
A linguagem assembly é muito importante; é altamente recomendável que você aprenda outra linguagem complementar de alto nível, como a linguagem C.
Etapa 2. Decida qual mídia você deseja usar para carregar o sistema operacional
Essa mídia pode ser uma unidade de CD, DVD, unidade flash, disco rígido, disquete ou outro PC.
Etapa 3. Defina a ideia central de um SO
Por exemplo, no Windows, a ideia central é uma GUI fácil de usar e muita segurança.
Etapa 4. Determine a plataforma de processador que seu sistema operacional oferecerá suporte
IA-32, ARM e x86_64 são as plataformas mais comuns para computadores pessoais. Então, todos eles são sua melhor escolha.
Etapa 5. Decida se você prefere fazer tudo sozinho do zero ou se já existe um kernel disponível que você gostaria de construir
Por exemplo, o Linux do zero é um projeto para pessoas que desejam construir sua própria distribuição Linux.
Etapa 6. Decida se você usará seu próprio gerenciador de inicialização ou um pré-construído, como o Grand Unified Bootloader (GRUB)
Codificar o bootloader por conta própria exigirá amplo conhecimento de hardware e BIOS. Como resultado, esta etapa pode atrapalhar a programação real do kernel.
Etapa 7. Decida qual linguagem de programação usar
É bom ter um sistema operacional em uma linguagem como Pascal ou BASIC, mas você deve usar C ou Assembly. A montagem é muito necessária, porque algumas partes importantes de um sistema operacional exigem isso. Por outro lado, a linguagem C ++ contém palavras-chave que requerem outro SO completo para serem executados.
Para compilar um sistema operacional a partir do código C ou C ++, é claro que você usará um ou outro compilador. Portanto, é aconselhável consultar o guia do usuário / manual / documentação do compilador C / C ++ de sua escolha, incluído no software ou disponível no site do distribuidor. Você precisa saber muitas coisas complicadas sobre o compilador e, para o desenvolvimento C ++, você precisa saber sobre o esquema de manipulação do compilador e sua ABI. Espera-se que você compreenda os vários formatos executáveis (ELF, PE, COFF, binário básico, etc.) e compreenda que o formato exclusivo do Windows, PE (.exe), é protegido por direitos autorais
Etapa 8. Defina sua interface de programação de aplicativo (API)
Uma boa API para escolher é POSIX, pois está bem documentada. Todos os sistemas Unix têm suporte pelo menos parcial para POSIX. Portanto, conectar programas Unix ao seu sistema operacional deve ser fácil.
Etapa 9. Decida seu projeto
Existe um kernel monolítico e um micro kernel. Kernels monolíticos implementam todos os serviços do kernel, enquanto os micro kernels têm pequenos kernels agrupados com serviços de implantação de daemon de usuário. Em geral, os kernels monolíticos são mais rápidos, mas os microkernels têm melhor isolamento de falhas e confiabilidade.
Etapa 10. Considere desenvolver e trabalhar em equipe
Dessa forma, leva menos tempo para resolver mais problemas, o que provavelmente irá acelerar a construção de um sistema operacional melhor.
Etapa 11. Não limpe o disco rígido completamente
Lembre-se de que excluir uma unidade apagará todos os dados nela de forma irreversível! Use o GRUB ou outro gerenciador de boot para inicializar duas vezes seu sistema com outro SO até que ele esteja totalmente funcional.
Etapa 12. Comece pequeno
Comece com coisas pequenas como exibir texto e pausar antes de passar para coisas como gerenciamento de memória e trabalho composto. Além disso, certifique-se de fazer as versões de 32 e 64 bits.
Etapa 13. Mantenha um backup do último código-fonte de trabalho
Esta etapa é útil como uma proteção caso algo dê errado com a versão atual do SO ou desenvolvimento. Se o seu computador travar e não inicializar, é uma boa ideia ter uma segunda cópia para trabalhar para que você possa corrigir o problema.
Etapa 14. Considere testar seu novo sistema operacional com uma máquina virtual
Em vez de reiniciar o computador sempre que fizer alterações ou depois de enviar arquivos do computador de desenvolvimento para a máquina de teste, você pode usar um aplicativo de máquina virtual para executar o sistema operacional enquanto o sistema operacional atual está em execução. Os aplicativos VM atuais incluem: VMWare (que também tem um produto de servidor disponível gratuitamente), alternativas de código aberto, Bochs, Microsoft Virtual PC (não compatível com Linux) e Oracle VirtualBox.
Etapa 15. Inicie o "candidato a lançamento" ou a versão Beta
Esta etapa permitirá que o usuário o notifique sobre possíveis problemas com o sistema operacional.
Etapa 16. O sistema operacional também deve ser amigável
Certifique-se de adicionar recursos amigáveis ao usuário, torne-os parte integrante do seu projeto.
Pontas
- Verifique se há bloqueios em potencial e outros bugs. Bugs, deadlocks e outros problemas afetarão seu projeto de construção do sistema operacional.
- Certifique-se de implementar os recursos de segurança como prioridade máxima se quiser que o sistema funcione corretamente.
- Use sites como OSDev e OSDever para ajudá-lo a desenvolver seu próprio sistema operacional. Por favor, note que para a maioria dos propósitos, a comunidade OSDev.org ficará mais do que feliz se você usar o wiki deles, e não entrar no fórum. Se você decidir participar de um fórum, há uma pré-condição: você precisa realmente saber sobre C ou C ++ e a linguagem assembly x86. Você também deve compreender conceitos gerais e complexos de programação, como listas vinculadas, filas, etc. A comunidade OSDev, em seus regulamentos, afirma explicitamente que sua comunidade não foi criada para alimentar novos programadores.
- Não entre com o fórum OSDev.org e, em seguida, faça a pergunta óbvia. Você só precisará ler o guia. Leia a Wikipedia e as instruções para qualquer equipamento que você deseja usar.
- Se você está tentando desenvolver um sistema operacional, definitivamente é considerado o "deus" da programação.
- Você também deve ter lido o manual do processador para a arquitetura de processador que você selecionou; se x86 (Intel), ARM, MIPS, PPC, etc. Manuais para arquiteturas de processador são fáceis de encontrar usando uma pesquisa no Google ("manual Intel", "manual ARM", etc.).
- Quando todo o trabalho de desenvolvimento estiver concluído, decida se deseja liberar o código como código aberto ou por copyright.
- Não comece um projeto de sistema operacional para começar a aprender programação. Se você não conhece por dentro e por fora sobre C, C ++, Pascal ou alguma outra linguagem adequada, incluindo manipulação de ponteiro, manipulação de bits de baixo nível, deslocamento de bits, linguagens assembly inline, etc., você não está pronto para o sistema operacional desenvolvimento.
- Criar uma partição inteiramente nova para 'expandir' o SO pode ser uma boa opção.
- Se você quiser uma maneira fácil, considere distribuições Linux como Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD ou SUSE Studio e SUSE KIWI. No entanto, o sistema operacional que você criou pertence à empresa que iniciou o serviço primeiro (embora você tenha o direito de distribuí-lo livremente, modificá-lo e executá-lo como desejar sob a GPL).
Aviso
- Você não terá um sistema operacional completo em duas semanas. Comece com um SO inicializável e, em seguida, passe para coisas mais legais.
- Escrever descuidadamente o seu sistema operacional em um disco rígido pode danificá-lo completamente. Tome cuidado.
- Se você fizer algo que não é recomendado, como gravar bytes aleatórios em portas de E / S aleatórias, você travará seu sistema operacional e (em teoria) poderá queimar seu hardware.
- Não espere que o sistema operacional seja fácil de construir. Existem muitas interdependências complicadas. Por exemplo, para criar um sistema operacional capaz de lidar com vários processadores, o Memory Manager deve ter um mecanismo de "bloqueio" para evitar que vários processadores acessem o mesmo recurso ao mesmo tempo. O "bloqueio" usado para isso requer um planejador para garantir que apenas um processador acesse recursos críticos em um determinado momento e todos os outros tenham que esperar. Na verdade, o agendador depende da presença do Gerenciador de Memória. Este é um exemplo de dependência de beco sem saída. Não existe uma maneira padrão de resolver esse tipo de problema; espera-se que todo programador de sistema operacional seja hábil o suficiente para saber sua própria maneira de lidar com isso.
Recursos adicionais
- Diretrizes: Linux From Scratch
- Bootloader: GRUB
- Aplicativos de máquina virtual: Bochs, VM Ware, XM Virtual Box.
- Manual do processador: manual Intel
- Sites de desenvolvimento de SO: OSDev, OSDever