3 pontos por GN⁺ 2024-06-09 | 1 comentários | Compartilhar no WhatsApp
  • 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-riscv e xv6-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

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

1 comentários

 
GN⁺ 2024-06-09
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

    • Fico curioso para saber se esse curso está disponível online. Não encontrei gravações das aulas no OpenCourseWare e, embora não seja do MIT, encontrei uma playlist no YouTube relacionada ao xv6 que parece muito boa: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • Fiz na UCI uma disciplina que pegava boa parte do curso do MIT e a tornava muito mais fácil; ainda assim, vale a recomendação
  • 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

    • Para entender bem o processo de desenvolvimento do kernel NT, vale ler o livro Show Stopper, de 1996
      É 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
    • Veja a série de livros Windows Internals, edições antigas da MSTech Journal e da DDJ, e os manuais do VMS nos arquivos da Digital
    • O código-fonte do Windows 2000 vazou na internet, e é bem provável que versões mais recentes também tenham vazado. Ele até já foi usado como ferramenta de ensino
    • Não é que a primeira versão do NT seja próxima do VMS
      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
    • O OpenVMS era open source?
  • 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

    • Estudar os predecessores das tecnologias amplamente usadas hoje é uma ótima forma de aprender como chegamos até aqui, quais compromissos foram feitos e por quê, e o que talvez tenhamos perdido
      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
    • É preciso aprender a andar antes de correr. O Xv6 é básico, mas para alunos que estão vendo esses conceitos pela primeira vez, é uma introdução muito boa para aprender os fundamentos de sistemas operacionais em um semestre
    • Acho que muitos professores escolhem Xv6 para disciplinas de sistemas operacionais não apenas porque ele tenha um design excelente
      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
    • A arquitetura de von Neumann tem 80 anos. Não vejo por que a idade do design importaria, se ele ainda é a arquitetura mais relevante e amplamente usada
      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
    • Microkernels têm um papel importante no ecossistema de software, mas a maior parte do software com que lidamos não é coordenada por um microkernel
      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

    • Algumas decisões de design do Plan 9 são dignas de respeito
      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