Что происходит, когда вы теряете виртуальный адрес каталога страницы? - PullRequest
1 голос
/ 14 февраля 2020

Я пишу диспетчер памяти для своего ядра (32-битная x86). В ходе этого ... я сталкиваюсь с небольшой дилеммой ....

Описание карта виртуальной памяти:

  • Карта идентификации первых 4 МБ
  • Виртуальный адрес 0xC0000000 сопоставлен с физическим адресом 0x100000 (также карта 4 МБ)

Моя страница каталога находится по физическому адресу 0x9c000. Моя таблица страниц 1 находится по физическому адресу 0x9d000. Моя таблица страниц 2 находится по физическому адресу 0x9e000.

(мне нужны только две таблицы страниц здесь :) ... Они соответствуют карте идентичности и более высокой карте памяти соответственно)

Благослови личность отображение .... Я могу безопасно получить доступ к своему каталогу страниц и таблицам страниц, как будто пейджинг даже не включен Это позволяет мне очень легко изменять таблицы страниц и т. Д. c.

Теперь возникает проблема: я могу удалить это отображение идентичности ... Если это так, я уже могу представить, как возникают проблемы .. Например. У меня есть физические адреса, к которым я хочу получить доступ ... Но я могу получить доступ только к виртуальным. Чтобы сопоставить виртуальный адрес с требуемым физическим адресом, мне нужно получить доступ к каталогу страницы. Но у меня есть физический адрес каталога страниц ... * Я понимаю, что вернулся к тому, с чего начал.

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

Но если я что-то сопоставляю постоянно, я чувствую, что каким-то образом уменьшаю гибкость программы (ядра).

Как вы решаете эту проблему?

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

Я что-то упустил?

1 Ответ

0 голосов
/ 20 апреля 2020

Не теряйте адрес каталога вашей виртуальной страницы! Вам нужна как минимум небольшая часть каталога страниц с известным физическим и известным виртуальным адресом (для них не требуется сопоставление идентификаторов).

...