¿Cuáles son algunos recursos para comenzar en el desarrollo de sistemas operativos? [cerrado]

Resuelto Giovanni Galbo asked hace 16 años • 28 respuestas

Una cosa que siempre quise hacer es desarrollar mi propio sistema operativo (no necesariamente sofisticado como Linux o Windows, pero mejor que un simple gestor de arranque, algo que ya he hecho).

Me está costando encontrar recursos/guías que le ayuden a escribir un sistema operativo simple "Hola mundo".

Sé que mucha gente probablemente me recomendará que mire Linux o BSD; pero la base del código para sistemas como ese es (presumiblemente) tan grande que no sabría por dónde empezar.

¿Alguna sugerencia?

Actualización: para que sea más fácil para las personas que acceden a esta publicación a través de Google, aquí hay algunos recursos de desarrollo del sistema operativo:

  • Escribir su propio sistema operativo (gracias Adam)

  • Linux desde cero (gracias John)

  • SharpOS (sistema operativo C#) (Gracias lomaxx)

  • Minix3 y Minix2 (Gracias Mike)

  • Foros y wiki para desarrolladores de SO (gracias Steve)

  • De buena fe (gracias Steve)

  • Bran (gracias Steve)

  • Rueda tu propio sistema operativo clon UNIX de juguete (Gracias Steve)

  • Serie de desarrollo del sistema operativo Broken Thorn

Otros recursos:

Encontré un buen recurso llamado MikeOS , "MikeOS es una herramienta de aprendizaje para demostrar cómo funcionan los sistemas operativos simples. Utiliza el modo real de 16 bits para acceder al BIOS, por lo que no necesita controladores complejos".

Actualizado el 14/11/08

Encontré algunos recursos en la Guía de Freebyte para... Sistemas operativos gratuitos y no gratuitos que enlazan con kits como OSKit y la biblioteca ExOS. Parecen muy útiles para iniciarse en el desarrollo del sistema operativo.

Actualizado el 23/02/09

Ric Tokyo recomendó nanoos en esta pregunta . Nanoos es un sistema operativo escrito en C++.

Actualizado el 9/03/09

Dinah proporcionó una discusión útil sobre Stack Overflow para aspirantes a desarrolladores de sistemas operativos: Obstáculos en la creación de un sistema operativo personalizado analiza los obstáculos que puede encontrar al desarrollar un sistema operativo y el desarrollo del sistema operativo es una discusión más general.

Actualizado el 9/07/09

LB proporcionó un enlace al Proyecto Pintos , un sistema operativo educativo diseñado para estudiantes que aprenden a desarrollar sistemas operativos.

Actualizado el 27/07/09 (¡Aún va fuerte!)

Me topé con un curso de SO en línea de Berkley que incluía 23 conferencias.

TomOS es una bifurcación de MikeOS que incluye un pequeño administrador de memoria y soporte para mouse. Al igual que MikeOS, está diseñado para ser un proyecto educativo. Está escrito en ensamblador NASM.

Actualizado el 4/8/09

Encontré las diapositivas y otros materiales que acompañan a las conferencias en línea de Berkeley mencionadas anteriormente.

Actualizado el 23/08/09

Todas las preguntas etiquetadas como osdev en stackoverflow

OS/161 es un sistema operativo académico escrito en c que se ejecuta en un hardware simulado. Este sistema operativo es similar en Nachos. Gracias Novelócrata!

tangurena recomienda http://en.wikipedia.org/wiki/MicroC/OS-II , un sistema operativo diseñado para sistemas integrados. También hay un libro complementario .

Anders sugiere el desarrollo del kernel de Linux por Robert Love. Es una "mirada interna ampliamente aclamada sobre el kernel de Linux".

Actualizado el 18/09/2009

Gracias Tim S. Van Haren por hablarnos sobre Cosmos , un sistema operativo escrito íntegramente en C#.

tgiphil nos habla sobre el marco de la Managed Operating System Alliance (MOSA) , "un conjunto de herramientas, especificaciones y código fuente para fomentar el desarrollo de sistemas operativos administrados basados ​​en el lenguaje intermedio común".

Actualización 24/09/2009

Steve encontró un par de recursos para el desarrollo en Windows usando Visual Studio, consulte la guía de configuración de BrokenThorn con VS 2005 o la sección VS de OSDev .

Actualizado el 5/09/2012

kerneltrap.org ya no está disponible. El kernel de Linux v0.01 está disponible en kernel.org

Actualizado el 21/12/2012 Un tutorial básico de desarrollo de sistema operativo diseñado para ser un proyecto de un semestre. Le guía para construir un sistema operativo con componentes básicos. Muy buen comienzo para principiantes. Papel relacionado . Gracias Srujan!

Actualizado 15/11/2013

Escribir un sistema operativo simple desde cero . Gracias James Moore!

Actualizado el 8/12/2013

Cómo hacer un sistema operativo para computadora ¡Gracias ddtoni!

Actualizado el 18/03/2014

ToAruOS, un sistema operativo construido principalmente desde cero, incluida GUI

Actualizado el 12 de septiembre de 2016

Escribiendo tu propio sistema operativo de juguete

Actualizado el 10 de diciembre de 2016

Escribir un sistema operativo simple, desde cero (gracias @Tyler C)

Giovanni Galbo avatar Sep 04 '08 11:09 Giovanni Galbo
Aceptado

Hay muchos enlaces después de esta breve descripción general de lo que implica escribir un sistema operativo para la plataforma X86.

El enlace que parece ser más prometedor (www.nondot.org/sabre/os/articles) ya no está disponible, por lo que necesitarás revisar la versión de Archive.org para leerlo.

Al final del día, el gestor de arranque toma el código de máquina del kernel, lo guarda en la memoria y salta a él. Puede poner cualquier código de máquina en el kernel que desee, pero la mayoría de los programas C esperan un sistema operativo, por lo que deberá decirle a su compilador que no tendrá todo eso, o el gestor de arranque tendrá que crear algo de él.

Luego, el kernel hace todo el trabajo pesado y sospecho que lo que desea es el kernel de ejemplo. Pero hay un largo camino por recorrer entre tener un kernel que diga "Hola mundo" y tener un kernel que cargue un intérprete de comandos, proporcione servicios de disco y cargue y administre programas.

Es posible que desee considerar suscribirse a ACM para obtener acceso a su literatura más antigua: hay muchos artículos de finales de los 80 y principios de los 90 en las primeras revistas de informática sobre cómo crear sistemas operativos alternativos . Es probable que también haya libros agotados de esta época. Es posible que pueda obtener la misma información de forma gratuita buscando los índices de esas revistas (que están disponibles en ese sitio; haga clic en "índice" cerca del nombre de la revista) y luego preguntando por personas que tengan una copia.

Por último, sé que Usenet está muerto (porque eso dicen los profetas de la ruina de Internet), pero descubrirás que muchos de los viejos y escarpados expertos de esa época todavía viven allí. Deberías buscar grupos de Google (tienen el antiguo repositorio de dejanews) y espero que encuentres muchas personas haciendo las mismas preguntas hace una década o 1,5 que tú haces ahora. Incluso puede encontrarse con las muchas consultas de ayuda de Linus Torvalds mientras desarrollaba Linux originalmente. Si las búsquedas no arrojan nada, pregunte en el grupo de noticias correspondiente (probablemente comience con comp.arch, pero busque aquellos que tengan OS en el nombre).

Adam Davis avatar Sep 05 '2008 12:09 Adam Davis

Minix es mucho más pequeño y está diseñado con fines de aprendizaje, y el libro que lo acompaña también es bueno.

Actualización: Supongo que Minix 3 tiene un objetivo un poco diferente, pero Minix 2 (y, por supuesto, la primera versión) tenían fines didácticos.

Mike Stone avatar Sep 04 '2008 04:09 Mike Stone

Como alguien que ha escrito un sistema operativo multitarea en tiempo real desde cero...

rutina antirrebote del teclado, controlador de teclado, controlador de disco, controlador de video, sistema de archivos y, finalmente, un cargador de arranque, ¡y eso es solo para iniciarlo por primera vez sin nada que hacer!

... ¡No puedo enfatizar lo suficiente lo importante que es familiarizarse con el hardware! Esto es especialmente cierto si realmente desea hacerlo todo usted mismo en lugar de simplemente elegir un sistema primitivo que alguien ya haya diseñado para usted. Por ejemplo, comuníquese con Intel y pídales una tarjeta de CPU para su tipo de CPU. Esto se lo indicará: los "pin-outs", las interrupciones, los códigos de operación, ¡lo que sea!

Recuerde que el hardware lo hace todo posible. Estudia el hardware. No te arrepentirás.

.

Richard T avatar Oct 20 '2008 05:10 Richard T

Escribir un sistema operativo de microcontrolador. Recomiendo un microcontrolador basado en x86. Un sistema operativo moderno es simplemente enorme . Aprenda los conceptos básicos primero.

Paul Nathan avatar Oct 20 '2008 05:10 Paul Nathan