Pregunta ¿Cuáles son algunos recursos para comenzar a desarrollar el sistema operativo? [cerrado]


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

Me está costando encontrar recursos / guías que lo guíen a escribir un simple sistema operativo "Hello World".

Sé que mucha gente probablemente recomendará que mire Linux o BSD; pero la base de código para sistemas como ese (es de suponer) 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 llegan a esta publicación a través de Google, aquí hay algunos recursos de desarrollo de SO:

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 el acceso al BIOS, por lo que no necesita controladores complejos".

Actualizado 14/11/08 

Encontré algunos recursos en Guía de Freebyte para ... Sistemas operativos gratuitos y no libres que se vincula a kits como OSKit y la biblioteca ExOS. Estos parecen muy útiles para comenzar a desarrollar el sistema operativo.

Actualizado 23/02/09

Ric Tokyo recomendado nanoos en esto pregunta. Nanoos es un sistema operativo escrito en C ++.

Actualizado el 9/03/09

Dinah brindó una útil discusión de Stack Overflow sobre aspirantes a desarrolladores de sistemas operativos: Barricadas en la creación de un sistema operativo personalizado discute los peligros que puede encontrar al desarrollar un sistema operativo y Desarrollo de SO es una discusión más general.

Actualizado 7/9/09

LB proporcionó un enlace a la Proyecto Pintos, un sistema operativo educativo diseñado para estudiantes que aprenden el desarrollo del sistema operativo.

Actualizado 27/07/09 (¡Sigue siendo fuerte!)

Me encontré con una Curso de SO en línea de Berkley con 23 conferencias.

TomOS es un tenedor de MikeOS eso incluye un pequeño administrador de memoria y soporte para el mouse. Como MikeOS, está diseñado para ser un proyecto educativo. Está escrito en ensamblador NASM.

Actualizado el 4/4/09

Encontré el diapositivas y otros materiales para acompañar las conferencias en línea de Berkeley enumeradas anteriormente.

Actualizado 23/08/09

Todas preguntas etiquetadas 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 Novelocrat!

Tangurena recomienda http://en.wikipedia.org/wiki/MicroC/OS-II, un sistema operativo diseñado para sistemas integrados. Hay un libro compañero también.

Desarrollo del kernel de Linux por Robert Love es sugerido por Anders. Es una "mirada privilegiada ampliamente aclamada en el kernel de Linux".

Actualizado el 18/9/2009

Gracias Tim S. Van Haren por contarnos sobre Cosmos, un sistema operativo escrito completamente en c #.

tgiphil nos cuenta sobre Marco de Alianza de Sistemas Operativos Administrados (MOSA), "un conjunto de herramientas, especificaciones y código fuente para fomentar el desarrollo de sistemas operativos gestionados basados ​​en el Lenguaje Intermedio Común".

Actualización 24/9/2009

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

Actualizado el 9/5/2012

kerneltrap.org ya no está disponible. El núcleo de Linux v0.01 está disponible desde kernel.org

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

Actualizado el 15/11/2013

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

Actualizado el 12/8/2013

Cómo hacer un sistema operativo de 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)


551
2017-09-05 12:38


origen


Respuestas:


Hay muchos enlaces después de esto breve descripción 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 tendrá que hojear el Versión de Archive.org para leerlo

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

El kernel hace todo el trabajo pesado, y sospecho que es el kernel de ejemplo que desea. Pero hay un largo camino por recorrer entre tener un núcleo que dice "Hola mundo" a tener un núcleo que carga un intérprete de comandos, proporciona servicios de disco y carga y administra programas.

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

Por último, sé que usenet está muerto (por así decir los profetas de la fatalidad en Internet), pero verás que muchos de los antiguos expertos de esa época todavía viven allí. Debes buscar en los grupos de google (tienen el antiguo repositorio de dejanews) y espero que encuentres a muchas personas haciendo las mismas preguntas hace una década o 1.5 atrás que estás preguntando ahora. Incluso puede encontrarse con las muchas consultas de Linus Torvalds en busca de ayuda, ya que originalmente estaba desarrollando Linux. Si las búsquedas no llevan nada, pregunte en el grupo de noticias apropiado (probablemente comience con comp.arch, pero busque los que tengan sistema operativo en el nombre).


91
2017-09-04 04:30



Minix es mucho más pequeño, y está diseñado para fines de aprendizaje, y el libro para ir con eso es uno bueno también

Actualización: supongo que Minix 3 es un objetivo diferente, pero Minix 2 (y, por supuesto, la primera versión) fueron para fines de enseñanza.


34
2017-10-20 05:09



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

la rutina de eliminación de errores del teclado, el controlador del teclado, el controlador de disco, el controlador de video, el 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 suficientemente 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 más ya le haya presentado. Por ejemplo, contáctese con Intel y pídales una tarjeta de CPU para su tipo de CPU. Esto se lo presentará: los "pines", 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.

.


30
2017-10-20 05:47



Escribe un microcontrolador OS. Recomiendo un microcontrolador basado en x86. Un SO moderno es solo enorme. Aprende los conceptos básicos primero.


17
2017-09-23 17:29



Ojalá hubiera un lugar para obtener toda la información sobre el desarrollo de tu propio sistema operativo. Lo más cercano a llegar a eso es OS Dev Wiki y Foros. Ofrecen mucha información sobre la configuración, el desarrollo y la información del hardware del dispositivo.

También hay algunos excelentes tutoriales en BoneFide, He usado el tutorial de inicio por Salvado, y ahora estoy mirando uno más reciente basado en su llamado Haz rodar tu propio sistema operativo UNIX-clone.

En segundo lugar mirando: "Sistemas operativos: diseño e implementación"

Y si desea desarrollar en Windows, consulte la publicación de blog de jolson.

Editar: Para el desarrollo en Windows usando Visual Studio, echa un vistazo Guía de BrokenThorn o Wiki de OSDev.


15
2017-09-04 06:20



Un recurso excelente es el material del curso MIT 6.828: Ingeniería del sistema operativo.

XV6: sistema de enseñanza simple similar a Unix escrito en ANSI C para x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html

Fuente XV6: como un folleto impreso con números de línea http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf

Libro XV6: explica las ideas principales del diseño de os http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf

El material es compacto: 92 páginas fuente y 96 páginas comentario.

¡Me gusta más que el libro de Minix! Es una verdadera joya!


12
2017-09-04 04:33



También es posible que desee echar un vistazo a SharpOS que es un sistema operativo que están escribiendo en c #.


11
2018-03-09 18:07