51 puntos por GN⁺ 2025-03-22 | 1 comentarios | Compartir por WhatsApp
  • Una guía práctica sobre cómo desarrollar directamente un sistema operativo x86
  • Escrito para ofrecer detalles técnicos sin revelar demasiada información mediante ejemplos de código o muestras
  • No explica la teoría de los sistemas operativos ni cómo funciona un sistema operativo específico
  • Los primeros capítulos explican con detalle y de forma concreta para que puedas familiarizarte rápidamente con la escritura de código
  • Los capítulos posteriores describen de manera general los conceptos y requisitos, y animan al lector a encargarse de la implementación y el diseño
  • Si necesitas estudiar teoría de sistemas operativos, recomiendan Modern Operating Systems de Andrew Tanenbaum

Contenido principal de los capítulos

  • Primeros capítulos
    • Cap. 2~3: configuración del entorno de desarrollo y arranque del kernel del OS en una máquina virtual → comienzo de la escritura de código en C
    • Cap. 4: salida en pantalla y salida por puerto serial
    • Cap. 5: segmentación
    • Cap. 6: interrupciones y manejo de entrada
  • Después del desarrollo de un kernel funcional
    • Cap. 7: preparación para soportar aplicaciones en modo usuario
    • Cap. 8~9: configuración de memoria virtual mediante paginación
    • Cap. 10: asignación de memoria
    • Cap. 11: ejecución de aplicaciones de usuario
  • Temas avanzados
    • Cap. 12: sistema de archivos
    • Cap. 13: llamadas al sistema
    • Cap. 14: multitarea

Contexto del libro y proceso de desarrollo

  • Este libro y el kernel del OS se desarrollaron a través de un curso individual avanzado del Royal Institute of Technology de Suecia
  • Los autores ya habían tomado antes una materia de teoría de OS, pero tenían poca experiencia real en desarrollo de kernels
  • Abrieron un nuevo curso y escribieron este libro para implementar la teoría en la práctica y profundizar su comprensión
  • La arquitectura x86 fue durante mucho tiempo la arquitectura de hardware más utilizada, y cuenta con abundante material de referencia y emuladores
  • La documentación sobre los detalles del hardware solía ser compleja y difícil de entender

Forma de desarrollo

  • Trabajo de tiempo completo durante unas 6 semanas
  • Implementación en pasos pequeños y pruebas manuales en cada etapa → facilita identificar la causa de los bugs
  • La mayor parte del código se escribió mediante pair programming → se esperaba reducir los bugs

Público objetivo

  • Adecuado para lectores con conocimientos previos como los siguientes:
    • Familiaridad con UNIX/Linux y programación de sistemas
    • Familiaridad con el lenguaje C
    • Comprensión de sistemas computacionales y notación hexadecimal, entre otros
  • Los principiantes también pueden usarlo como herramienta de aprendizaje, pero su nivel de dificultad es alto

1 comentarios

 
GN⁺ 2025-03-22
Opiniones de Hacker News
  • Me encanta osdev. No sé cuál es la meta final, pero está increíble poder construir lo que uno quiere

    • Cuando logré hacer funcionar las interrupciones básicas de x86 y las llamadas al sistema, todo empezó a tener sentido
    • En cuanto empiezas con las llamadas al sistema, sientes que el mundo te pertenece
    • Recomiendo muchísimo trastear con un OS como hobby
    • Lo usé como oportunidad para aprender Rust y obtuve mucho más de lo que esperaba
    • Ahora ya me manejo bastante bien con Rust y puedo lanzar más errores dobles y triples que la mayoría de la gente
  • Mucha gente recomienda su alternativa favorita, pero yo sigo siendo muy fan de Project Oberon

    • Puede que no sea adecuado para la computación de 2025, pero es un OS gráfico pequeño escrito en un lenguaje de sistemas con seguridad de memoria
    • Tiene suficiente contenido como para aprender sobre desarrollo de OS
    • Sitio web de Project Oberon
  • Este libro tiene el defecto clásico de los tutoriales de osdev

    • Hay mucha explicación sobre detalles de x86, pero casi nada sobre osdev
    • Los detalles de x86 no son osdev
    • Es una parte extremadamente pequeña de lo que un OS básico tiene que manejar
  • Mi libro favorito sobre OS sigue siendo Operating Systems: Three Easy Pieces

    • Trata más sobre cómo funcionan que sobre desarrollarlos
    • Está disponible gratis en formatos HTML y PDF, y también venden el libro impreso
    • Sitio web de OSTEP
  • ¡Gracias! Parece un recurso excelente sobre este tema

    • Ojalá todavía tuviera el código fuente del "OS" que hice cuando era adolescente
    • Escribí un bootloader MBR, el cambio a modo protegido, mostrar caracteres en pantalla e incluso la entrada del teclado
    • Lo recomiendo muchísimo si estás buscando un reto divertido
  • Este comentario me da mucha nostalgia por los 2000

    • Había un sitio web llamado planet-source-code.com que era popular en la comunidad de desarrolladores
    • Había cientos de mini sistemas operativos hechos por los miembros
    • La mayoría tenían bootloaders escritos en C/C++ y ensamblador, compilados con Mingw32, y arrancaban desde un disquete común
  • El libro es bueno. Vale la pena revisar los issues en GitHub

    • Hay partes que necesitan corrección
    • El último commit fue hace 10 años
  • Ojalá dos libros japoneses sobre desarrollo de sistemas operativos fueran traducidos al inglés

    • Te llevan hasta hacer funcionar ventanas en un entorno gráfico
    • Uno de ellos es un reto de 30 días
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • Hubo un intento de traducir "30-days Homemade OS" al inglés, pero no llegó muy lejos
    • os-in-30-days GitHub
    • No conozco ningún libro ni artículo en inglés que llegue tan lejos
    • El capítulo del entorno gráfico de Fusion todavía no está terminado
    • Sitio web de Fusion OS
  • Me pregunto dónde estará el manual del pequeño libro rojo de OS

  • Hablando de desarrollo de OS, los juegos hacen que aprender sea divertido

    • Quería hacer un juego que enseñara sistemas operativos mientras recorres la historia de la computación
    • El jugador asumiría el papel del planificador de procesos y del manejador de interrupciones
    • Podría empezar en un sistema de una sola CPU con RAM muy limitada, crecer hasta sistemas SMP y llegar a las plataformas modernas de computación distribuida multisistema