У меня есть проект класса по созданию собственной операционной системы. Я много думал об этом, и теперь все выглядит запутанным

У меня есть проект класса по созданию собственной операционной системы. Я много думал об этом, и теперь все выглядит запутанным

Я думал о создании операционной системы, теперь я полагаюсь на ваш совет о том, с чего начать ее создание.

решение1

Вы серьезно? Я имею в виду, что есть много операционных систем, созданных фанатами, но это тяжелая и трудоемкая работа!

Для начала операционная система должна иметь, как минимум:

  1. Загрузчик: для загрузки ядра в оперативную память, подготовки TLB и выполнения некоторых служебных операций

  2. Ядро: ядро ​​является наиболее важной частью операционной системы и управляет важнейшими аспектами, такими как отображение физической/виртуальной памяти между программами, многозадачность, планирование ввода-вывода, IPC, мьютексы и т. д. В зависимости от ОС существует несколько философий (монолитная, как архитектура Linux; гибридная, как архитектура OS X; или микроядро, как незаконченный Hurd). В зависимости от этого, код ядра или пользовательский код управляет каждым отдельным аспектом системы.

  3. Приложения Userland, которые предоставят пользователю возможность взаимодействия с машиной.

В мире GNU/Linux и BSD их несколько, например:

Загрузчики: GRUB2, GRUB, LILO, ISOLINUX...

Ядра: Linux, kFreeBSD...

Приложения пользователя: GNU [или] BSD Coreutils, Bash, Xorg и бесчисленное множество других :)

В любом случае, если это ваш вопрос, вот ответ, а для получения дополнительной информации вы найдете множество статей о том, как начать ломать голову над дизайнерскими решениями по каждому аспекту, в следующей вики:http://wiki.osdev.org/Главная_страница

Там много информации о том, как работают загрузчики, как программировать на baremetal без таких вещей, как stdio.h, и, на самом деле, много полезной информации.

Связанный контент