- 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-riscvyxv6-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
- El código fuente más reciente de Xv6 se puede obtener con el siguiente comando
- La documentación más reciente de Xv6 se ofrece en un repositorio aparte
- Xv6 está inspirado en Unix V6 y en Commentary on UNIX' 6th Edition de John Lions
- Lions commentary versión en línea
- Unix V6 source code
- V6 source code a través de The Unix Heritage Society
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
- El contacto es
1 comentarios
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.