сам по себе пагинг не сложно, больше проблем с аллокаторами, я не осилил
доки интела и амуде есть
расскажешь про пае? пж 🥺
а зачем он тебе? если у тебя 64 бита
Так куча инфы в интернете
всмысле зачем?
А в чем проблема с аллокаторами? Я вот наоборот не совсем понимаю, как мне правильно настроить higher half, так как не хочу это делать в буте(в pie), так как у меня на тот момент даже gdt/idt не настроено
Лул, документации до жопы, открой прочитай
Ну собирай кусок сишного кода с pic
я сделал настройку и включение пейджинга в загрузчике
и загрузчик мой сразу грузит elf по правильным виртуальным адресам
Ну это не вариант, так как у меня paging - это отдельный TU + он идет после инициализации pmm, idt, gdt, apic
у меня самописный efi загрузчик
у меня своё
и выключение в ядре
не вижу релевантности ваще включение mmu отдельный TU с загрукой higher-half tables
Хм, тогда я не совсем понимаю. У всего эльфика будет адресация с 1mb, когда я замаплю 1mb -> 1mb и 1mb-> 3gb, то мне нужно будет как-то поменять адреса ядра, нет(и потом уже дропнуть 1mb)?
а зачем выключене?
Там же вроде бы просто битмап алокатор, или есть какие то особенности?
Битман - это все-таки про pmm обычно, кмк. А тут речь про виртуальный аллокатор, там, наверное, range аллокатор должен быть какой-то
Кажется, все-таки проще(и правильнее) будет перевести в higher half в буте. Тогда другой вопрос: мне для включения paging'а нужно будет на этапе бута еще gdt инициализировать, сейчас же оно у меня инициализируется отдельно, стоит ли мне потом этот init_gdt заменить?
так гдт же раз поставил и забыл
Ну да, но просто хотел, чтоб любой модуль был явно прописан, а не в буте. Хотя я тут подумал, я же грабом гружусь, а там уже есть gdt и мне ее будет достаточно, чтоб ядро в higher half перевести, а там уже свою gdt-таблицу прописать
ну да, если через граб загрузка, то рекомендуется потом перевешивать на свою таблицу
Обсуждают сегодня