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

StackOverflow https://stackoverflow.com/questions/43180

  •  09-06-2019
  •  | 
  •  

Pregunta

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?

Actualizar: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 del sistema operativo:

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 a la BIOS, por lo que no necesita controladores complejos"

Actualizado el 14/11/08

Encontré algunos recursos en Guía de Freebyte para... Sistemas operativos libres y no libres que enlaza 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 Tokio recomendado nanoos en esto pregunta.Nanoos es un sistema operativo escrito en C++.

Actualizado el 9/03/09

Dinah proporcionó algunas discusiones útiles sobre Stack Overflow sobre aspirantes a desarrolladores de sistemas operativos: Obstáculos en la creación de un sistema operativo personalizado discute qué dificultades puede encontrar mientras desarrolla un sistema operativo y 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 con 23 conferencias.

TomOS es un tenedor de mikeos eso 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é el diapositivas y otros materiales para acompañar las conferencias en línea de Berkeley mencionadas anteriormente.

Actualizado el 23/08/09

Todo preguntas etiquetadas osdev en desbordamiento de pila

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.Hay un libro complementario también.

Desarrollo del núcleo de Linux de Robert Love es sugerido por Anders.Es una "mirada interna ampliamente aclamada sobre el kernel de Linux".

Actualizado el 18/09/2009

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

tgiphil nos habla de Marco de la Alianza de Sistemas Operativos Gestionados (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/09/2009

Steve encontró un par de recursos para el desarrollo en Windows usando Visual Studio, consulte Guía de configuración de BrokenThorn con VS 2005 o 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 21/12/2012Un desarrollo básico del sistema operativo. tutorial 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.Relacionado papel.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)

¿Fue útil?

Solución

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ás que hurgar en el Versión 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 que 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.

Quizás quieras considerar suscribirte a ACM para tener 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).

Otros consejos

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

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

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.

.

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.

Ojalá hubiera un solo lugar para obtener toda la información sobre cómo desarrollar su propio sistema operativo.Lo más cercano a llegar a eso es Wiki para desarrolladores de SO y Foros.Ofrecen un montón de buena información sobre la configuración, el desarrollo y el hardware del dispositivo.

También hay algunos tutoriales geniales en huesofide, He usado el tutorial de introducción de Salvado, y ahora estoy viendo uno más reciente basado en su llamado Rueda tu propio sistema operativo clon UNIX de juguete.

Segundo comprobando:"Sistemas operativos :Diseño e implementación"

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

Editar:Para el desarrollo en Windows usando Visual Studio, consulte La guía de BrokenThorn o Wiki de OSDev.

Un excelente recurso es el material del curso MIT 6.828:Ingeniería de Sistemas Operativos.

XV6: sistema operativo de enseñanza simple tipo Unix escrito en ANSI C para x86http://pdos.csail.mit.edu/6.828/2012/xv6.html

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

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

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

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

es posible que también quieras echar un vistazo a Sharp OS que es un sistema operativo que están escribiendo en C#.

Hay buenos recursos sobre los fundamentos del sistema operativo en los libros.Dado que no hay mucha demanda para crear nuevos sistemas operativos desde cero, no encontrará mucha información de tipo aficionado en Internet.

Recomiendo el libro de texto estándar "Sistemas operativos modernos" de Tanenbaum.También puede resultarle útil "Elementos del sistema operativo" de Calingaert: es una breve descripción general de un libro que ofrece un esbozo aproximado de lo que es un sistema operativo desde el punto de vista de un diseñador.

Si tiene algún interés en los sistemas en tiempo real (y al menos debería comprender las diferencias y las razones de los sistemas operativos en tiempo real), también le recomendaría "MicroC/OS-II" de Labrosse.

Editar:

¿Puedes especificar qué quieres decir con "más técnico"?Estos libros brindan detalles de implementación de pseudocódigo, pero ¿está buscando un sistema operativo de ejemplo o fragmentos de código para una máquina/lenguaje en particular?

-Adán

Vengo de otra pregunta.me gustaría mencionar Pintos...Recordé que mi curso de sistema operativo con Nachos y Pintos parece ser el mismo tipo de cosas que se pueden ejecutar en x86.

El desarrollo del kernel de Linux de Robert Love me pareció bastante interesante.Le informa cómo funcionan los diferentes subsistemas del kernel de Linux de una manera muy práctica.Dado que la fuente está disponible, Linux es el principal candidato para hackear algo.

Aquí hay algunas otras páginas de Stack Overflow que vale la pena incorporar a esta discusión:

Obstáculos en la creación de un sistema operativo personalizado
Desarrollando un sistema operativo para la arquitectura x86

Empiece a piratear Minix.Es mucho más pequeño que Linux (obviamente) y está diseñado con fines didácticos en mente (algunos, al menos).Sin embargo, Minix 3 no, esa es una historia completamente diferente.

Ya respondí, pero cuando tomé Sistemas Operativos en la universidad, comenzamos con un kernel de Linux temprano y agregamos características modernas simplistas (sistemas de archivos básicos, memoria virtual, multitarea, mutex).Buena diversión.Puedes saltarte algunas de las cosas REALMENTE locas de ensamblaje de bajo nivel para limpiar con modo protegido y tablas de páginas mientras aún aprendes algunas de las agallas.

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

Mi curso de sistemas operativos en la licenciatura nos hizo construir una serie de subsistemas para OS/161, un kernel simple, similar a BSD, que proporciona algunos de los conceptos básicos y al mismo tiempo deja la libertad de explorar diversas decisiones de espacio de diseño al implementar servicios de nivel superior.

Quizás quieras mirar linuxdesde cero.

Linux desde Scratch (LFS) es un proyecto que le proporciona instrucciones paso a paso para construir su propio sistema Linux personalizado, completamente del código fuente.

Un desarrollo de SO simple y básico. tutorial 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.El artículo relacionado es aquí.

Me gustaría incluir este repositorio Cómo-hacer-un-sistema-operativo-de-computadora Por Samy Pessé.Es un trabajo en progreso.Muy interesante.

Un sistema operativo razonablemente sencillo de estudiar sería µC/OS.El libro tiene un disquete con la fuente.

http://en.wikipedia.org/wiki/MicroC/OS-II

Consulte el proyecto de la Alianza de sistemas operativos gestionados (MOSA) en www.mosa-project.org.Están diseñando un compilador AOT/JIT y un sistema operativo totalmente administrado en C#.Algunos de los desarrolladores son del proyecto inactivo SharpOS.

he jugado con Cosmos, que es "un proyecto del sistema operativo implementado completamente en idiomas que cumplen con CIL". Está escrito en C#, así que fue justo en mi callejón.Para alguien como yo, que nunca ha intentado crear un sistema operativo, en realidad fue genial poder ejecutar un sistema operativo "Hello World" en poco tiempo.

Como se mencionó anteriormente, el Wiki OSDev es (de lejos) la mejor fuente para el desarrollo de sistemas operativos.Para aquellos de ustedes que hablan alemán, el lowlevel.eu Wiki también es genial.Algo relativamente desconocido OS incitatus, un kernel simple con un pequeño conjunto de aplicaciones de espacio de usuario.Es excelente para abordar el complicado tema del desarrollo de sistemas operativos.

Movitz es un entorno Lisp escrito en Common Lisp y que se ejecuta "en el metal".Desafortunadamente, algunos enlaces en el Página principal de Movitz denegar el acceso, pero puede encontrar instrucciones sobre cómo descargar y compilar el código fuente desde el página de seguimiento.Además, se puede encontrar una imagen lista en el archivo de esta página.

En mi humilde opinión, esto es sumamente interesante, ya que recupera la máquina de ceceo concepto en el hardware disponible actualmente.Fracasó comercialmente, pero esto no me prueba que la idea fuera mala.

El manual para los que odian a Unix es un libro divertido que reprende semi-en serio el concepto de Unix y sus derivados.Muchas secciones discuten sobre cuán mejor era el concepto de máquina Lisp.

Aquí hay un documento llamado "Escribir un sistema operativo simple desde cero".Cubre la escritura de un gestor de arranque, el ingreso al modo protegido x86-32 y la escritura de un kernel básico en C.Parece hacer un buen trabajo al explicar todo en detalle.

El Simulador x86 JS y simulador de brazo También puede ser muy útil para entender cómo funcionan las diferentes piezas de hardware y realizar pruebas sin salir de tu navegador favorito.

Pregunta interesante para los programadores.Mira, llevará mucho tiempo crear sistemas operativos como Windows o Mac, pero si quieres crear uno sencillo, puedes intentarlo lo mejor que puedas.

  1. Debe centrarse en lenguaje ensamblador, C y C++.Deberías ser experto en estos idiomas.
  2. Primero lea un buen libro sobre cómo funciona el sistema operativo [Google it], luego lea toda la información de Sistema operativo Wiki
  3. Busca en youtube "Como crear tu propio SO en Lenguaje Ensamblador" mira el video, P.ej.Video
  4. Descargue el código fuente del sistema operativo Linux, compílelo usted mismo e intente modificar el código usted mismo
  5. Ahora eres un editor de sistema operativo experimentado y ahora descarga minix y QNX y comience a desarrollar con ellos y obtenga sus documentos desde aquí Minix Doc y Documento QNX

Ahora que ha obtenido la maestría (no completamente, solo falta un poco más) en la creación de sistemas operativos, ahora distribuya este conocimiento a sus amigos y con su ayuda intente crear un sistema operativo tan poderoso como Mac, Linux o Windows.

Cuando has creado un sistema operativo básico, en realidad es difícil continuar porque no hay muchos recursos para crear GUI o migrar bibliotecas.Pero creo que echando un vistazo ToAruOS ayudaría mucho!

¡El código bajo la superficie de ese sistema operativo es tan simple!pero al mismo tiempo ha portado cosas como cairo, python, (todavía no pero pronto) sdl, ha creado memoria compartida y también ha creado su propio conjunto de herramientas de widgets.Está todo escrito en C.

Otro sistema operativo interesante sería pedigríOS.Está hecho por JamesM (el hombre detrás tutorial del kernel de jamesM.Si bien tiene más funciones que ToaruOS, también es más grande y confuso.

Pero de todos modos estos 2 SO te ayudarán mucho especialmente ToAruOS.

Cuando comencé a trabajar en mis sistemas operativos básicos necesitaba una guía básica como Trampolines para un sistema operativo básico.Me ayudó a no perder la cabeza.

Eso si quieres hacerlo de absolutamente nada (puro código ensamblador)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top