De mi breve investigación sobre el tema,
Aparte de lo que ha mencionado, lo más probable es que llegue a un punto en el que tendrá que decidir si desarrollará su propia biblioteca estándar de C o usará otra persona (y después de esto, probablemente querrá implementar el estándar C ++ biblioteca de plantillas de alguna manera).
Aunque me gusta la idea de aprender más matemáticas, probablemente no sea la ruta más directa para poner en funcionamiento un sistema operativo, pero de nuevo, no duele. Sin embargo, la lógica formal (AND, OR, etc.) es definitivamente útil para comprender algunas de las cosas del ensamblaje, y es material estándar en un curso de matemáticas discreto. (Aunque estos son fáciles de aprender sin pasar por muchas matemáticas discretas).
- ¿Por qué las redes neuronales son tan poderosas y versátiles para resolver problemas dado que las matemáticas detrás de las redes neuronales son decepcionantemente simples?
- Cómo obtener datos de una base de datos Oracle a una hoja de Excel mediante consultas y macros
- ¿Qué universidades en Alemania ofrecen ingeniería de software (práctica) como maestría?
- ¿Cuál es el bosquejo de la informática?
- Computación paralela síncrona a granel: ¿El modelo BSP trata con la localidad de submaquinas a escala masiva?
También querrá tener una referencia sobre la arquitectura del sistema (x86, ARM, etc.) que está desarrollando a mano.
Como punto de partida, te sugiero que obtengas algo para arrancar (que implicará código de ensamblaje) que es capaz de meterte en el código C. Luego, puede comenzar a agregar interrupciones del sistema y hacer que su ensamblaje y las partes C se comuniquen entre sí (debe poder configurar y obtener datos de registro de C).
No estoy seguro de si es mejor construir su propio gestor de arranque o usar el de otra persona. Podría ser bueno solo en términos de entender lo que está sucediendo desde cero, pero diría que probablemente sea más productivo usar a alguien más una vez que conozca los conceptos básicos, ya que la codificación propia incluiría tener que agregar un montón de controladores para todo tipo de dispositivos de arranque (discos duros, unidades de CD / DVD / BluRay, etc.)
Nunca llegué tan lejos construyendo un sistema operativo, por lo que mi consejo puede ser totalmente falso, pero debería llevarte al menos hasta el punto en que tengas algo arrancando e imprimiendo cosas en la pantalla.