У меня нет 30-ти летнего опыта программирования. Но чуть знаю. Я бы посмотрел с другой стороны, к примеру java, python библиотек в стандарте намного больше но никто не говорит, что это языки монстры которые не возможно изучить. Но так же правда, что устраиваясь на мидл java или python нужно знать не только язык, но и его экосистему которая в разы больше С++.
Нет у меня, нет ощущения, что он не нужен и вот вот от него в е откажутся.
Спасибо вам за статью. Я тоже пишу туториал по разработке ОС, но на modern C++. И мне как раз не хватало информации, а вы наверное сами знаете как выглядят хардкорно туториалы в интернете. Ещё раз спасибо, очень много подчерпнул ценной информации.
Это первый этап. Самое начало. Ядро же выводит информацию, что значит как относится? Самым прямым образом.
Вас смущает что я назвал эту сотню строк кода ядром ОС? Ну так и есть, это начало разработки ядра ОС. В следующих статьях будет, работа с прерываниями, памятью, первые системные вызовы, потом первые драйвера.
Я знаю С++ и люблю его использовать. И как раз его уровень абстракция/оптимизация позволяет его использовать в ядре. Это больше мой личный выбор.
Монолитное ядро проще и его вполне хватит что бы понять основы, концепции, возможность пощупать железо. Практическая целесообразность и простота.
Это первая статья, в следующих статьях буду раскрывать архитектуру, прерывания, память, физическую, страничную, виртуальную, напишем алокатор. В самом ядре перегрузим глобально new и delete. И буду использовать STL контейнеры.
Я только в самом начале, информации много, она не простая. Двигаюсь к цели небольшими шагами, потому, что мне так проще понимать и обучаться. Посмотрел информацию, применил, реализовал, протестировал, работает и для закрепления материала написал статью продолжение.
Я не преподаватель или гуру писатель операционноек, энтузиаст с большим желанием, разбираться, вчитываться и делиться информацией.
Вы правы, думаю следует добавить функции для создания, которые уже возвращают инициализированный объект. В конструкторе nullptr, в методе Initialize уже проверяем и вызываем _console = Hal::CreateConsole();
Тогда в приват части простото бъявленпе указателя. Вы в частности и об этом говорили?
С тем же успехом можно назвать и первые уроки, по написанию загрузчика и проверки загрузки ОС с одной функцией start. Что все это не относится к разработке ОС.
Это первая статья, упор был на абстракцию, для примера выбрал самый наглядный вариант вывод в консоль.
Вот и вы и сами говорите один из способов вывода, вот в статье показано как абстрагировать один из способов вывода.
Я не спорю что стандартные статьи на эту тему больше, полно кода, я же двигаюсь небольшими шагами. У меня есть работа и статьи пишу в свободное время. Узнал, реализовал, написал статью.
Сам Линус говорил, что его первая ос была 11 строк кода:))
Все так я уже думал, насчет следующей статьи, что кратко опишу рефакторинг кода, constexpr, nonoexcept добавлю и перейду к реализации прерываний. Спасибо, что обратили внимание.
Пока 32 бит, но со временем добавлю и 64 бит. Просто сейчас я пока не знаю как сделать. Но обязательно добавлю.
Читал новость, первый же комментарий: помянем:))
У меня нет 30-ти летнего опыта программирования. Но чуть знаю. Я бы посмотрел с другой стороны, к примеру java, python библиотек в стандарте намного больше но никто не говорит, что это языки монстры которые не возможно изучить. Но так же правда, что устраиваясь на мидл java или python нужно знать не только язык, но и его экосистему которая в разы больше С++.
Нет у меня, нет ощущения, что он не нужен и вот вот от него в е откажутся.
Вы не понимаете, это другое:)))
На данный момент есть упрощения в коде. В каждой следующей статье буду потихоньку улучшать код ядра.
Спасибо вам за статью. Я тоже пишу туториал по разработке ОС, но на modern C++. И мне как раз не хватало информации, а вы наверное сами знаете как выглядят хардкорно туториалы в интернете. Ещё раз спасибо, очень много подчерпнул ценной информации.
Лайк подписка.
Переход в планах. Уже переводил хост версию.
https://github.com/JordanCpp/SimpleOS/tree/Step_03_InterruptsAndModules
Думаю, нет. Так как моя позиция, это максимальное использование доступных стандартных механизмов библиотеки и фич языка.
Я это описал во второй статье. Создал pmm + аллокатор, перегрузил глобально для ядра new и delete. Все память есть.
Вы не понимаете, это другое:)
Поддержка модулей ещё хромает от компилятора к компилятору. Как только начнется массовое использование обязательно на них перейду.
Бинарник занимает 11 КБ. Сейчас компиляторы умные, но шаблоны в любом случае дадут распухание.
Да все верно. Я добавлю эти моменты в статью. Но более сложные аллокаторы оставлю на следующие статьи.
О bump allocator я упомянул, что он реализован как показать быстрый результат.
Это первый этап. Самое начало. Ядро же выводит информацию, что значит как относится? Самым прямым образом.
Вас смущает что я назвал эту сотню строк кода ядром ОС? Ну так и есть, это начало разработки ядра ОС. В следующих статьях будет, работа с прерываниями, памятью, первые системные вызовы, потом первые драйвера.
Нет, названия для хоста и x86 одинаковы, я подменяю только пути инклюдов и исходных файлов при сборке. И оно собирается без горы ifdef
Задача абстрагироваться от железа, простым слоем. Максимально не меняя ядро, обеспечить перенос на другие архитектуры, изменяя только HAL уровень.
По мере разработки я уверен, придет понимание как правильно абстрагироваться, где применить абстрактный класс, а где нужен шаблон и т.д
Я знаю С++ и люблю его использовать. И как раз его уровень абстракция/оптимизация позволяет его использовать в ядре. Это больше мой личный выбор.
Монолитное ядро проще и его вполне хватит что бы понять основы, концепции, возможность пощупать железо. Практическая целесообразность и простота.
Это первая статья, в следующих статьях буду раскрывать архитектуру, прерывания, память, физическую, страничную, виртуальную, напишем алокатор. В самом ядре перегрузим глобально new и delete. И буду использовать STL контейнеры.
Я только в самом начале, информации много, она не простая. Двигаюсь к цели небольшими шагами, потому, что мне так проще понимать и обучаться. Посмотрел информацию, применил, реализовал, протестировал, работает и для закрепления материала написал статью продолжение.
Я не преподаватель или гуру писатель операционноек, энтузиаст с большим желанием, разбираться, вчитываться и делиться информацией.
Вы правы, думаю следует добавить функции для создания, которые уже возвращают инициализированный объект. В конструкторе nullptr, в методе Initialize уже проверяем и вызываем _console = Hal::CreateConsole();
Тогда в приват части простото бъявленпе указателя. Вы в частности и об этом говорили?
С тем же успехом можно назвать и первые уроки, по написанию загрузчика и проверки загрузки ОС с одной функцией start. Что все это не относится к разработке ОС.
Это первая статья, упор был на абстракцию, для примера выбрал самый наглядный вариант вывод в консоль.
Вот и вы и сами говорите один из способов вывода, вот в статье показано как абстрагировать один из способов вывода.
Я не спорю что стандартные статьи на эту тему больше, полно кода, я же двигаюсь небольшими шагами. У меня есть работа и статьи пишу в свободное время. Узнал, реализовал, написал статью.
Сам Линус говорил, что его первая ос была 11 строк кода:))
Все так я уже думал, насчет следующей статьи, что кратко опишу рефакторинг кода, constexpr, nonoexcept добавлю и перейду к реализации прерываний. Спасибо, что обратили внимание.
Пока 32 бит, но со временем добавлю и 64 бит. Просто сейчас я пока не знаю как сделать. Но обязательно добавлю.
Старт на С++ 17. Но всегда можно будет повысить версию.
Сорри, я вас нечайно минуснул, пальцем промахнулся. Отвечал с телефона.