¿Hay algún sistema operativo que sea lo suficientemente simple para aprender? [cerrado]

19

Realmente me gustaría entender cómo funciona un sistema operativo detrás de escena. Sin embargo, creo que el núcleo de la mayoría de los sistemas operativos de código abierto es demasiado complejo para fines de aprendizaje, incluso para un programador de tiempo completo para aprender. ¿Hay algún sistema operativo "simple" hecho solo para fines de aprendizaje?

DotNetStudent
fuente
Encontré esto en mi búsqueda, nunca lo intenté. pdos.csail.mit.edu/6.828/2012/xv6.html aparentemente fue escrito para reemplazar Unix v6 como herramienta de aprendizaje.
ctrl-alt-delor

Respuestas:

28

El Minix de Andrew Tanenbaum (consulte Diseño e implementación de sistemas operativos ) está destinado exactamente a este tipo de propósito. Otra posibilidad (aunque bastante anticuada) es leer Lion's Book , que cubre Unix V6 (Unix completo, pero una versión lo suficientemente antigua que todavía es lo suficientemente simple como para un estudio bastante fácil). Las desventajas obvias de este último es que el C que usa es bastante obsoleto, por lo que incluso los programadores de C bastante experimentados pueden encontrar partes algo difíciles de leer, y no puede planear que un compilador moderno digiera el código.

Jerry Coffin
fuente
77
MINIX 3 no es una herramienta de enseñanza y el microkernel MINIX 3 definitivamente no es fácil de entender. Según Tanenbaum, solo MINIX 1 era una herramienta de enseñanza.
sakisk
10

Debería considerar un Unix-a-like moderno, el sistema operativo Xv6, utilizado en un curso de sistema operativo en el MIT. Parece tener algún material del curso asociado también.

Se ejecuta en emuladores Bochs y Qemu x86. Yo hice esa parte. Fue divertido.

Bruce Ediger
fuente
7

Minix es una gran opción y se describe en una de las otras respuestas.

Xinu

Considere también XINU - XINU no es Unix.

También se escribe UNIX al revés.

Hay un libro de Douglas Comer que pensé que estaba bien escrito, bien ilustrado y bien delimitado.

Hay un Xinu integrado y un sitio web sobre la enseñanza con Xinu.

http://xinu.mscs.mu.edu/Teaching_With_Xinu

FreeRTOS

Otro sistema operativo más pequeño que recibe mucho amor en estos días es FreeRTOS. Se ejecuta en casi todo. Si viniste de Marte y tuviste un procesador o una placa de evaluación donde no se ejecuta, podrías leer unas 10 páginas de documentación, modificar unos cinco archivos relacionados con interrupciones, temporizadores y UART y estarías ejecutándote.

http://www.freertos.org/

Afirman que admite 31 arquitecturas y 18 cadenas de herramientas. Mi experiencia a fines de 2009 fue buena, y escuché que ha mejorado mucho desde entonces.

Otros enlaces

Aquí se encuentra una pregunta similar que podría tener información útil para usted:

/programming/254149/how-do-you-write-a-basic-operating-system

Linux y muchos otros diseños de sistemas operativos están influenciados por UNIX, por lo que este video donde los diseñadores originales (Kernigan, Richie y Thompson y otros) es informativo y obtiene las ideas de diseño directamente de la fuente.

http://techchannel.att.com/play-video.cfm/2012/2/22/AT&T-Archives-The-UNIX-System

Existe un libro de texto clásico pero a menudo revisado sobre sistemas operativos:

Silberschatz, Galvin, Gagne: Conceptos del sistema operativo, 7a edición

Puede haber ediciones más nuevas también. Rara vez hago un enlace a un libro a través de un vendedor de libros, pero la vista previa es muy generosa, así que para obtener más información sobre los sistemas operativos, consulte:

http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720

DesarrolladorDon
fuente
3

En mi universidad hemos aprendido NachOS . Es un gran sistema operativo de código abierto para el aprendizaje. También puedes encontrar muchos ejercicios de universidades en NachOS para aprender.

Nachos es un software de instrucción para la enseñanza de cursos de sistemas operativos de nivel universitario y potencialmente de posgrado. La distribución Nachos viene con:

  • Un documento general
  • Código de referencia simple para un sistema operativo en funcionamiento
  • Un simulador para una asignación genérica de muestra de computadora personal / estación de trabajo
  • Un manual de C ++ (Nachos está escrito en un subconjunto de C ++ fácil de aprender, y el manual ayuda a enseñar a los programadores de C nuestro subconjunto)

Las tareas ilustran y exploran todas las áreas de los sistemas operativos modernos, incluidos subprocesos y concurrencia, multiprogramación, llamadas al sistema, memoria virtual, TLB cargados de software, sistemas de archivos, protocolos de red, llamada a procedimiento remoto y sistemas distribuidos.

usuario
fuente
0

Eche un vistazo a KOS (Kid OD) y SOS (Simple OS). Ambos son sistemas operativos diseñados para enseñar lo interno de un sistema operativo. KOS es el "padre" de SOS, y fue construido en base a la experiencia obtenida de KOS.

Estos proyectos fueron la base de muchos artículos educativos en Linux Magazine France.

En el sitio web de KOS, también puede encontrar una página donde puede descargar las fuentes de otros sistemas operativos simples.

barjak
fuente
0

Si te gusta la familia de tecnologías .NET, puedes consultar Singularity . No se ha actualizado desde 2008, pero se puede descargar en formato fuente e ISO desde CodePlex aquí .

Jesse C. Slicer
fuente
Razón particular para el downvote, downvoter ? Los enlaces aún están activos y es un sistema operativo simple escrito en un lenguaje de alto nivel.
Jesse C. Slicer
0

La gente puede entender todas las versiones de CP / M y DOS anteriores. Después de eso, las cosas se salieron de control y ya nadie lo sabe todo. No fueron diseñados para aprender cómo funciona un sistema operativo, pero muchas personas lo aprendieron de ese sistema operativo.

Joe Dos
fuente
1
Considere agregar algunas referencias o evidencia anecdótica adicional para respaldar su respuesta. O agregue algunos detalles adicionales para indicar por qué la versión X se entiende más fácilmente que la versión Y.
-1

Ve a leer un libro sobre programación en ensamblador. No tiene que ser competente en eso, pero le enseñará mucho sobre el funcionamiento interno de una computadora.

Pieter B
fuente