Tengo un proyecto de clase para crear mi propio sistema operativo. Lo he pensado mucho y ahora todo parece confuso

Tengo un proyecto de clase para crear mi propio sistema operativo. Lo he pensado mucho y ahora todo parece confuso

Pensé en crear un sistema operativo y ahora confío en sus consejos sobre por dónde empezar para empezar a hacerlo.

Respuesta1

¿Hablas en serio? Quiero decir, hay muchos sistemas operativos creados por fanáticos, ¡pero es un trabajo duro y pesado!

Para empezar, un sistema operativo deberá tener, al menos:

  1. Un gestor de arranque: para insertar el kernel en la RAM, prepare los TLB y realice algunas tareas de limpieza

  2. Un Kernel: el kernel es la parte más esencial de un sistema operativo y gestiona aspectos cruciales como las asignaciones de memoria física/virtual entre programas, multitarea, programación de E/S, IPC, mutex, etc. Dependiendo del sistema operativo, existen varias filosofías (monolítica, como la arquitectura Linux; híbrida, como la arquitectura OS X; o microkernel, como la inacabada Hurd). Dependiendo de ello, es el código del kernel o el código de usuario el que gestiona cada aspecto individual del sistema.

  3. Aplicaciones de usuario, que le darán al usuario cierta interacción con la máquina.

En el mundo GNU/Linux y BSD tenemos varios de ellos, como:

Cargadores de arranque: GRUB2, GRUB, LILO, ISOLINUX...

Núcleos: Linux, kFreeBSD...

Aplicaciones de usuario: GNU [o] BSD Coreutils, Bash, Xorg y muchas más :)

De todos modos, si esa es tu pregunta, aquí está tu respuesta, y para obtener más información, hay muchas preguntas sobre cómo empezar a pensar en las decisiones de diseño en cada aspecto en la siguiente wiki:http://wiki.osdev.org/Main_Page

Hay mucha información sobre cómo funcionan los gestores de arranque, cómo programar en baremetal sin productos como stdio.h y, realmente, mucha información útil.

información relacionada