Xv6, um sistema operacional educacional simples semelhante ao Unix
(pdos.csail.mit.edu)- Xv6 é um sistema operacional educacional simples, semelhante ao Unix, criado para aprender a estrutura de sistemas operacionais, e é usado na disciplina de graduação 6.1810 do MIT
- Desenvolvido no verão de 2006, depois foi portado para RISC-V para a disciplina 6.1810, adequando-se a um ambiente educacional moderno
- O código-fonte e a documentação são fornecidos nos repositórios Git
xv6-riscvexv6-riscv-book, permitindo compilar e ler tudo diretamente - Seu projeto e contexto de aprendizado têm raízes no Unix V6 e em Commentary on UNIX' 6th Edition, de John Lions
- Para ler também o código original do Unix V6, materiais de referência como o comentário de Lions, o código-fonte do V6 e o PDP11/40 Processor Handbook são úteis
Xv6 e 6.1810
- Xv6 é um sistema operacional educacional simples, semelhante ao Unix
- Foi desenvolvido no verão de 2006 e portado para RISC-V para a disciplina de graduação 6.1810 do MIT
Código-fonte e materiais de estudo
- O código-fonte mais recente do Xv6 pode ser obtido com o seguinte comando
- A documentação mais recente do Xv6 é fornecida em um repositório separado
- O Xv6 foi inspirado no Unix V6 e em Commentary on UNIX' 6th Edition, de John Lions
- Lions commentary versão online
- Unix V6 source code
- V6 source code via The Unix Heritage Society
Referências para ler o Unix V6 original
- The PDP11/40 Processor Handbook é um material útil para entender o código original do Unix V6
- O PDF, baseado em imagens digitalizadas, não permite busca por texto
- Também é fornecida uma versão web indexada por nomes de instruções
Pedido de feedback
- Estão buscando feedback sobre a experiência de uso do Xv6, experiências de adoção em aulas, melhorias para facilitar a adoção, e o que funcionou bem ou não
- O contato é
61810-staff@lists.csail.mit.edu
- O contato é
1 comentários
Comentários do Hacker News
Fiz essa disciplina no MIT e recomendo 20/10, especialmente para quem não tem base em sistemas
O material didático é bem fácil de entender, e os laboratórios são ótimos para verificar a compreensão. Mas talvez seja melhor pular o driver de rede na primeira tentativa
Fiz no MIT uma disciplina que usava esse SO, e foi excelente
Ainda hoje dei uma olhada no site do curso e, na prática, dá para fazer sozinho. Há notas de aula, laboratórios, um repositório do xv6 com branches para cada laboratório e até instruções de como executar por conta própria; o grau de abertura é impressionante
Primeiro laboratório: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
Pretendo refazer o curso inteiro por conta própria em breve
Muitos projetos da disciplina de sistemas operacionais na universidade consistiam em construir algo sobre o sistema operacional xv6
Um deles era criar um escalonador para o xv, e foi definitivamente uma boa forma de aprender os vários componentes de um sistema operacional
Em uma universidade na Espanha, Plan 9 foi ou ainda é usado para ensino
Quando vi o título pela primeira vez, achei que fosse uma nova versão do antigo visualizador de imagens xv: http://www.trilon.com/xv/
Há tempos queria entender o kernel do Windows NT. Imagino que as primeiras versões sejam mais simples, então talvez sejam melhores para isso
Ouvi dizer que a primeira versão era próxima do VMS, mas fico curioso se isso é verdade. Também queria saber se há materiais sobre VMS; ouvi dizer que o OpenVMS é open source, mas a versão parece alta demais
É verdade que Dave Cutler liderou vários projetos dentro da DEC, incluindo projetos relacionados ao VMS, mas o que o kernel Microsoft New Technology herdou do VMS foi mais uma herança intelectual em termos de design e arquitetura
Antes de sua equipe ser escanteada na DEC, Dave já estava trabalhando em uma grande reformulação ou sucessor do VMS, e boa parte dessa visão migrou para o Windows, embora isso tenha sacrificado alguns padrões de projeto robustos do mundo dos minicomputadores
Cutler via a equipe do MSDOS como programadores iniciantes empilhando soluções espaguete para problemas errados, mas, como Bill Gates tinha o mercado bem travado por contratos OEM, Bill basicamente deu a ele um cheque em branco para criar um kernel de verdade que competisse com o que Steve estava fazendo na NeXT
Portanto, em termos de recursos ou forma, o NT não é nem um pouco igual ao VMS, e a implementação também é completamente diferente. O VMS tinha uma biblioteca padrão C limpa e um conjunto de compiladores. Ainda assim, dá para ver isso como um movimento de gente do mundo dos minicomputadores descendo para competir no mundo dos microcomputadores
Para entender melhor o clima da época, vale ver as entrevistas de Dave Plummer e Cutler no YouTube
Há muito material sobre VMS, e originalmente ele vinha acompanhado de alguns metros de documentação. Ainda é vendido hoje, e também é possível baixar imagens de VM gratuitas para hobby
O OpenVMS não é open source, e a afirmação de que a versão é alta demais também não é verdadeira
É preciso sempre verificar as premissas antes de perguntar. Se você quer perguntar “B é possível porque A?”, primeiro precisa verificar se A é verdade
Fico me perguntando por que Unix v6. Não entendo por que ensinar usando um design de 50 anos atrás
Para ensinar os fundamentos de sistemas operacionais — escalonamento, comunicação entre processos e gerenciamento de espaço de endereçamento — acho que um design de microkernel seria melhor
Isso permite entender tecnologias novas com mais profundidade quando você as encontra depois, e amplia sua visão ao longo da carreira
Como alguém que perdeu parte dessa história, eu teria adorado aprender isso na universidade
Provavelmente o escolhem porque é suficientemente bom, simples e fácil de ensinar em um semestre no qual os alunos também cursam outras matérias. Fico curioso se a ideia é que um design de microkernel não só seria melhor, mas também mais fácil de ensinar
As abstrações básicas do Unix v6 continuam válidas
A principal diferença entre microkernels e kernels monolíticos é como o espaço de endereçamento é compartilhado entre o espaço de usuário e o kernel, e não entendo bem por que um design de microkernel seria melhor. Também me pergunto por que ensinar um design que não é amplamente usado
A maior parte do software que roda na internet também não roda sobre microkernels, e o mesmo vale para a maior parte do software disponível na internet. Um curso desses não parece preparar bem o suficiente para lidar com kernels ou entender os kernels que você encontrará profissionalmente
Fico me perguntando qual seria uma boa forma de uma pessoa autodidata mexer nisso por conta própria
Plan 9 também é uma base de código razoavelmente simples de entender
Namespaces por processo, bind e tratar tudo como arquivo dão a ele uma elegância difícil de encontrar em outros sistemas operacionais do tipo Unix
No semestre passado, usamos PintOS na disciplina de sistemas operacionais, e eu gostaria que houvesse uma segunda parte mais aprofundada