Привет, Хабравчане! В этой серии материалов мы сосредоточимся на создании монолитного ядра на C++17, акцентируя внимание на чистой архитектуре и тестируемом коде. Мой опыт в C++ за последние 10 лет вдохновил меня вернуться к разработке операционных систем, используя более современные подходы, минимизируя при этом применение ассемблера.
В первой части мы создадим уровень абстракции оборудования (HAL) для консольного вывода, а также реализуем две версии ядра — для отладки и для работы на реальном оборудовании. Мы успешно запустим наше ядро в эмуляторе QEMU.
Мы будем использовать C++17, однако для ядра ограничим использование исключений, RTTI и динамической памяти на начальном этапе, полагаясь на контейнеры, такие как std::array. После реализации работы с динамической памятью мы переопределим операторы new и delete.
Важным шагом будет создание абстрактного класса для консоли, который позволит нам выводить информацию. Мы также разработаем реализацию для Windows и Linux.
В нашем коде будет использоваться placement new для управления памятью. Сборка проекта будет происходить через Makefile, что упростит процесс разработки. Начало положено, и я рад делиться этим опытом с вами!
tasani.ru