1

Если нет, то как ядро создает таблицу страниц при создании нового процесса и изменяет запись таблицы страниц при подкачке / извлечении страницы процесса?

Я думаю, что инструкции, выполняемые либо в пользовательском режиме, либо в режиме ядра, могут использовать только виртуальный адрес (который затем преобразуется в физический адрес внутренним оборудованием ЦП) для доступа к любому месту в ОЗУ (и периферийным устройствам отображения памяти), если MMU отключен.

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

Мой вопрос: когда выполняются инструкции в коде ядра, которые пытаются изменить содержимое записи таблицы страниц, как виртуальный адрес (если таковой имеется) самой таблицы страниц преобразуется в физический адрес? Должен ли MMU быть отключен в течение этого времени, чтобы не требовалась трансляция адресов?

1 ответ1

1

Это должно ответить на ваш вопрос:
Руководства по разработке ядра JamesM (см. Объяснение в разделе 6.4.2. Обязательные определения ")
Пейджинг - OSDev Wiki (см. Раздел 6 «Манипуляции»)


Оригинальный недоделанный ответ:

Физический адрес текущей директории 1 страницы сохраняется в регистре ЦП CR3.

Трансляция виртуальных адресов продиктована ядром, в CPU нет загадочного внутреннего оборудования.


Прямая цитата из виртуальных и физических адресов - Университет Ватерлоо

Динамическое перемещение

  • Блок управления памятью (MMU) CPU содержит регистр перемещения.
  • Всякий раз, когда поток пытается получить доступ к ячейке памяти (через виртуальный адрес), значение регистра перемещения добавляется к адресу виртуальной памяти - динамическое связывание.
  • Ядро поддерживает отдельное значение перемещения 1 для каждого процесса (как часть виртуального адресного пространства); изменяет регистр перемещения при каждом переключении контекста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .