сразу на новый адрес кидают, но я higher half делаю уже после бутлоадинга, прям в самом ядре, и у меня это static константа, из вариантов вижу только сделать ее публичной переменной(но мне это не нравится), либо так же identity мапнуть как 1МБ.
(Как-то маловато хороших туториалов по higher-half)
эх вот у меня "ядро" уже вверхних адресах, но аллокатор так и не могу осилить, а так, что тебе мешает замапить фреймбуфер в любое удобное место?
А какая у тебя проблема с аллокатором?
мне где-то надо разместить динамические структуры данных аллокатора, но для их размещения нужен аллокатор
все вплоть до деревьев и графов можно выразить в обычных массивах. Размеры структур ограничены общим числом страниц в физ. памяти. Просто выдели по максимуму под свои "динамические" структуры
Ну так как я не хочу создавать зависимость на порядок инициализации подсистем, то vga_buffer может быть в нижних адресах, а делать глобальную мутабельную переменную, чтоб поменять адрес после инициализации виртуальной памяти не хочется
Я примерно по этой же причине решил не переводить в верхние адреса до самого «ядра», чтоб любое выделение памяти учитывалось ядреным физическим менеджером
Бред какой-то. Зачем тебе динамические структуры для аллокатора?
массив тоже динамическая структура
Делай инициализацию вга после того как поднял вирт маппинги, тогда его инит просто мапит себя куда ему удобно и всё
Как вариант, но не хочу остаться без логов в момент инициализации vm. Глянул на SerenityOS, он вообще первые 8МБ маппит в identity, чтоб работал первичный кернел аллокатор, vga и всякое такое
пиши в com порт и будут тебе логи
Логи до инициализации видео пишутся в рингбуфер, см. как это делает оффтоп например
А что такое «оффтоп»?
Ось-Которую_нельзя_называть
Обсуждают сегодня