3 puntos por GN⁺ 2024-06-09 | 1 comentarios | Compartir por WhatsApp
  • Xv6 es un OS educativo simple, similar a Unix, creado para aprender la estructura de los sistemas operativos, y se usa en el curso de licenciatura 6.1810 del MIT
  • Fue desarrollado en el verano de 2006 y luego portado a RISC-V para el curso 6.1810, adaptándose a un entorno educativo moderno
  • El código fuente y la documentación se ofrecen en los repositorios Git xv6-riscv y xv6-riscv-book, para que puedas compilarlos y leerlos directamente
  • Su diseño y contexto de aprendizaje tienen raíces en Unix V6 y en Commentary on UNIX' 6th Edition de John Lions
  • Si quieres leer también el código original de Unix V6, son útiles materiales de referencia como el comentario de Lions, el código fuente de V6 y el PDP11/40 Processor Handbook

Xv6 y 6.1810

  • Xv6 es un sistema operativo educativo simple, similar a Unix
  • Fue desarrollado en el verano de 2006 y portado a RISC-V para el curso de licenciatura 6.1810 del MIT

Código fuente y materiales de aprendizaje

Bibliografía para leer el Unix V6 original

  • The PDP11/40 Processor Handbook es un material útil para entender el código original de Unix V6
    • El PDF, basado en imágenes escaneadas, no permite búsqueda de texto
    • También se ofrece una versión web indexada por nombre de instrucción

Solicitud de retroalimentación

  • Están recibiendo retroalimentación sobre la experiencia de uso de Xv6, la experiencia al incorporarlo en clases, qué mejoras facilitarían su adopción y qué ha funcionado bien o mal
    • El contacto es 61810-staff@lists.csail.mit.edu

1 comentarios

 
GN⁺ 2024-06-09
Opiniones en Hacker News
  • Tomé esta clase en MIT y la recomiendo 20/10, especialmente para quienes no tienen experiencia en sistemas.
    El material es bastante fácil de entender y las prácticas son muy buenas para comprobar la comprensión. Eso sí, quizá convenga saltarse el driver de red en el primer intento.

    • Me pregunto si este curso está disponible en línea. No encontré grabaciones de las clases en OpenCourseWare, y encontré una playlist de YouTube relacionada con xv6, aunque no es de MIT, que se ve bastante buena: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • Tomé en UCI una clase que tomó buena parte del curso de MIT y la hizo mucho más fácil; aun así, la recomiendo.
  • Tomé una clase en MIT que usa este OS y fue realmente excelente.
    Hoy estuve revisando el sitio web del curso y, en la práctica, se puede cursar por cuenta propia. Están publicados los apuntes de clase, las prácticas, el repositorio de xv6 con branches para cada práctica y hasta cómo ejecutarlo uno mismo; el nivel de apertura es sorprendente.
    Primera práctica: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
    Pienso volver a hacer todo el curso completo por mi cuenta pronto.

  • Muchos proyectos de la clase universitaria de sistemas operativos consistían en construir algo sobre el sistema operativo xv6.
    Uno de ellos era crear un scheduler para xv, y sin duda fue una buena forma de aprender los distintos componentes de un sistema operativo.

  • En una universidad de España usaban, o quizá siguen usando, Plan 9 con fines educativos.

  • Cuando vi el título por primera vez, pensé que era una nueva versión del viejo visor de imágenes xv: http://www.trilon.com/xv/

  • Desde hace tiempo quería entender el kernel de Windows NT. Probablemente convenga mirar las primeras versiones, porque deberían ser más simples.
    He oído que la primera versión era cercana a VMS, pero me pregunto si eso es cierto. También me pregunto si hay material sobre VMS; escuché que OpenVMS es open source, aunque parece que la versión es demasiado alta.

    • Para conocer bien el proceso de desarrollo del kernel de NT, conviene leer el libro de 1996 Show Stopper.
      Es cierto que Dave Cutler lideró varios proyectos dentro de DEC, incluidos proyectos relacionados con VMS, pero lo que el kernel Microsoft New Technology heredó de VMS fue más bien un legado espiritual a nivel de diseño y arquitectura.
      Dave ya estaba trabajando en una gran renovación de VMS, o en un sucesor, antes de que su equipo fuera desplazado dentro de DEC, y buena parte de esa visión pasó a Windows, aunque también se sacrificaron algunos patrones de diseño robustos del mundo de las minicomputadoras.
      Cutler veía al equipo de MSDOS como programadores novatos que apilaban soluciones espagueti para el problema equivocado, pero como Bill Gates tenía el mercado bien amarrado con contratos OEM, Bill básicamente le dio un cheque en blanco para que sacara un kernel real que compitiera con lo que Steve estaba construyendo en NeXT.
      Así que, en funciones o forma, NT no es en absoluto igual a VMS, y en implementación tampoco. VMS tenía una biblioteca estándar de C y una suite de compiladores limpias. Aun así, puede verse como parte de la corriente de gente del mundo de las minicomputadoras que bajó a competir en el mundo de las microcomputadoras.
      Para captar mejor el ambiente, conviene ver en YouTube las entrevistas de Dave Plummer con Cutler.
    • Puedes mirar la serie de libros Windows Internals, números antiguos de MSTech Journal y DDJ, y los manuales de VMS en los archivos de Digital.
    • El código fuente de Windows 2000 se filtró en Internet, y es muy probable que también se hayan filtrado versiones más recientes. De hecho, se ha usado como herramienta educativa.
    • No es que la primera versión de NT fuera cercana a VMS.
      Hay muchísimo material sobre VMS; originalmente venía con varios metros de documentación. Todavía se vende y también se pueden conseguir imágenes de VM gratuitas para aficionados.
      OpenVMS no es open source, y tampoco es cierto que la versión sea demasiado alta.
      Antes de preguntar, siempre hay que verificar las premisas. Si quieres preguntar “¿B es posible porque A?”, primero tienes que confirmar que A sea verdadero.
    • ¿OpenVMS era open source?
  • Me pregunto por qué Unix v6. No entiendo por qué enseñar con un diseño de hace 50 años.
    Para enseñar los fundamentos de los sistemas operativos —scheduling, comunicación entre procesos, gestión de espacios de direcciones— creo que un diseño de microkernel sería mejor.

    • Estudiar las tecnologías precursoras de las que hoy se usan ampliamente es una buena forma de aprender cómo llegamos hasta aquí, por qué se hicieron ciertos compromisos y qué podríamos haber perdido.
      Luego permite entender con más profundidad las tecnologías nuevas y amplía la perspectiva para el resto de la carrera.
      Como alguien que se perdió parte de esa historia, me habría encantado aprenderla en la universidad.
    • Hay que aprender a caminar antes de correr. Xv6 es básico, pero para estudiantes que ven estos conceptos por primera vez es una muy buena introducción para aprender los fundamentos de sistemas operativos en un semestre.
    • No creo que muchos profesores elijan Xv6 para cursos de sistemas operativos solo porque tenga un gran diseño.
      Probablemente lo eligen porque es suficientemente bueno, simple y fácil de enseñar en un semestre en el que los estudiantes también llevan otras materias. Me pregunto si lo que quieres decir es que el diseño de microkernel no solo sería mejor, sino también más fácil de enseñar.
    • La arquitectura de von Neumann tiene 80 años. No veo por qué importa qué tan antiguo sea un diseño si sigue siendo el más relevante y el más usado.
      Las abstracciones básicas de Unix v6 siguen siendo válidas.
      La diferencia central entre microkernels y kernels monolíticos es cómo se comparte el espacio de direcciones entre el espacio de usuario y el kernel, y no veo bien por qué un diseño de microkernel sería mejor. También me pregunto por qué habría que enseñar un diseño que no se usa ampliamente.
    • Los microkernels cumplen un papel importante en el ecosistema de software, pero la mayor parte del software con el que interactuamos no está coordinado por un microkernel.
      La mayoría del software que se ejecuta en Internet tampoco corre sobre un microkernel, y lo mismo pasa con la mayoría del software que se puede conseguir en Internet. Un curso así no parece preparar lo suficiente para entender los kernels que uno usa o encuentra profesionalmente.
  • Me pregunto cuál sería una buena forma de que alguien autodidacta lo pruebe directamente.

  • Plan 9 también tiene una base de código bastante sencilla de entender.

    • Algunas decisiones de diseño de Plan 9 son dignas de respeto.
      Los namespaces por proceso, bind y tratar todo como archivo le dan una elegancia difícil de encontrar en otros OS tipo Unix.
  • El semestre pasado usamos PintOS en la clase de sistemas operativos, y me gustaría que hubiera una segunda parte más profunda.