Cómo implementar un sistema operativo en 1,000 líneas
(operating-system-in-1000-lines.vercel.app)- 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
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
14 comentarios
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.
¡Gracias por el excelente material!!!!!!!!
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?
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.
Gracias por el buen material.
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.
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.
Probablemente sea porque en el país no hay empresas que inviertan a nivel de kernel... ¿no? jaja
No sé bien si no lo hacen porque no hace falta o porque no pueden, pero de que no hay, no hay.
Muchas gracias por el buen material.
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
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.
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
Basado en experiencia programando sistemas operativos de "hobby", conviene agregar la configuración de depuración con GDB lo antes posible
riscv) al servidor GDB de QEMUParece genial hacer un sistema operativo pequeño para RISC-V
Para quienes son fans de Rust, la guía de phil-opp puede ser un ejercicio entretenido
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
Sería interesante compararlo con xv6-riscv
Las discusiones de bajo nivel siempre son interesantes
La parte más complicada de hacer un sistema operativo es la depuración
Se mencionan dos proyectos
Es un buen material, y lo guardó para leerlo el fin de semana
El kernel en Nim...
Suena divertido.