185 похожих чатов

А как правильнее выделить память под битмап для физического менеджера,

у меня в момент инициализации vmm передается mmap, из которого выделяются регионы, каждый регион инициализирует как раз pmm, но pmm’у нужен битмап, а в момент инициализации pmm никакого kmalloc’а нет? Сделать какой-то prekmalloc на маленьком регионе в начале?

30 ответов

98 просмотров

А зачем тебе "prekmalloc"?

по идее у тебя не будет посреди работы добавляться память

а у тебя вводные то какие?

Просто забери кусок памяти из первичной мемори мапы

Evg-Resh Автор вопроса
disba1ancer
а у тебя вводные то какие?

Вводные? Ну 32-битное ядро

Evg-Resh Автор вопроса
ᛒ ᛖ ᚱ ᚲ ᚢ ᛊ ᛞ ᛖ ᚲ ᛖ ᚱ
Просто забери кусок памяти из первичной мемори мап...

А есть какое-то общепринятое название для таких первичных аллокаторов, которые более не будут использоваться после инициализации vmm?

Evg Resh
Вводные? Ну 32-битное ядро

а кроме этого? включен ли mmu, если да, то как предлагается мапить страницы в твоей конфигурации

disba1ancer
что значит первичная мемори мапа?

Ну то что тебе груб даёт или кто-то

Evg Resh
А есть какое-то общепринятое название для таких пе...

Не-а, просто отгрызаешь кусок доступной памяти и всё.

Evg-Resh Автор вопроса
disba1ancer
а кроме этого? включен ли mmu, если да, то как пре...

Как раз в моменте включения mmu, беру мапа от граба, ищу регионы(мержу, если надо), отделяю регионы на ядровые и неядровые(ядровые находятся в 1 МБ после имаджа ядра), мапплю страницы в верхние адреса потом. Собственно, для отслеживания физических страниц в регионе нужна битмапа(при чем она может увеличиваться)

Evg-Resh Автор вопроса
ᛒ ᛖ ᚱ ᚲ ᚢ ᛊ ᛞ ᛖ ᚲ ᛖ ᚱ
Не-а, просто отгрызаешь кусок доступной памяти и в...

Спасибо, думаю просто статически выделю еще один МБ после имаджа кернела

Evg Resh
Как раз в моменте включения mmu, беру мапа от граб...

у меня немного другая проблема mmu уже включен, и мне надо инициализировать алокатор, из доступного это рекурсивная таблица страниц и карта физ памяти

Evg-Resh Автор вопроса
disba1ancer
у меня немного другая проблема mmu уже включен, и ...

А для чего использовать рекурсивную таблицу? Чтоб, если не хватит места в таблице, использовать следующую?

Evg Resh
А для чего использовать рекурсивную таблицу? Чтоб,...

так удобнее таблицей страниц управлять

Evg-Resh Автор вопроса
disba1ancer
так удобнее таблицей страниц управлять

А можете поподробнее рассказать? Я прочитал, но не совсем понял, как то, что последняя таблица будет указывать на первую поможет с управлением таблицей страниц

Evg Resh
А можете поподробнее рассказать? Я прочитал, но не...

смысл в том, чтобы последняя запись в самом верхнем каталоге страниц (тот на который cr3 ссылается) указывала на этот же каталог (т.е. туда записывается тот же адрес, что и в cr3), в результате имеем, что память соответствующая этому каталогу, становится видна как непрерывная таблица страниц, правда, с некоторыми оговорками

Evg-Resh Автор вопроса
disba1ancer
смысл в том, чтобы последняя запись в самом верхне...

Т.е. становится циклической? И если кто-то захочет замаппить страницу на адрес, который pte[1028], то, фактически, это будет pte[3](Исходя из того, что размер таблицы 1024 страницы)?

Evg Resh
Т.е. становится циклической? И если кто-то захочет...

это сложно объяснить, это нужно попытаться понять

Evg Resh
Т.е. становится циклической? И если кто-то захочет...

вот тебе поясняющая картинка, предположим, что каждая страница вмещает 4 записи по 1 байту каждая, цифрами обозначены адреса, которыми управляют записи, физические страницы обозначены буквами, несложно заметить, что страница A нарисована дважды, она так нарисована для удобства восприятия, нужно просто помнить, что это одна и та же страница

Evg Resh
Т.е. становится циклической? И если кто-то захочет...

теперь подумай, что будет при обращении по адресу 60?

Evg-Resh Автор вопроса
Evg Resh
Обращение по адресу B?

да, только не по адресу, а к странице B

Evg Resh
Обращение по адресу B?

и что конкретно мы на ней увидим?

Evg-Resh Автор вопроса
disba1ancer
и что конкретно мы на ней увидим?

Не совсем понимаю, честно говоря. То, что находится на странице В. Т.е. мы пошли по циклу. Т.е. адрес 60 = 48, 64 = 52, и т.д. Так?

Evg Resh
Не совсем понимаю, честно говоря. То, что находитс...

смотри по картинке, у тебя есть числа - виртуальные адреса и буквы обозначающие страницу, диапазоны чисел мапятся в страницы, но не в другие адреса

Evg Resh
Не совсем понимаю, честно говоря. То, что находитс...

увидим, действительно то что находится на странице B

Evg-Resh Автор вопроса
disba1ancer
смотри по картинке, у тебя есть числа - виртуальны...

А, т.е. в рамках одной page directory, вся последняя таблица указывает на начало каждой из таблиц в pd

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта