многоуровневая таблица страниц - PullRequest
0 голосов
/ 12 июля 2020

Я хотел бы понять это немного глубже, пожалуйста, дайте мне знать, если я ошибаюсь в некоторых из своих предположений. Допустим, виртуальный адрес имеет 3 таблицы PMN: PML3, PML2, PML1. Указатель на первую таблицу - это CR3 (физический адрес), каждая запись в таблице указывает на начало таблицы PML2 или ноль. Чтобы дважды проверить, указатели здесь являются физическими (на физический адрес каждой таблицы PML2, я прав? Аналогично PML3, каждая точка входа PML2 в начало таблицы PML1. Это точки на физический адрес? (Некоторые-почему) Кажется, я где-то слышал, что только первая таблица указывает на физический адрес, а все остальные - на виртуальный, но для меня это не имеет смысла) Я перепутал это с чем-то еще? Все точки всей таблицы PMH указывают на физические адреса ?

1 Ответ

1 голос
/ 13 июля 2020

Да, в большинстве ISA с вложенными таблицами страниц, управляемыми аппаратно, все уровни используют физические адреса в качестве указателей, чтобы избежать уловки 22 необходимости виртуального адреса virt-> Phys.

Например, на x86, Как работает подкачка x86? и Почему в 64-битном виртуальном адресе на 4 бита меньше (48 бит) по сравнению с физическим адресом (52 бит)? имеет диаграмму многоуровневых PDE / PTE.

Я думаю, что некоторые ISA могли бы делать другие вещи, например, специальные фиксированные записи TLB, и вы могли бы помещать указатели таблиц страниц в этот диапазон виртуальных адресов? (например, MIPS использует программную обработку TLB, поэтому обход страниц должен выполняться программным обеспечением, и, таким образом, нагрузки проходят обычным путем преобразования virt-> Phys. Обработчик ошибок TLB должен следить за тем, чтобы Я думаю, используя только адреса из области фиксированного перевода. Или что-то в этом роде.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...