Как лучше это сделать? Не знаю как правильно сформулировать вопрос, поэтому опишу проблему. Есть ос, в скрипте линкера есть такая строка . = 0x100000;. Знаю, что grub загружает по этому адресу ядро, а линкер настраивает адресацию. Перед запуском main, ядро настраивает страничную память и мне нужно чтобы grub по прежнему загружал ядро по адрсесу 0x100000. А адресация внутри ядра происходила по виртуальному адресу, допустим 0x60000000. Как лучше это сделать?

17 Ноя 2022 в 19:54
144 +1
0
Ответы
1

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

Вам нужно будет настроить страничные таблицы таким образом, чтобы физический адрес 0x100000 отображался на виртуальный адрес 0x60000000. Это позволит ядру использовать виртуальные адреса для работы с памятью, при этом сохраняя необходимую адресацию для загрузки ядра grub.

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

16 Апр в 17:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 700 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир