Existe algum sistema operacional que seja simples o suficiente para aprender? [fechadas]


19

Eu realmente gostaria de entender como um sistema operacional funciona nos bastidores. No entanto, acho que o núcleo da maioria dos sistemas operacionais de código aberto existentes no mercado é muito complexo para fins de aprendizado, mesmo para um programador em tempo integral aprender. Existem sistemas operacionais "simples" criados apenas para fins de aprendizado?




Encontrei isso na minha pesquisa, nunca tentei. pdos.csail.mit.edu/6.828/2012/xv6.html aparentemente foi escrito para substituir o Unix v6 como uma ferramenta de aprendizado.
Ctrl-alt-delor

Respostas:


28

O Minix de Andrew Tanenbaum (consulte Projeto e implementação de sistemas operacionais ) destina-se exatamente a esse tipo de finalidade. Outra possibilidade (ainda que datada) é ler o Lion's Book , que abrange o Unix V6 (Unix completo, mas uma versão antiga o suficiente para que ainda seja simples o suficiente para um estudo bastante fácil). As desvantagens óbvias deste último são que o C que ele usa é bastante obsoleto; portanto, mesmo programadores C bastante experientes podem achar partes um tanto difíceis de ler, e você não pode planejar um compilador moderno digerindo o código.


7
O MINIX 3 não é uma ferramenta de ensino e o microkernel do MINIX 3 definitivamente não é fácil de entender. Segundo Tanenbaum, apenas o MINIX 1 era uma ferramenta de ensino.
Sakisk

10

Você deve considerar um sistema operacional Xv6 moderno, semelhante ao Unix, usado em um curso de SO no MIT. Parece ter algum material do curso associado a ele também.

É executado nos emuladores Bochs e Qemu x86. Eu fiz essa parte. Foi divertido.


7

O Minix é uma ótima opção e é descrito em uma das outras respostas.

Xinu

Considere também XINU - XINU não é Unix.

É também o UNIX escrito para trás.

Há um livro de Douglas Comer que eu pensei que estava bem escrito, bem ilustrado e com bom escopo.

Há um Xinu incorporado e um site sobre ensino com o Xinu.

http://xinu.mscs.mu.edu/Teaching_With_Xinu

FreeRTOS

Outro sistema operacional pequeno que adora muito hoje em dia é o FreeRTOS. Ele roda em quase tudo. Se você veio de Marte e tinha um processador ou placa de avaliação onde ele não é executado, você pode ler cerca de 10 páginas de documentação, modificar cerca de cinco arquivos relacionados a interrupções, temporizadores e UARTs e você estaria executando.

http://www.freertos.org/

Eles afirmam que suporta 31 arquiteturas e 18 cadeias de ferramentas. Minha experiência no final de 2009 foi boa e ouvi dizer que melhorou muito desde então.

Outros Links

Perguntas semelhantes sobre as quais podem ter informações úteis para você estão localizadas aqui:

/programming/254149/how-do-you-write-a-basic-operating-system

O Linux e muitos outros designs de sistemas operacionais são influenciados pelo UNIX, portanto, este vídeo em que os designers originais (Kernigan, Richie e Thompson e outros) é informativo e obtém as idéias de design diretamente da fonte.

http://techchannel.att.com/play-video.cfm/2012/2/22/AT&T-Archives-The-UNIX-System

Existe um livro de texto clássico, mas frequentemente revisado para sistemas operacionais:

Silberschatz, Galvin, Gagne: conceitos de sistema operacional, 7ª edição

Também pode haver edições mais recentes. Raramente vinculo a um livro através de um vendedor de livros, mas a visualização é muito generosa; portanto, para saber mais sobre sistemas operacionais, confira:

http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720


3

Na minha universidade, aprendemos NachOS . É um ótimo sistema operacional de código aberto para aprendizado. Você também pode encontrar muitos exercícios de universidades no NachOS para aprender.

O Nachos é um software instrucional para o ensino de cursos de graduação e, potencialmente, pós-graduação em sistemas operacionais. A distribuição Nachos vem com:

  • Documento de visão geral
  • Código de linha de base simples para um sistema operacional em funcionamento
  • Um simulador para atribuições de amostra genéricas de computadores pessoais / estações de trabalho
  • Um iniciador C ++ (o Nachos é escrito em um subconjunto fácil de aprender do C ++, e o primer ajuda a ensinar aos programadores C nosso subconjunto)

As atribuições ilustram e exploram todas as áreas de sistemas operacionais modernos, incluindo threads e simultaneidade, multiprogramação, chamadas de sistema, memória virtual, TLBs carregados por software, sistemas de arquivos, protocolos de rede, chamadas de procedimentos remotos e sistemas distribuídos.


0

Dê uma olhada no KOS (Kid OD) e SOS (Simple OS). Ambos são sistemas operacionais projetados para ensinar os internos de um sistema operacional. O KOS é o "pai" do SOS e foi construído com base na experiência adquirida com o KOS.

Esses projetos foram a base de muitos artigos educacionais na Linux Magazine France.

No site da KOS, você também pode encontrar uma página na qual é possível baixar as fontes de outros sistemas operacionais simples.


0

Se você faz parte da família de tecnologias .NET, pode conferir a Singularity . Não é atualizado desde 2008, mas pode ser baixado no código fonte e no formulário ISO do CodePlex aqui .


Razão particular para o voto negativo, voto negativo ? Os links ainda estão ativos e é um sistema operacional simples, escrito em um idioma de alto nível.
Jesse C. Slicer

0

As pessoas podem entender todas as versões do CP / M e DOS. Depois disso, as coisas ficaram fora de controle e ninguém sabe mais tudo. Eles não foram projetados para aprender um sistema operacional funciona, mas muitas pessoas fez saber que daqueles OS.


1
Considere adicionar algumas referências ou evidências adicionais para fazer backup de sua resposta. Ou adicione alguns detalhes adicionais para indicar por que a versão X é mais facilmente compreendida que a versão Y.

-1

Vá ler um livro sobre programação em assembler. Você não precisa se tornar especialista nisso, mas isso ensinará muito sobre o funcionamento interno de um computador.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.