Quais são alguns recursos para dar os primeiros passos no desenvolvimento do sistema operacional?[fechado]

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

Pergunta

Uma coisa que eu sempre quis fazer é desenvolver o meu próprio sistema operacional (não necessariamente de fantasia, como o Linux ou o Windows, mas é melhor do que um simples gestor de arranque que eu já fiz).

Eu estou tendo um tempo difícil encontrar recursos/guias que levam você a escrever um simples "Hello World" do SO.

Eu sei que muitas pessoas provavelmente irá recomendar que eu olhar para o Linux ou o BSD;mas a base de código para sistemas como o que é (presumivelmente) tão grande que eu não sei por onde começar.

Alguma sugestão?

Atualização:Para tornar mais fácil para as pessoas que terra sobre este post através do Google aqui estão alguns OS recursos de desenvolvimento:

Outros recursos:

Eu encontrei um bom recurso chamado MikeOS, "MikeOS é uma ferramenta de aprendizagem para demonstrar como é simples Sos trabalho.Ele usa o modo real de 16 bits para BIOS de acesso, de modo que ele não precisa o complexo drivers"

Atualizado 11/14/08

Eu encontrei alguns recursos Freebyte Guia de...livre e não-Livre Sistemas Operacionais que links para kits de como OSKit e a ExOS de biblioteca.Estas parecem ser super útil na introdução no sistema de desenvolvimento.

Atualizado 2/23/09

Ric Tóquio recomendado nanoos neste pergunta.Nanoos é um sistema operacional escrito em C++.

Atualizado 3/9/09

Diná, forneceu algumas informações úteis de Estouro de Pilha discussão dos aspirantes OS desenvolvedores: Obstáculos na criação de um sistema operacional personalizado discute os obstáculos que você pode encontrar durante o desenvolvimento de um sistema operacional e OS Desenvolvimento é mais uma discussão geral.

Atualizado 7/9/09

LB fornecido um link para o Pintos Projeto, uma educação que OS projetados para a aprendizagem dos estudantes OS de desenvolvimento.

Atualizado 7/27/09 (Ainda está forte!)

Me deparei com um on-line OS curso a partir de Berkley com 23 palestras.

TomOS é um fork do MikeOS que inclui um pouco de gerenciador de memória e suporte a mouse.Como MikeOS, ele é projetado para ser um projeto educacional.Está escrito na normativa nasm assembler.

Atualizado 8/4/09

Eu encontrei o slides e outros materiais para ir junto com o online Berkeley palestras listadas acima.

Atualizado 8/23/09

Todos perguntas marcados osdev no stackoverflow

OS/161 é um acadêmico SO escrito em c que executa em uma simulação de hardware.Este sistema é semelhante em Nachos.Graças Novelocrat!

tangurena recomenda http://en.wikipedia.org/wiki/MicroC/OS-II, um sistema operacional projetado para sistemas embarcados.Há um livro companheiro bem.

Desenvolvimento Do Kernel Linux por Robert Amor é sugerido por Anders.Ele é um "amplamente aclamado dicas de olhar para o kernel Linux."

Atualizado 9/18/2009

Graças A Tim S.Van Haren, para dizer-nos sobre Cosmos, um sistema operacional escrito inteiramente em c#.

tgiphil nos diz sobre Conseguiu Sistema Operacional Aliança (MOISÉS) Quadro, "um conjunto de ferramentas, especificações e código-fonte para fomentar o desenvolvimento de gestão de sistemas operacionais baseados na Common Intermediate Language."

Atualização 9/24/2009

Steve encontrou um casal de recursos para desenvolvimento no windows utilizando o Visual Studio, confira BrokenThorn guia de instalação com o VS 2005 ou OSDev VS Seção.

Atualizado 9/5/2012

kerneltrap.org não está mais disponível.O kernel do linux v0.Está disponível a partir de 01 kernel.org

Atualizado 12/21/2012 Uma básica do sistema operacional de desenvolvimento tutorial projetado para ser um semestre do projeto.É um guia para construir um sistema operacional com os componentes básicos.Começo muito bom para iniciantes.Relacionados papel.Graças Srujan!

Atualizado 11/15/2013

Escrever um Simples Sistema Operacional a Partir do Zero.Obrigado James Moore!

Atualizado 12/8/2013

Como fazer um sistema operacional de computador Graças ddtoni!

Atualizado 3/18/2014

ToAruOS um sistema operacional construído principalmente a partir do zero, incluindo GUI

Atualizado 12 De Setembro De 2016

Escrever o seu próprio Brinquedo de Sistema Operacional

Atualizado Dia 10 De Dezembro De 2016

Escrever um Simples Sistema Operacional a partir do Zero (obrigado @Tyler C)

Foi útil?

Solução

Há um monte de links após este breve descrição do que está envolvido na escrita de um sistema operacional para a plataforma X86.

O link que parece ser o mais promissor (www.nondot.org/sabre/os/articles) não está mais disponível, então você vai precisar para furar o Archive.org versão para lê-lo.

No final do dia, o gestor de arranque leva o código de máquina do kernel, coloca-o na memória, e passa para ele.Você pode colocar qualquer código de máquina em que o kernel que você quer, mas a maioria dos programas de C esperar um sistema operacional, então você precisa informar seu compilador que ele não terá todos os que, ou o gestor de arranque tem que criar algum.

O kernel então faz todo o trabalho pesado, e eu suspeito que ele é o exemplo de kernel que você deseja.Mas há um longo caminho a percorrer entre ter um kernel que diz, "Hello world" para ter um kernel que carrega um interpretador de comandos, fornece serviços de disco, e as cargas e gere os programas.

Você pode querer considerar inscrevendo-ACM para obter acesso à sua literatura mais antiga - há muitos artigos no final da década de 80 e início dos 90, no início de revistas de informática sobre como criar alternativas de OSs.Provavelmente existem livros que estão fora de impressão a partir desta época também.Você pode ser capaz de obter a mesma informação de graça, observando-se os índices dessas revistas (que estão disponíveis no site - clique em "índice" perto do nome da revista) e, em seguida, pedir ao redor para as pessoas com uma cópia.

Por último, eu sei que a usenet é morto (por assim sayeth os profetas de internet doom), mas você vai descobrir que muitas das escarpadas velho especialistas de que era ainda vivem lá.Você deve procurar grupos do google (eles têm dejanews do repositório antigo), e espero que você vai encontrar muitas pessoas fazendo as mesmas perguntas de uma década ou 1,5 atrás que você está a fazer agora.Você pode até mesmo executar através de Linus Torvalds: "muitas consultas para ajudar como ele estava desenvolvendo o linux originalmente.Se procuras de não trazer qualquer coisa, pergunte na apropriado grupo de notícias (provavelmente começa com comp.arch, mas procure aqueles com OS no nome).

Outras dicas

Minix é muito menor, e projetado para fins de aprendizagem, e o livro para ir com ele é uma boa também.

Atualização:Eu acho que o Minix 3 é um pouco de um objetivo diferente, mas Minix 2 (e, claro, a primeira versão) foram para fins de ensino.

Como alguém que foi escrito em tempo real, multi-tasking sistema operacional a partir do zero...

teclado debounce rotina, controlador de teclado, disco de driver, driver de vídeo, sistema de arquivos, e, finalmente, um gerenciador de boot - e isso apenas para iniciá-lo pela primeira vez, com nada para fazer!

...Eu não posso enfatizar o suficiente o quanto é importante para se familiarizar com o hardware!Isso é especialmente verdade se você realmente quer fazer tudo sozinho, em vez de apenas pegar um sistema primitivo alguém já definidos por você.Por exemplo, em contato com a Intel e pedir-lhes uma placa de CPU para o seu tipo de CPU!Isso vai colocá-lo fora para você - o "pin-outs", interrupções, opcodes, you name it!

Lembre-se de que o hardware torna tudo possível.Estudo do hardware.Você não vai se arrepender.

.

Escrever um microcontrolador OS.Eu recomendo um x 86 com base em microcontrolador.Um sistema operacional moderno é apenas enorme.Aprenda o básico primeiro.

Eu gostaria que houvesse um lugar para obter todas as informações sobre o desenvolvimento de seu próprio sistema operacional.O mais próximo que é OS Dev Wiki e Fóruns.Eles oferecem uma tonelada de boas informações sobre o programa de configuração, desenvolvimento e informações de hardware do dispositivo.

Também existem alguns tutoriais na BoneFide, Eu já usei o tutorial de início rápido, por Farelo de, e agora estou olhando para uma mais recente, com base no seu chamado Rolo de seu próprio brinquedo UNIX-clone do sistema operacional.

Eu segunda conferir:"Sistemas Operacionais :Projeto e Implementação"

E se você quiser desenvolver no Windows, confira jolson post do blog.

Editar:Para desenvolvimento no windows utilizando o Visual Studio, confira BrokenThorn guia do ou OSDev wiki.

Um recurso excelente é o material do MIT curso 6.828:Engenharia De Sistemas Operativos.

XV6 - simples de Unix como ensinar OS escrito em ANSI C para x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html

XV6 de origem - como um folheto impresso com os números de linha http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

XV6 livro explica as principais idéias de design de sistema operacional http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

O material é compacto:92 páginas de fonte e 96 páginas comentário.

Eu gosto mais do que o Minix livro!É uma verdadeira jóia!

você também pode querer dar uma olhada em SharpOS o que é um sistema operacional que eles estão escrevendo em c#.

Há bons recursos para os fundamentos do sistema operacional em livros.Desde que não há muito chamada para criar o novo sistema operacional a partir do zero, você não vai encontrar uma tonelada de amador tipo de informação na internet.

Eu recomendo o padrão de texto do livro "Sistemas Operacionais Modernos" por Tanenbaum.Você também pode ser capaz de encontrar o "Sistema Operacional Elementos" por Calingaert útil - é uma fina visão geral de um livro que dar um esboço do que um sistema operacional é a partir da ótica de um designer.

Se você tem algum interesse em sistemas de tempo real (e você deve, pelo menos, entender as diferenças e razões para tempo real sistema operacional), em seguida, recomendo também "MicroC/OS-II" Labrosse.

Editar:

Você pode especificar o que você quer dizer com "mais técnico"?Estes livros dão pseudo-código detalhes de implementação, mas está à procura de um exemplo de sistema operacional, ou trechos de código para uma determinada máquina/idioma?

-Adam

Só vindo de outra pergunta.Eu gostaria de mencionar Pintos...Lembrei-me de meu curso com OS Nachos e Pintos parece ser o mesmo tipo de coisa que pode rodar em x86.

Eu encontrei Robert Amor Desenvolvimento do Kernel Linux bastante interessante.O que você diz sobre como os diferentes subsistemas do kernel Linux funciona muito terra-a-terra maneira.Desde o código fonte está disponível Linux é um excelente candidato para alguma coisa para modificar.

Aqui estão algumas outras Estouro de Pilha de páginas que vale a pena incorporá-lo a esta discussão:

Obstáculos na criação de um sistema operacional personalizado
Desenvolvimento de um sistema operacional para a arquitetura x86

Inicie cortando o Minix.É muito menor do que o Linux (obviamente), e é projetado com fins de ensino em mente (alguns, pelo menos).Não Minix 3, porém, que é uma história totalmente diferente.

Já a resposta, mas quando eu tomei Sistemas Operacionais na faculdade, começamos com um kernel do linux e adicionado simplista características modernas (básicas de sistemas de arquivos, memória virtual, multitarefa, mutexes).Boa diversão.Você começa a ignorar alguns dos maluca de baixo nível assembly apenas coisas para a limpeza do esterco w/ modo protegido e tabelas de página enquanto ainda aprendi algumas das entranhas.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

Minha sistemas operacionais do curso de graduação tinham-nos a construir um número de subsistemas para OS/161, um simples, BSD-like kernel que fornece alguns dos princípios básicos deixando a liberdade para explorar várias design do espaço de decisões na implementação de alto nível de serviços.

Você pode querer olhar para linuxfromscratch.

Linux From Scratch (LFS) é um projeto que fornece você com o passo-a-passo instruções para a construção de sua própria personalizada sistema Linux, inteiramente a partir de código-fonte.

Uma simples e básica do sistema operacional de desenvolvimento tutorial projetado para ser um semestre do projeto.É um guia para construir um sistema operacional com os componentes básicos.Começo muito bom para iniciantes.Relacionadas com o papel aqui.

Eu gostaria de incluir este repositório Como-a-Fazer-um-Computador-Sistema Operacional por Samy Pesse.É um trabalho em progresso.Muito interessante.

Um razoavelmente simples SO para estudo deve ser µC/OS.O livro tem um disquete com a fonte sobre ele.

http://en.wikipedia.org/wiki/MicroC/OS-II

Confira Gerenciado Sistema Operacional Aliança (MOISÉS) Projeto de www.mosa-project.org.Eles estão criando um AOT/compilador JIT e totalmente gerenciado sistema operacional em C#.Alguns dos desenvolvedores do inativo SharpOS projeto.

Eu já brincou com Cosmos, que é: "um sistema operacional de projeto implementado completamente no CIL compatível com idiomas." Ele é escrito em C#, então, que era o meu direito beco.Para alguém como eu, que nunca tentou construir um sistema operacional, na verdade, foi muito legal ser capaz de obter um "Hello World" do sistema operacional funcionando em nenhum momento.

Como mencionado acima, a OSDev Wiki é (de longe) a melhor fonte para OS de desenvolvimento.Para aqueles que falam alemão, o baixo nível.ue Wiki também é grande.Algo relativamente desconhecido Incitatus OS, a simplicidade de um kernel com um pequeno conjunto de programas aplicativos.É ótimo para usar para obter o complicado tema do sistema operacional de desenvolvimento.

Movitz é um ambiente Lisp escrito em Common Lisp e execução "do metal".Infelizmente, alguns links sobre o Movitz página principal negar o acesso, mas você pode encontrar instruções sobre como baixar e compilar o código-fonte do trac página.Além disso, uma imagem pode ser encontrada no arquivo de nesta página.

IMHO isto é extremamente interessante, pois traz de volta o Lisp máquina conceito sobre o hardware disponível.Ele fracassou comercialmente, mas isso não provar-me que a idéia era ruim.

O Unix haters manual é um livro divertido que semi-sério repreende o conceito de Unix e seus derivados.Muitas seções argumento sobre como melhor o Lisp conceito de máquina foi.

Aqui está um artigo chamado "Escrever um Simples Sistema Operacional a Partir do Zero".Ele cobre a escrever um gestor de arranque, entrando x86-32 modo protegido, e a gravação de um básicas do kernel em C.Ele parece estar a fazer um bom trabalho para explicar tudo em detalhes.

O x86 JS simulator e BRAÇO simulador também pode ser muito útil para entender como as diferentes peças de hardware obras e fazer testes sem sair do seu navegador favorito.

Intresting Pergunta para os programadores.Se ver que vai demorar muito tempo para criar um sistema operacional como o Windows ou Mac, mas se você quiser construir uma simples queridos, em seguida, você pode tentar o seu melhor

  1. Você precisa se concentrar em Linguagem Assembly,C e C++.Você deve ser especialista em uma dessas línguas.
  2. Primeiro leia um bom livro sobre como OS trabalhos[Google] e, em seguida, leia todas as informações de Wiki OS
  3. Procura no youtube "Como criar o seu próprio sistema operacional em Linguagem Assembly" assista ao vídeo Por exemplo.Vídeo
  4. Download do sistema operacional Linux de código fonte e compilá-la e tentar modificar o código
  5. Agora você é um experiente SO editor de agora download Minix e QNX e começar a desenvolver com eles e obter os seus documentos a partir de aqui Minix Doc e QNX Doc

Agora você obteve o grau de mestre(Não completamente, apenas um pouco mais para ir), na criação de SO agora distribuir este knownledge para os seus amigos e com sua ajuda, a tentar criar um sistema operacional tão poderoso como Mac, Linux ou Windows

Quando você tiver um sistema operacional básico é realmente difícil continuar porque não há muitos recursos em fazer GUIs ou portar bibliotecas.Mas eu acho que um olhar ToAruOS iria ajudar muito!

O código sob a superfície do que OS é mesmo muito simples!mas, ao mesmo tempo, ele tem portado coisas como cairo, python, (ainda não, mas logo) sdl, feita a partilha de memória e ele também fez o seu próprio widget toolkit.Está tudo escrito em C.

Outro interessante SO seria pedigreeOS.É feita por JamesM (o homem por trás jamesM kernel do tutorial.Enquanto ele tem mais recursos do que ToaruOS também maiores e com mais confuso.

Mas de qualquer forma estas 2 SO vai ajudá-lo muito, especialmente ToAruOS.

Quando eu comecei a trabalhar no meu básicos de sistemas operacionais, eu precisava de um guia básico de como Stepping stones para um sistema operacional básico.Isso me ajudou a não perder a minha cabeça.

Que se você deseja torná-lo a partir de absolutamente nada (puro código assembly)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top