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/ |