126 puntos por GN⁺ 2025-01-09 | 14 comentarios | Compartir por WhatsApp
  • Este libro explica cómo construir un sistema operativo pequeño desde cero, paso a paso
  • La idea de desarrollar un sistema operativo (OS) o un kernel puede intimidar, pero las funciones básicas de un OS (especialmente el kernel) son sorprendentemente simples
  • Linux también comenzó con apenas 8,413 líneas de código, y aunque el kernel de Linux actual es enorme, empezó como una pequeña base de código, como un proyecto de hobby

Primeros pasos

  • Se implementarán en C el cambio de contexto básico, paginación, modo usuario, un shell de línea de comandos, controladores de dispositivos de disco y operaciones de lectura/escritura de archivos
  • Todo esto es posible en 1,000 líneas de código
  • La parte más difícil de crear un OS por tu cuenta es la depuración
  • No se puede usar hasta implementar la depuración con printf, y hay que aprender varias técnicas y habilidades de depuración que normalmente no hacen falta en el desarrollo de aplicaciones
  • En particular, al empezar "desde cero" te encontrarás con partes difíciles como el proceso de arranque y la paginación
  • ¡Pero no te preocupes! También aprenderás cómo depurar un OS
  • Cuanto más difícil es depurar, mayor es la satisfacción al lograrlo
  • ¡Atrévete a entrar al fascinante mundo del desarrollo de sistemas operativos!

Información adicional

  • Los ejemplos de implementación se pueden descargar desde GitHub.
  • Este libro se ofrece bajo la licencia CC BY 4.0, y los ejemplos de implementación y el código fuente están bajo la licencia MIT
  • Debes estar familiarizado con C y con un entorno tipo UNIX; si puedes ejecutar gcc hello.c && ./a.out, entonces ya estás listo
  • Este libro fue escrito originalmente como un apéndice del libro en japonés "Diseño e implementación de microkernels"
  • ¡Que disfrutes hackeando sistemas operativos!

Índice del libro

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

14 comentarios

 
princox 2025-01-15

Siempre había conocido lo que es un sistema operativo solo a través de libros, así que está muy bien poder verlo en código real.

Gracias por compartir este excelente material.

 
yuhyun 2025-01-13

¡Gracias por el excelente material!!!!!!!!

 
reagea0 2025-01-10
  • Este libro fue escrito originalmente como un apéndice del libro "Diseño e implementación de microkernels", que fue escrito en japonés.

Me da mucha envidia escuchar eso. Parece que en Japón realmente se publican muchos buenos libros especializados. Supongo que será un tema de población, ¿no?

 
gurugio 2025-01-11

Parece que, entre los libros que se traducen, no hay muchos que profundicen tanto en lo técnico; más bien da la impresión de que salen libros de áreas muy diversas. Supongo que eso se debe a que el mercado es más grande.

 
romakus 2025-01-10

Gracias por el buen material.

 
skrevolve 2025-01-09

Intenta hacerlo una vez, o al menos hasta llegar a un nivel en el que lo entiendas. Después te será útil al trabajar con Linux, porque podrás ver cómo funciona internamente el sistema Linux.

 
gurugio 2025-01-09

Hasta principios de los 2000 también estuvo de moda que cada quien intentara hacer un kernel pequeño, así que yo también lo probé y gracias a eso pude dedicarme durante algunos años al desarrollo del kernel de Linux. Como en el país también salieron muchos libros sobre cómo crear sistemas operativos, si buscas bien podrás conseguir libros que lo explican con más detalle.
Si no vas a cambiarte a un trabajo relacionado y solo lo harías por diversión, no está mal, pero yo hoy en día recomendaría más estudiar temas de IA o de k8s. Incluso ahora, de vez en cuando, aparecen publicaciones en sitios como KLDP de gente que dice que quiere convertirse en desarrollador de kernel, pero si ves los comentarios, todos les dicen que se vayan al extranjero.

 
bbulbum 2025-01-10

Probablemente sea porque en el país no hay empresas que inviertan a nivel de kernel... ¿no? jaja

 
gurugio 2025-01-11

No sé bien si no lo hacen porque no hace falta o porque no pueden, pero de que no hay, no hay.

 
coma333 2025-01-09

Muchas gracias por el buen material.

 
tsboard 2025-01-09

Supongo que este tipo de libros son justo como esos manuales secretos de artes marciales de los que hablan las novelas de wuxia, ¿no? jaja

 
bbulbum 2025-01-09

Qué interesante. Siempre quise estudiar programación de sistemas algún día, y esto me hace pensar que podría ser una buena primera aproximación para entender, desde la programación, cómo funciona un sistema operativo.

 
GN⁺ 2025-01-09
Comentarios de Hacker News
  • El autor escribió el libro para que uno pueda intentar crear su propio sistema operativo durante el fin de semana, y se puede usar el lenguaje de programación que prefieras, como Rust o Zig, en lugar de C

    • Dejó solo las partes esenciales para que no se pareciera a UNIX, y también es divertido pensar en las diferencias con Linux o Windows
    • Diseñar un sistema operativo es como crear tu propio mundo
    • Algunos párrafos pueden sentirse como traducidos por máquina, y pide que, si alguien tiene tiempo, le envíe un PR
    • El contenido está escrito en Markdown
  • Basado en experiencia programando sistemas operativos de "hobby", conviene agregar la configuración de depuración con GDB lo antes posible

    • QEMU tiene un servidor GDB integrado, y hay que conectar por red el cliente GDB de la arquitectura objetivo (riscv) al servidor GDB de QEMU
  • Parece genial hacer un sistema operativo pequeño para RISC-V

    • En lo personal, escribió un kernel para x86-64 en Nim y está desarrollando un plugin para JetBrains
  • Para quienes son fans de Rust, la guía de phil-opp puede ser un ejercicio entretenido

    • La primera vez que lo intentó, solo entendió como un 5%, pero 2-3 años después lo volvió a intentar y fue revisando el tema paso por paso
  • Empezó a estudiar RISC-V, y el emulador que trae el libro que está leyendo es más simple que QEMU y tiene una licencia extraña

    • Parece un proyecto académico, y se pregunta si realmente se usa
  • Sería interesante compararlo con xv6-riscv

    • Ofrece una versión HTML del libro de xv6
  • Las discusiones de bajo nivel siempre son interesantes

    • Encontró un pequeño error tipográfico en la "página 101 de RISC-V", donde dice "CPU" por error en lugar de "ISA"
  • La parte más complicada de hacer un sistema operativo es la depuración

    • A medida que envejece, cree más que los problemas que no requieren conocimiento especializado complejo se pueden resolver con intentos repetidos
  • Se mencionan dos proyectos

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • Es un buen material, y lo guardó para leerlo el fin de semana

 
mhcoma 2025-01-14

El kernel en Nim...
Suena divertido.