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

А как лучше конвертировать физический адрес в виртуальный при маппинге?

В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальное(особенно в userspace)? Искать первую свободную страницу? Кажется, это не самый производительный вариант

26 ответов

45 просмотров

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

Evg-Resh Автор вопроса
ᛒ ᛖ ᚱ ᚲ ᚢ ᛊ ᛞ ᛖ ᚲ ᛖ ᚱ
Я не понял как связан маппинг и свободная страница...

Ну аллоцировать-то я смог, у меня есть физический аллокатор, но далее мне ее нужно замаппить на какой-то виртуальный адрес и тут возникает вопрос: «на какой?»

Evg-Resh Автор вопроса

Я тут под страницей имел в виду первый адрес в page table’е, где не проставлен бит present

Evg Resh
Ну аллоцировать-то я смог, у меня есть физический ...

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

Evg Resh
Ну аллоцировать-то я смог, у меня есть физический ...

Для этого тоже нужно что-то вроде аллокатора

ᛒ ᛖ ᚱ ᚲ ᚢ ᛊ ᛞ ᛖ ᚲ ᛖ ᚱ
не так, ты запрашиваешь маппинг для виртуального а...

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

Evg Resh
Ну аллоцировать-то я смог, у меня есть физический ...

зачем тебе мапить единичную страницу? это задача такая? Обычно мапят регионами

Evg-Resh Автор вопроса
клюквенный сбитень
зачем тебе мапить единичную страницу? это задача т...

Да, видимо, в контексте процессов ни к чему. Хотя в контексте ядра, кажется, что имеет смысл, но там, я так понимаю, можно сразу всю память замаппить

Evg Resh
Да, видимо, в контексте процессов ни к чему. Хотя ...

В контексте ядра имеет смысл да. Как в офтопике с highnem

клюквенный сбитень
зачем тебе мапить единичную страницу? это задача т...

И как ты собрался рулить регионами физической памяти?

disba1ancer
И как ты собрался рулить регионами физической памя...

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

клюквенный сбитень
речь о регионах адресного пространства. Здесь нет ...

Но всё же мапить по одной странице, если речь идёт о памяти ядра, а не процесса, не лучшая идея

disba1ancer
Но всё же мапить по одной странице, если речь идёт...

Ты так или иначе мапишь их по одной странице, остальное частные оптимизации

disba1ancer
Но каждый раз бегать за страницей не есть хорошо

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

disba1ancer
Но каждый раз бегать за страницей не есть хорошо

Так ведь выбор особо не велик, если процесс замапил регион, если ты сразу все не мапишь (lazy аллокации, что обычно и делают), то пока аксесса на эту страницу не будет её и не нужно аллоцировать, только, если нет какого-нибудь алгоритма, типа fault-around

$:@+#81*?2& Brains
Так ведь выбор особо не велик, если процесс замапи...

Для начала, надо с памятью ядра разобраться

disba1ancer
Для начала, надо с памятью ядра разобраться

Так там ещё проще, ты просто сразу аллоцируешь и мапишь

$:@+#81*?2& Brains
Так там ещё проще, ты просто сразу аллоцируешь и м...

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

$:@+#81*?2& Brains
Если есть аллокатор физ. страниц и условно функция...

Не всё так просто, ибо таблица страниц многоуровневая, для промежуточных уровней надо тоже откуда-то мапить, либо заранее рассчитывать сколько понадобится памяти

disba1ancer
Не всё так просто, ибо таблица страниц многоуровне...

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

$:@+#81*?2& Brains
Все конечно зависит от того, как ты сделаешь, но н...

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

disba1ancer
Тут очень большая проблема в том, что физ аллокато...

Ну самый простой способ - в компайл тайме указать максимальный объем памяти, который может присутствовать в системе

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

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

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

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

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Хех, данные на форме всегда будут "из прошлого", т.к. перезаполнять поля формы в процессе редактирования пользователем - так себе идея. Пользователь может открыть форму редакт...
Alexander Somov
7
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Карта сайта