Cómo aprender sistemas operativos de forma gratuita.

Escriba su propio sistema operativo , comience desde aquí: Página principal expandida de osdev.org

Vaya a “aprender haciendo”: reimplemente un pequeño sistema usted mismo, tomando ideas de todos los sistemas operativos conocidos.

Hay muchos sistemas operativos orientados a la investigación y el aprendizaje, que se entregan con sus códigos fuente como ejemplos: Linux es demasiado grande para ti, usa sistemas operativos pequeños (microkernel) como L4KA / Mach, FreeRTOS, muchos …

Te daré un consejo sobre cómo no adentrarte en las sacudidas y los controladores de hardware:

implementar algún intérprete de bytecode (emulador de software puro de alguna computadora con arquitectura y conjunto de comandos que elija usted mismo)

Por lo tanto, puede usar cualquier lenguaje de programación con el que sea amigable, para escribir el emulador de software de CPU + memory con una rica interfaz gráfica de usuario que muestre el programa, la pila, los registros, … La mejor manera de escribir una interfaz compatible con GDB usando sockets, vea GNU Debugger. Si usa Linux en su estación de trabajo, puede usar la interfaz del depurador de la GUI de ddd: vea comience aquí

Entonces, para ir más lejos, simplemente escriba su sistema operativo para su máquina virtual emulada , puede usar cualquier biblioteca lista para usar para su lenguaje amigable, hacer muchas cosas interesantes como la multitarea, el sistema operativo funciona sobre los nodos de computadora distribuidos (cada uno de ellos es su máquina virtual), dibuje gráficos de seguimiento de ejecución, cree un elemento GUI con un comando de “máquina”, y así sucesivamente.

Como muestra de este sistema, observe detenidamente esta máquina virtual DIS y el sistema operativo Inferno: se trata de un sistema operativo invitado que utiliza un emulador de software puro, destinado al desarrollo de sistemas distribuidos. Este paquete de software puede ejecutarse sobre cualquier SO principal (Windows, Linux, …) por lo que no está preso con la plataforma de hardware, el emulador VirtualBox / bochs, y puede ejecutar su propio SO sobre cualquier otro sistema, incluido el teléfono Android (muy Genial tener tu propio sistema móvil 😎

Este enfoque le dará una forma directa de continuar con el aprendizaje del desarrollo del sistema operativo , pero lo liberará de la codificación de bajo nivel. Puede probar los algoritmos del sistema operativo, las ideas, la programación de tareas, la asignación de memoria, la cuadrícula / agrupación en clústeres distribuida en múltiples computadoras, … sin perder mucho tiempo en detalles de la CPU real y profundizar en el manual del programador Intel Pentium.

Mira mi proyecto como muestra (no publicidad): GNU Dynamic Language Runtime. Utilizo este método utilizando Python como lenguaje principal para jugar con el diseño dinámico de plataformas de idiomas. Este tutorial está en desarrollo activo ahora, y la versión actual incluye un artículo sobre cómo escribir ensambladores simples usando la biblioteca de análisis PLY para Python. Puede interesarle escribir un compilador simple para su computadora virtual . Si no te gusta Python, las versiones posteriores incluirán el siguiente artículo sobre cómo escribir ensamblador en flex / bison / C ++, para que puedas escribir tu compilador, crear .dll y vincularlo con tu emulador. Puede tener un editor en la GUI de su emulador, editar el código fuente del sistema y ejecutar assembler.dll para obtener el código de bytes que puede interpretar.

PD: si utilizas JavaScript, puedes jugar con tu sistema operativo directamente en un navegador web. Pero tendrá que encontrar el análogo lex / yacc de los generadores lexer / parser para JavaScript.

Así que quieres aprender el sistema operativo.

Primero trata de envolver tu cabeza en torno a los principios básicos

Conceptos del sistema operativo: Abraham Silberschatz, Peter B. Galvin, Greg Gagne: 9780470128725: Amazon.com: Libros

Ahora, pasemos a cosas secundarias, cambie a Linux o a cualquier sistema operativo basado en Unix, lo que podría darle transparencia para ver cómo funcionan las cosas bajo el capó.

Y luego, si quieres convertirte en profesional, también puedes intentar contribuir al núcleo de Linux.

¿Cuál es la mejor manera de empezar a contribuir al kernel de Linux?

Vaya a la biblioteca y lea libros sobre ellos, una vez que comprenda su estructura básica, solo tendrá que aprender los distintos sabores después de eso (diferentes conjuntos de comandos)

Aprende no Informar si