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:
Un gestor de arranque: para insertar el kernel en la RAM, prepare los TLB y realice algunas tareas de limpieza
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.
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.