OSDev

для всех
Текущее время: 28 апр 2024, 08:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: 13 авг 2013, 22:52 

Зарегистрирован: 16 июл 2013, 00:56
Сообщения: 26
Ну да, конечно же отображать таблицы нового ВАП нужно уже в новом ВАП, когда оно разрастется. А узнать физические адреса того что нужно отображать (таблиц страниц) поможет обход всего дерева начиная с cr3. Только надо обходить и отображать таблицы на фиксированные адреса повторно, пока не перестанут создаваться новые таблицы во время отображения. Вот здесь и трудности.
После этого, чтобы поддерживать отображенные таблицы страниц в актуальном состоянии, каждое новое отображение должно сопровождаться опять рекуррентным отображением вновь созданных таблиц.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 авг 2013, 23:01 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Нужно (можно?) создавать ВАП так, чтобы после переключения на него таблица страниц уже располагалась на своем законном месте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 авг 2013, 23:07 

Зарегистрирован: 16 июл 2013, 00:56
Сообщения: 26
Сложно все это. Вообще управление виртуальной памятью. У меня идея: все равно никогда не надо будет узнавать физический адрес таблицы страниц, то есть, его можно узнать простым чтением фиксированного адреса (у меня -0x0000038040201000 и т.д.). Значит, дерево таблиц можно отображать на фиксированные адреса за исключением самих страниц, которые нужны для этого отображения. И никакой рекурсии нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 авг 2013, 13:46 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
vlad9486 писал(а):
Ну да, конечно же отображать таблицы нового ВАП нужно уже в новом ВАП, когда оно разрастется. А узнать физические адреса того что нужно отображать (таблиц страниц) поможет обход всего дерева начиная с cr3.

Не обязательно. Все физические адреса получаются ещё в родительском ВАП через область отображения таблиц. К моменту переключения на новое ВАП, иерархия директорий уже должна быть настроена и готова к работе в штатном режиме.
vlad9486 писал(а):
У меня идея: все равно никогда не надо будет узнавать физический адрес таблицы страниц, то есть, его можно узнать простым чтением фиксированного адреса (у меня -0x0000038040201000 и т.д.). Значит, дерево таблиц можно отображать на фиксированные адреса за исключением самих страниц, которые нужны для этого отображения. И никакой рекурсии нет.

Я тоже для создания новой задачи использую специальный фиксированный участок в ВАП.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 авг 2013, 14:17 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Я тут оставлял пост, касающийся использования рекурсивных ссылок для 64 бит, но как-то совсем не учел, что в этой архитектуре ВАП может разрываться на две части, поэтому сильно не ругайтесь, если увидите какие-то несуразицы, связанные с этим. Итак:
Я писал(а):
vlad9486 писал(а):
После этого, чтобы поддерживать отображенные таблицы страниц в актуальном состоянии, каждое новое отображение должно сопровождаться опять рекуррентным отображением вновь созданных таблиц.
Нет, рекурсия на то и нужна, чтобы не делать одну и ту же работу дважды. При построении цепочки для отображения конечных страниц созданные страницы таблицы будут отображаться автоматически.

Я прикинул, как это должно работать для 64 бит. По-прежнему нужна лишь одна страница с рекурсивной ссылкой. А если ты хочешь уплотнить пространство, то потребуется от одной до трех доп. страниц (в зависимости от выбранного размера ВАП) без рекурсивных ссылок, которые никогда не будут изменяться и не должны отображаться в ВАП. Например, для пространства размером 512 гиг структура будет такой:
Код:
xzzz ; L4 - нет рекурсивной ссылки
|
v
zzzr ; L3 - появилась рекурсивная ссылка
   |
   v
   zzzr ; L2
      |
      v
      zzzr ; L1
Последние три страницы - это одна и та же физическая страница - главный каталог логического уровня (L4 - главный каталог физического уровня, ссылка на который будет загружаться в cr3), т.е. всего нужны две физические страницы.

Я разместил рекурсивную ссылку в конце каталога. Это значит, что таблица страниц будет размещаться в конце нашего ВАП размером 512 гиг и иметь минимальный размер (1/512 от размера ВАП).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 авг 2013, 17:20 

Зарегистрирован: 16 июл 2013, 00:56
Сообщения: 26
ИМХО, лучше делать просто четыре таблицы и адресовать все 256Тб (гипотетически), если нужно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB