como criar um sistema operativo do zero?

wrproject

Power Member
boas pessoal decidi criar este topico,porke estou a pensar brevemente criar um mini S.O em modo consola para arquitecturas X86
-o que é necessario saber(linguagens,etc..)?
-sera tedioso a construcao dum S.O?
-por onde devo comecar?
agradeco qualker opiniao.
cumps wrproject
 
Telefonas ao Torvalds:lol:

A melhor maneira de ver como funciona um sistema operativo é mexer em linux que tem código aberto. Mas aviso já que todas estas coisas não são muito fáceis de assimilar para quem não domine C. O SO faz milhentas coisas, acessos à memória, discos, gestão de processos, escalonamento de processos etc, se queres construir um So tens de programar tudo à unha...
Boa sorte...

Cumps
 
Telefonas ao Torvalds:lol:

A melhor maneira de ver como funciona um sistema operativo é mexer em linux que tem código aberto. Mas aviso já que todas estas coisas não são muito fáceis de assimilar para quem não domine C. O SO faz milhentas coisas, acessos à memória, discos, gestão de processos, escalonamento de processos etc, se queres construir um So tens de programar tudo à unha...
Boa sorte...

Cumps

E duvido que sozinho consiga.. Mesmo muito.. se nem sabe o que são processos, signals, threads etc (eu tambem não.. mas não tou a pensar fazer um SO :-D)
 
Isso é uma loucura, caso queiras fazer um S.O. tipo Windows Vista. Tens que ter muitos conhecimentos de Hardware e Software.

Mas não é uma grande loucura fazer um mini-S.O.:
O mais fácil será fazer "uma espécie" de sistema operativo que permita manipular ficheiros (criar, apagar, ler, editar), isso é algo parecido com o que já eu fiz, quando andava no ISEL (há mais de 10 anos).
Podes começar por procurar informação relacionada com IOCTL.
A linguagem de programação mais apropriada será o C

(Ou também poderias criar um sistema operativo dentro de outro sistema operativo.)

Na minha modesta opinião acho que só servirá para empatar tempo. É preferível uma pessoa inscrever-se num curso superior (tipo ISEL ou Técnico) e aí poderias chegar a alguma conclusão...

De qualquer forma, a partir desta ideia poderão surgir outras.
 
Não é assim tanta loucura.
Requisitos:
1º - Programar bem em C e assembly
2º - Conhecer bem a arquitectura onde vai correr o SO. Caso seja x86, vais ao site da intel e fazes download de 3 ou 4 pdfs que eles têm algures.
3º - Saber os seguintes conceitos:
- Memoria virtual
- Endereçamento Virtual
- Processos, comunicação entre processos,
- partir pedra (Este é muito importante :-D)
e muitos outros.... podia passar o resto da noite a escrever....

Ambiente de desenvolvimento:
Host : Linux
Eclipse + CDT
Qemu
GDB ligado com o Qemu para poderes fazer debug

links:
http://www.osdev.org/
http://www.nondot.org/sabre/os/articles
http://www.fiwix.org/


Se quiseres ver algum código, começar pelo código do linux é suicido, começa pelo fiwix, que foi especialmente criado para isso.
Se não usas linux, nunca programaste para linux(processos, IPC, threads,...) nem para windows. etc, etc, etc
Então por agora podes esquecer essa ideia.
 
Dps de ler isto tudo fikei com interesse em começar a aprender tb :)

ja tive 1 ano de Linguagem C e tou neste momento a ter aulas de C#

1º Qual o Linux que devo sakar ?

kando tiver isso perguntou o resto =) Obrigado =)
 
Última edição:
Dps de ler isto tudo fikei com interesse em começar a aprender tb :)

ja tive 1 ano de Linguagem C e tou neste momento a ter aulas de C#

1º Qual o Linux que devo sakar ?

kando tiver isso perguntou o resto =) Obrigado =)

Qualquer um que tenha as ferramentas necessarias.... e que seja a teu gosto.....
Gentoo será bastante indicado, mas qualquer um serve.
Instala, programa e estuda mto..... daqui a 1 ou 2 anos vem aqui e coloca o resto das questões......
 
Não quero parecer muito "rude" mas...

... alguém que tenha capacidade técnica para fazer um Sistema Operativo de raiz, nem sequer pergunta o que é preciso.

Espero que tenhas compreendido.

Cumps
 
Não quero parecer muito "rude" mas...

... alguém que tenha capacidade técnica para fazer um Sistema Operativo de raiz, nem sequer pergunta o que é preciso.

Espero que tenhas compreendido.

Cumps

Nem mais!!
Estão em causa coisas bem avançadas, não é para todos. Muito menos para quem tem este tipo de dúvidas.

Cumps
 
Voltando ao topico e sem gozar......

Se calhar o que devias de tentar como foi sugerido era pegar numa verão do linux e modificar.

O linux é open source logo tens o codigo fonte disponivel. começas com coisas mais simples para aprenderes como elas interagem com o sistema e vais avançando a medida que te vais sentindo mais confortavel.

Não é como criar um programita qualquer, tens de conhecer bem a arquitectura a que se destina. e defenitivamente não é tarefa para so uma pessoa.
 
Mas porque raio o rapaz não pode criar um sistema operativo?
Ele pode criar algo básico.
Não precisa de ser igual a um vista nem a um linux.
Não precisa de suportar 1001 dispositivos d hardware, não precisa de ser compativel com POSIX, não precisa de ter threads, não precisa de ser multi processo, não precisa de ter sistema de ficheiros e continua a ser um SO.


O mais importante não é criar o SO, o mais importante é o knowhow que adquires ao tentar faze-lo. Não é tarefa fácil..... mas ele pode tentar.....

http://www.linuxfromscratch.org -> isto não ensina a criar um SO, ensina a compilar o linux e fazer boot do SO.
 
concordo contigo SL87,vale a pena tentar.
como eu sei se consigo ou nao,se ainda nao tentei?
ja decidi vou mesmo tentar criar um mini-SO,primeiro vou estudar mais sobre arquitectura de computadores, depois aventuro-me no assembly,e aprofundo mais o C.
 
Mas porque raio o rapaz não pode criar um sistema operativo?
Ele pode criar algo básico.
Não precisa de ser igual a um vista nem a um linux.
Não precisa de suportar 1001 dispositivos d hardware, não precisa de ser compativel com POSIX, não precisa de ter threads, não precisa de ser multi processo, não precisa de ter sistema de ficheiros e continua a ser um SO.


O mais importante não é criar o SO, o mais importante é o knowhow que adquires ao tentar faze-lo. Não é tarefa fácil..... mas ele pode tentar.....

http://www.linuxfromscratch.org -> isto não ensina a criar um SO, ensina a compilar o linux e fazer boot do SO.

Estava para dizer isto mesmo. Um SO não tem de ser multi-processo, logo daí grande parte dos conselhos que indicaram são postos de parte. E durante muitos anos os PCs não eram multi-thread..
 
Mas secalhar, e digo secalhar, um ano de experiência em C, o muito pouco que sabe sobre como funciona o simples sistema de ficheiros do UNIX (dos mais simples e fáceis de clonar), e provavlmente nem sabe como funcionam a cache, a ram, o disco.. blocos, sectores, partições, etc etc..

Eu tambem gosto de ter ideias grandes, mas primeiro se ele se metesse a fazer coisas que realmente lhe dessem aprendizagem e tornassem um bom programador e depois então pensar em avançar para algum maior.

Só a minha opinião. É muito bonito querer tornar os nossos sonhos realidade, mas pelo meio há tem de haver muito trabalho e suor.
 
Back
Topo