OSDev
http://osdev.su/

Управление физической памятью
http://osdev.su/viewtopic.php?f=5&t=1048
Страница 5 из 10

Автор:  Actium [ 17 фев 2015, 19:50 ]
Заголовок сообщения:  Re: Управление физической памятью

pavia писал(а):
В ВАП для менеджера памяти отвожу 32 МБайта. Большинство свободно.
Физическая память по делена на страницы. Для менеджера выделяются только столько нужно.
Если каталог пустой, то под него физическая память не расходуется.
Моя текущая реализация требует 4К (верхушка стэка) + 8 байт (счетчик доступных фрэймов и указатель стэка). Улучшать не планирую :)

Автор:  Bargest [ 17 фев 2015, 19:51 ]
Заголовок сообщения:  Re: Управление физической памятью

При использовании PAE в приложении все равно не больше 4 ГБ виртуальной памяти. А значит, все таблицы, отображенные в ВАП, займут по идеи 4-8 мегабайта.

Автор:  pavia [ 17 фев 2015, 19:51 ]
Заголовок сообщения:  Re: Управление физической памятью

Actium писал(а):
Хорошо, конкретизирую: имеется x32, 32 GB оперативки; планируется paging, PAE. По моим прикидкам в худшем случае нужно откусывать примерно полгига виртуальной памяти, если располагать в ней все таблицы для отображения. Либо я неправильно считаю, либо?

Неправильно считаете.

Автор:  Himik [ 17 фев 2015, 19:56 ]
Заголовок сообщения:  Re: Управление физической памятью

Одна таблица (4КБ) отображает 2МБ ВАП, получаем 32ГБ / 2МБ * 4КБ = 64МБ

Автор:  Actium [ 17 фев 2015, 20:06 ]
Заголовок сообщения:  Re: Управление физической памятью

Короче, без рекурсивного отображения получается (4 + 4 * 512) * 4096 = ~8M, с рекурсивным 1 ГБ!!! Кто там рекомендовал рекурсивный mapping? =)

pavia писал(а):
Неправильно считаете.
Да, худший вариант оказался еще хуже :)

Автор:  Bargest [ 17 фев 2015, 20:30 ]
Заголовок сообщения:  Re: Управление физической памятью

Цитата:
с рекурсивным 1 ГБ!!! Кто там рекомендовал рекурсивный mapping? =)

А разве кто-то предлагал? И вообще, что это и зачем?)
Используемый у большинства подход - просто отобразить в ВАП процесса еще и те физические страницы, в которых находятся сами таблицы страниц. Это как раз те самые 8 МБ памяти.

Автор:  Actium [ 17 фев 2015, 20:40 ]
Заголовок сообщения:  Re: Управление физической памятью

Bargest писал(а):
А разве кто-то предлагал? И вообще, что это и зачем?)
Одна из записей каталога содержит физический адрес самого каталога. В итоге отображение страницы/отмена отображения выполняются одной строчкой кода.

Автор:  Bargest [ 17 фев 2015, 20:46 ]
Заголовок сообщения:  Re: Управление физической памятью

Цитата:
Одна из записей каталога содержит физический адрес самого каталога.

Зачем? Мы резервируем в одной-единственной таблице самого нижнего уровня первые(последние) N записей под те физические страницы, в которых хранятся все таблицы, и никогда эти записи больше не трогаем. После этого мы можем из системного кода писать в любое место любой таблицы страниц или каталога страниц одной строчкой, т.к. находится всё это по известному нам виртуальному адресу (где-то между 0 и 8 мб, если заменяем N первых записи таблицы нижнего уровня).
EDIT:
Конкретно для адресации 8 МБ нам понадобится зарезервировать первые 4 таблицы нижнего уровня (4*512 записей, каждая описывает 4 кб), все остальные будут доступны для свободного использования.

Автор:  Actium [ 17 фев 2015, 20:51 ]
Заголовок сообщения:  Re: Управление физической памятью

Bargest писал(а):
Зачем?
Ну дак, оптимизация же! :)

Автор:  Bargest [ 17 фев 2015, 20:53 ]
Заголовок сообщения:  Re: Управление физической памятью

Цитата:
Ну дак, оптимизация же!

Так я описал, как получить такой же результат (модификация любой таблицы в одну строку), используя только 8 МБ ВАП.

Страница 5 из 10 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/