Я думал о создании операционной системы, теперь я полагаюсь на ваш совет о том, с чего начать ее создание.
решение1
Вы серьезно? Я имею в виду, что есть много операционных систем, созданных фанатами, но это тяжелая и трудоемкая работа!
Для начала операционная система должна иметь, как минимум:
Загрузчик: для загрузки ядра в оперативную память, подготовки TLB и выполнения некоторых служебных операций
Ядро: ядро является наиболее важной частью операционной системы и управляет важнейшими аспектами, такими как отображение физической/виртуальной памяти между программами, многозадачность, планирование ввода-вывода, IPC, мьютексы и т. д. В зависимости от ОС существует несколько философий (монолитная, как архитектура Linux; гибридная, как архитектура OS X; или микроядро, как незаконченный Hurd). В зависимости от этого, код ядра или пользовательский код управляет каждым отдельным аспектом системы.
Приложения Userland, которые предоставят пользователю возможность взаимодействия с машиной.
В мире GNU/Linux и BSD их несколько, например:
Загрузчики: GRUB2, GRUB, LILO, ISOLINUX...
Ядра: Linux, kFreeBSD...
Приложения пользователя: GNU [или] BSD Coreutils, Bash, Xorg и бесчисленное множество других :)
В любом случае, если это ваш вопрос, вот ответ, а для получения дополнительной информации вы найдете множество статей о том, как начать ломать голову над дизайнерскими решениями по каждому аспекту, в следующей вики:http://wiki.osdev.org/Главная_страница
Там много информации о том, как работают загрузчики, как программировать на baremetal без таких вещей, как stdio.h, и, на самом деле, много полезной информации.