Обновить
150
33.3
Евгений@JordanCpp

Разработчик

Отправить сообщение

На данный момент есть упрощения в коде. В каждой следующей статье буду потихоньку улучшать код ядра.

Спасибо вам за статью. Я тоже пишу туториал по разработке ОС, но на modern C++. И мне как раз не хватало информации, а вы наверное сами знаете как выглядят хардкорно туториалы в интернете. Ещё раз спасибо, очень много подчерпнул ценной информации.

Лайк подписка.

Думаю, нет. Так как моя позиция, это максимальное использование доступных стандартных механизмов библиотеки и фич языка.

Я это описал во второй статье. Создал pmm + аллокатор, перегрузил глобально для ядра new и delete. Все память есть.

Пользователи мобильного приложения «Госуслуги» на Android не могут зайти в госсервис без кода из Max

Вы не понимаете, это другое:)

Поддержка модулей ещё хромает от компилятора к компилятору. Как только начнется массовое использование обязательно на них перейду.

Бинарник занимает 11 КБ. Сейчас компиляторы умные, но шаблоны в любом случае дадут распухание.

Да все верно. Я добавлю эти моменты в статью. Но более сложные аллокаторы оставлю на следующие статьи.

О bump allocator я упомянул, что он реализован как показать быстрый результат.

Это первый этап. Самое начало. Ядро же выводит информацию, что значит как относится? Самым прямым образом.

Вас смущает что я назвал эту сотню строк кода ядром ОС? Ну так и есть, это начало разработки ядра ОС. В следующих статьях будет, работа с прерываниями, памятью, первые системные вызовы, потом первые драйвера.

Нет, названия для хоста и x86 одинаковы, я подменяю только пути инклюдов и исходных файлов при сборке. И оно собирается без горы ifdef

Задача абстрагироваться от железа, простым слоем. Максимально не меняя ядро, обеспечить перенос на другие архитектуры, изменяя только HAL уровень.

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

Я знаю С++ и люблю его использовать. И как раз его уровень абстракция/оптимизация позволяет его использовать в ядре. Это больше мой личный выбор.

Монолитное ядро проще и его вполне хватит что бы понять основы, концепции, возможность пощупать железо. Практическая целесообразность и простота.

Это первая статья, в следующих статьях буду раскрывать архитектуру, прерывания, память, физическую, страничную, виртуальную, напишем алокатор. В самом ядре перегрузим глобально new и delete. И буду использовать STL контейнеры.

Я только в самом начале, информации много, она не простая. Двигаюсь к цели небольшими шагами, потому, что мне так проще понимать и обучаться. Посмотрел информацию, применил, реализовал, протестировал, работает и для закрепления материала написал статью продолжение.

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

Вы правы, думаю следует добавить функции для создания, которые уже возвращают инициализированный объект. В конструкторе nullptr, в методе Initialize уже проверяем и вызываем _console = Hal::CreateConsole();

Тогда в приват части простото бъявленпе указателя. Вы в частности и об этом говорили?

С тем же успехом можно назвать и первые уроки, по написанию загрузчика и проверки загрузки ОС с одной функцией start. Что все это не относится к разработке ОС.

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

Вот и вы и сами говорите один из способов вывода, вот в статье показано как абстрагировать один из способов вывода.

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

Сам Линус говорил, что его первая ос была 11 строк кода:))

Все так я уже думал, насчет следующей статьи, что кратко опишу рефакторинг кода, constexpr, nonoexcept добавлю и перейду к реализации прерываний. Спасибо, что обратили внимание.

Пока 32 бит, но со временем добавлю и 64 бит. Просто сейчас я пока не знаю как сделать. Но обязательно добавлю.

Старт на С++ 17. Но всегда можно будет повысить версию.

Сорри, я вас нечайно минуснул, пальцем промахнулся. Отвечал с телефона.

В том числе, вы правы. Возможно даже в первую очередь меня интересует не функционал, а как сделать код простым, понятным, элегантным и современным в контексте С++.

1
23 ...

Информация

В рейтинге
250-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Разработчик баз данных
Ведущий
SQL
Linux