utilizados son sistemas sistema operativos operativo mas los las funciones cuales clasificacion caracteristicas operating-system kernel osdev

operating-system - las - cuales son los sistemas operativos mas utilizados



¿Cuáles son algunos recursos para iniciarse en el desarrollo de sistemas operativos? (28)

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

Me resulta difícil encontrar recursos / guías que lo lleven más allá de la escritura de un sistema operativo simple "Hello World".

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

¿Alguna sugerencia?

Actualización: para hacer 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 el acceso a la BIOS, por lo que no necesita controladores complejos"

Actualizado 11/14/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. Estos parecen super útiles para iniciarse en el desarrollo de sistemas operativos.

Actualizado 23/02/09

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

Actualizado 3/9/09

Dinah proporcionó una discusión útil sobre el desbordamiento de pila de los aspirantes a desarrolladores de sistemas operativos: los obstáculos en la creación de un sistema operativo personalizado analizan las dificultades que puede encontrar al desarrollar un sistema operativo y el desarrollo de sistemas operativos es una discusión más general.

Actualizado 7/9/09

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

Actualizado 7/27/09 (¡Todavía va fuerte!)

Me encontré con un curso de SO en línea de Berkley con 23 conferencias.

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

Actualizado 8/4/09

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

Actualizado 23/08/09

Todas las 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. También hay un libro complementario .

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

Actualizado el 18/9/2009

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

tgiphil nos informa sobre el marco de Alianza de sistemas operativos administrados (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 configuración de la guía de BrokenThorn con VS 2005 o la sección VS de OSDev .

Actualizado 9/5/2012

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

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

Actualizado 15/11/2013

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

Actualizado 12/8/2013

Cómo hacer un sistema operativo de computadora Gracias ddtoni!

Actualizado 18/03/2014

ToAruOS, un SO construido principalmente desde cero, incluyendo GUI

Actualizado el 12 de septiembre de 2016

Escribiendo tu propio sistema operativo de juguete

Actualizado el 10 de diciembre de 2016

Escribiendo un sistema operativo simple —desde Scratch (gracias @Tyler C)



Aquí hay un artículo llamado "Cómo escribir un sistema operativo simple desde cero ". Cubre escribir un gestor de arranque, ingresar al modo protegido x86-32 y escribir un núcleo básico en C. Parece hacer un buen trabajo explicando todo en detalle.


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

rutina de rebote 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 quieres hacerlo todo por ti mismo en lugar de simplemente elegir un sistema primitivo que alguien más ya ha establecido para ti. Por ejemplo, contacte a Intel y pídales una tarjeta de CPU para su tipo de CPU. Esto lo establecerá para usted: los "pin-outs", las interrupciones, los códigos de operación, lo que sea.

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

.


Como se mencionó anteriormente, OSDev Wiki es (con diferencia) la mejor fuente para el desarrollo de sistemas operativos. Para aquellos de ustedes que hablan alemán, el wiki de lowlevel.eu también es genial. Algo relativamente desconocido del sistema operativo Incitatus , un núcleo simple con un pequeño conjunto de aplicaciones de espacio de usuario. Es genial usarlo para entrar en el complicado tema del desarrollo del sistema operativo.


Consulte el proyecto Managed Operating Alliance (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.


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

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


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

¡El código debajo de la superficie de ese sistema operativo es tan simple! pero al mismo tiempo ha portado cosas como el cairo, python, (todavía no pero pronto) sdl, ha hecho compartir memoria y también ha creado su propio kit de herramientas para widgets. Todo está escrito en C.

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

Pero de todos modos estos 2 sistemas operativos te ayudarán mucho, especialmente ToAruOS.


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

También hay algunos tutoriales geniales en BonaFide , he usado el tutorial de BonaFide de Bran y ahora estoy viendo uno más reciente basado en su titulado Rate tu propio juguete UNIX-clon .

Segundo chequeo: "Sistemas Operativos: Diseño e Implementación"

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

Edición: para el desarrollo en Windows con Visual Studio, consulte la guía de BrokenThorn o la wiki de OSDev .



El simulador x86 JS y el simulador ARM también pueden ser muy útiles para comprender cómo funcionan los diferentes componentes del hardware y realizar pruebas sin salir de su navegador favorito.


Empieza a piratear Minix. Es mucho más pequeño que Linux (obviamente) y está diseñado con propósitos de enseñanza en mente (algunos, al menos). Sin embargo, no Minix 3, es una historia completamente diferente.


Encontré el desarrollo del núcleo de Linux de Robert Love bastante interesante. Le informa sobre cómo funcionan los diferentes subsistemas en el kernel de Linux de una manera muy práctica. Dado que la fuente está disponible, Linux es un candidato principal para algo para piratear.


Es posible que desee mirar linuxfromscratch .

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


Escribe un microcontrolador OS. Recomiendo un microcontrolador basado en x86. Un sistema operativo moderno es simplemente enorme . Aprende lo básico primero.


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

Recomiendo el libro de texto estándar, "Modern Operating Systems" de Tanenbaum. También puede encontrar útiles los "Elementos del sistema operativo" de Calingaert: es una descripción general de un libro que ofrece un resumen 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 recomendaría "MicroC / OS-II" de Labrosse.

Editar:

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

-Adán


Hay muchos enlaces después de esta 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 deberá leer 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 en C esperan un sistema operativo, por lo que tendrá que decirle a su compilador que no tendrá todo eso, o el cargador de arranque tiene que crearlo.

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

Es posible que desee considerar la posibilidad de suscribirse a ACM para obtener acceso a su literatura más antigua: 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 . Probablemente hay libros que también están agotados en esta época. Es posible que pueda obtener la misma información de forma gratuita al buscar los índices de esas revistas (que están disponibles en ese sitio; haga clic en "índice" cerca del nombre de la revista) y luego pregunte por las personas con una copia.

Por último, sé que Usenet está muerta (porque así lo dicen los profetas de la fatalidad de Internet), pero encontrará que muchos de los viejos expertos de esa época aún viven allí. Debes buscar en los grupos de Google (tienen el antiguo repositorio de los correos electrónicos) y espero que encuentres a muchas personas que hacen las mismas preguntas hace una década o 1.5 que estás preguntando ahora. Incluso puede encontrar las muchas consultas de ayuda de Linus Torvalds, ya que originalmente estaba desarrollando Linux. Si las búsquedas no muestran nada, pregunte en el grupo de noticias apropiado (probablemente comience con comp.arch, pero busque las que tengan el sistema operativo en el nombre).


Jugué con Cosmos , que es "un proyecto de sistema operativo implementado completamente en lenguajes compatibles con CIL". Está escrito en C #, por lo que fue mi callejón. Para alguien como yo que nunca ha intentado construir un sistema operativo, fue realmente genial poder ejecutar un sistema operativo "Hello World" en muy poco tiempo.



Mi curso de sistemas operativos en la licenciatura nos permitió crear una serie de subsistemas para OS/161 , un núcleo simple tipo BSD que proporciona algunos de los elementos básicos y deja la libertad de explorar varias decisiones de espacio de diseño al implementar servicios de nivel superior.


Pregunta interesante para los programadores. Verlo llevará mucho, mucho tiempo construir sistemas operativos como Windows o Mac, pero si desea crear uno simple, puede intentarlo lo mejor posible.

  1. Necesitas enfocarte en lenguaje ensamblador, C y C ++. Debes ser experto en estos idiomas.
  2. Primero lea un buen libro sobre cómo funciona el sistema operativo [Google], luego lea toda la información de Wiki OS
  3. Busque en youtube "Cómo crear su propio sistema operativo en lenguaje ensamblador" mire el video, Ej. Vídeo
  4. Descargue el código fuente de Linux OS y compílelo usted mismo e intente modificar el código usted mismo
  5. Ahora eres un experimentado editor de SO, ahora descarga Minix y QNX y comienza a desarrollar con ellos y obtén sus documentos desde aquí Minix Doc y QNX Doc

Ahora que has obtenido el grado de maestría (no faltan un poco más) para crear un sistema operativo, distribuye este conocimiento a tus amigos y, con su ayuda, intenta crear un sistema operativo tan potente como Mac, Linux o Windows.


Solo viene 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 cosa que se puede ejecutar en x86.


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


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

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


Un sencillo y básico tutorial desarrollo diseñado para ser un proyecto de un semestre. Te guía a través de construir un sistema operativo con componentes básicos. Muy buen comienzo para principiantes. El papel relacionado está paper .



Ya respondí, pero cuando empecé con los sistemas operativos en la universidad, comenzamos con un núcleo de Linux anterior y agregamos funciones modernas simplistas (sistemas de archivos básicos, memoria virtual, multitarea, exclusión mutua). Buena diversión. Tienes la oportunidad de omitir algunas de las cosas de ensamblaje de bajo nivel REALMENTE locas para eliminar el modo / modo protegido y las tablas de páginas mientras aprendes algunas de las agallas.

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


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

En mi opinión, esto es lo más interesante, ya que trae de vuelta el concepto de la máquina Lisp en el hardware actualmente disponible. Falló comercialmente, pero esto no me prueba que la idea fuera mala.

El manual de los que odian a Unix es un libro divertido que critica de manera casi seria el concepto de Unix y sus derivados. Muchas secciones discuten sobre qué tan mejor fue el concepto de máquina Lisp.


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

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