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