1 puntos por GN⁺ 2025-01-26 | 1 comentarios | Compartir por WhatsApp
  • Snowdrop OS es un sistema operativo de 16 bits en modo real para la arquitectura IBM PC, un OS homebrew implementado directamente en x86 ensamblador desde el arranque hasta la ejecución de aplicaciones
  • La distribución se ofrece como imagen de disquete de 1.44 MB e imagen de CD-ROM, e incluye cargador de arranque, kernel, shell, utilidades, apps de prueba y el clon de Tetris aSMtris
  • Un cargador de arranque de 512 bytes encuentra el kernel y lo carga en memoria; luego el kernel configura los vectores de interrupción para las apps y carga la aplicación inicial
  • Incluye administrador de archivos, editor de texto, apps gráficas, intérprete de BASIC, ensamblador x86 y depurador, lo que permite desarrollar y experimentar dentro del propio OS
  • El código fuente está publicado sin restricciones de uso ni modificación, por lo que sirve como material de referencia para programadores que quieran seguir de cerca el funcionamiento de bajo nivel de un sistema operativo

Estructura implementada directamente desde el arranque hasta las apps

  • Snowdrop OS es un proyecto que nació de la curiosidad por entender qué ocurre cuando se enciende una PC y cómo funcionan internamente un disco booteable y un sistema operativo
  • El objetivo es un OS de 16 bits en modo real para la arquitectura IBM PC, escrito desde cero únicamente en x86 ensamblador
  • La imagen de distribución se ofrece en dos formatos
    • Imagen de 1.44 MB para disquete
    • Imagen de CD-ROM
  • La imagen incluye componentes clave escritos por el autor
    • Un cargador de arranque que carga el kernel en memoria
    • Un kernel que configura los vectores de interrupción para las aplicaciones de usuario y luego carga la app inicial
    • Apps de usuario como shell, utilidades, apps de prueba y el clon de Tetris aSMtris
  • Si durante el arranque detecta un disco duro, pregunta si se desea instalarlo, y Snowdrop OS puede instalarse en el disco duro
  • Las apps y herramientas incluidas abarcan administrador de archivos, editor de texto, aplicaciones gráficas, intérprete de BASIC, ensamblador x86 y depurador x86
  • El código fuente de Snowdrop OS y sus apps está publicado sin restricciones de uso ni modificación

Áreas del código fuente que vale la pena revisar

  • Boot loader: cabe en 512 bytes y encuentra y carga el kernel
  • kernel: proporciona servicios básicos y abstracciones para las aplicaciones
  • Graphics and GUI framework: base para crear aplicaciones gráficas y basadas en mouse
  • x86 assembler: permite crear directamente aplicaciones de bajo nivel dentro de Snowdrop OS
  • BASIC interpreter: herramienta para crear rápidamente aplicaciones de alto nivel
  • x86 debugger: puede usarse junto con el ensamblador
  • Dynamic data structure libraries: admite trabajo con estructuras de datos dinámicas como listas enlazadas, árboles y BST
  • All applications: incluye juegos, editor de texto, administrador de archivos, herramientas y aplicaciones de prueba

Funciones que fueron creciendo por versión

  • El historial de versiones muestra una evolución continua de funciones, empezando en v1 con tarea única, shell y aSMtris
    • v2: controlador de mouse PS/2 y app de prueba de mouse
    • v3: multitarea básica y soporte para pantallas virtuales
    • v4: controlador FAT12 con escritura y borrado, administrador de archivos y editor de texto
    • v6: juego Snake multijugador basado en puerto serial
    • v16: framework GUI
    • v18: intérprete de BASIC y linker
    • v19: instalación en disco duro
    • v22: ensamblador x86, soporte para múltiples discos y utilidad para ver archivos
    • v23: depurador x86
    • v25: memoria dinámica y estructuras de datos
    • v28: GUI de alta resolución, app de dibujo y app de escritorio
    • v31: biblioteca de runtime y RTL del intérprete de BASIC

1 comentarios

 
GN⁺ 2025-01-26
Opiniones en Hacker News
  • A mediados de los 90 hice algo parecido: un SO GUI hobbyista de 32 bits, y este libro era lectura absolutamente obligatoria
    https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...

    • Se puede leer gratis
      https://web.archive.org/web/20140704223135/https://www.ipdat...
      Sensory Publishing obtuvo los derechos, le cambió el título e imprimió 1,000 copias adicionales, pero ahora solo quedan unas 200 y ya no se vende. Según dicen, el libro ahora está en dominio público y los ejemplares restantes se conservarán para la Great Alexandria Library
  • Si te interesan este tipo de proyectos, también vale la pena ver MenuetOS y KolibriOS. KolibriOS es un fork de MenuetOS que se separó hace mucho tiempo
    MenuetOS también tiene una versión x64 con soporte SMP, pero esa es de código cerrado

    • Quiero aprender ensamblador, pero en Coursera no encontré un curso adecuado para principiantes absolutos. Tengo experiencia en Java y estoy tomando un curso de C/C++ para acercarme más al hardware
    • No entiendo por qué alguien haría algo así con código cerrado en 2025
      Fuera de un SO hobbyista, ¿quién lo usaría realmente en una máquina x64 multinúcleo?
    • Si quieres algo todavía más extremo, también está TempleOS
  • Me da curiosidad cuáles son hoy las ideas más interesantes y de vanguardia en diseño de SO, tanto desde la perspectiva del usuario como desde la de los hackers de SO

    • Lo tengo publicado discretamente, pero estoy trabajando en un nuevo diseño de kernel. Esta es mi 12.ª y última reescritura, y llevo aproximadamente un año desarrollándolo
      https://github.com/oro-os/kernel
      Es un diseño de microkernel sin usuarios ni capabilities, que impone el control de acceso mediante la jerarquía de entidades del kernel. El mecanismo principal de IPC son puertos de memoria compartida con varios niveles de seguridad, tipados a nivel del kernel
      Actualmente estoy en una etapa avanzada de validación de la utilidad del kernel. Si logro demostrar el diseño, planeo escribir algo más formal. Lleva unos 8 años como proyecto en mi cabeza y unos 4 años dentro del editor
    • Las grandes ideas de Plan 9, en general, todavía no han sido superadas ni reimplementadas correctamente
      https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
    • Fuchsia tiene bastantes ideas audaces. Cosas como microkernel, capabilities y un sistema poco común de instalación de apps; parece querer hacer que las apps se parezcan más a sitios web
      https://rtic.rs/ es una idea bastante interesante en un terreno parecido al de los RTOS embebidos
      Siendo sinceros, todavía hay funciones de Plan 9 que están muy por delante de Linux. Por ejemplo, https://9p.io/sys/doc/lexnames.html
    • Genode [1] es interesante como enfoque de diseño de SO porque es un framework. Aunque no sé cuánto ensamblador incluye
      [1] https://genode.org
    • Considerando los dos extremos en sentido amplio, creo que la mejor respuesta es Redox OS
      https://redox-os.org/
  • En un sentido parecido, me pregunto qué avances hay en RTOS de alto rendimiento para robótica. Parece un área con relativamente poca atención
    ROS/ROS2 no son sistemas operativos, y la mayoría tampoco es algo que uno llamaría software de alto rendimiento

    • x86 y RTOS no encajan muy bien por factores como SMM y cachés complejas. Si tienes tareas de alto rendimiento, probablemente quieras controlarlas con uno o varios MCU embebidos aparte
      En el mundo embebido hay muchos SO como FreeRTOS, Zephyr y ThreadX, además de varias soluciones propietarias como Nvidia DriveOS
      Pero los SO embebidos son bastante limitados en comparación con un SO general como Linux. Tienen planificadores de tareas, pero muchas veces no tienen procesos, sistemas de archivos, carga dinámica de archivos, herramientas binarias, etc., o son opcionales
    • La gente que se lo toma en serio parece usar QNX o VxWorks. Lamentablemente, la mayoría de los proyectos de robótica no son tan serios y corren Ubuntu
    • Aunque no es un RTOS en el sentido habitual, RTIC está bien. Tengo entendido que se desarrolló originalmente para robótica
      https://rtic.rs
  • Hay artículos relacionados como estos. ¿Habrá otros?
    Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - ene 2024 (1 comentario)
    Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - ago 2021 (3 comentarios)

  • Para ser precisos, es ensamblador x86

    • Para ser más precisos, es ensamblador x86 en modo real de 16 bits
  • Es impresionante el conjunto de herramientas y apps que creó. Aun así, parece que no cayó en la tentación del self-hosting
    Para llevar el ensamblador al nivel de nasm, haría falta más trabajo, o habría que acercar todo el código fuente al ASM de Snowdrop

  • V32; estaría bueno que también hubiera un compilador BASIC
    Parece que se podrían hacer solicitudes de funcionalidades

  • Me gustaría ver esto porteado a esp32, por ejemplo corriendo en una placa como la ttgo vga32
    Sería bueno tener un SO básico con GUI y shell, con tarjeta SD, VGA, sonido, teclado/mouse, WiFi y Bluetooth. Algo con sensación de Commodore 64 moderno, con impresión por WiFi aunque sea solo texto, un navegador tipo lynx, email, IRC, gopher y cosas así

  • Los requisitos de compilación de Snowdrop OS son impresionantes
    Funciona en: Windows XP 32bit, Windows 98, Windows 95