Если верхние N
биты виртуального адреса равны нулю, то перевод начинается TTBR0
еще TTBR1
. N
происходит от TTBCR
. Регистры TTBRn
содержат физический адрес базы таблицы первого уровня. Соответствующая запись таблицы первого уровня загружается, и различные биты записи определяют, использует ли перевод таблицу второго уровня, и если да, то каков ее физический адрес.
MMU может быть настроен на использование коротких дескрипторов (32-разрядных физических адресов) или длинных дескрипторов (40-разрядных физических адресов). При использовании коротких дескрипторов можно использовать не более двух уровней таблицы перевода. При использовании длинных дескрипторов может быть три уровня.
Это игнорирует переходы этапа 2 (гипервизоры). Все документировано в ARMARM для v7-A раздел B3.3 & R: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.html
страницы программного обеспечения стол ходьба работает точно так же, как аппаратная таблица страниц блуждание - данный базовый адрес, посмотреть соответствующую запись и декодировать его либо с ошибкой, либо с отображением, либо с адресом таблицы следующего уровня (и повторением). Вы знаете, как работают многоуровневые таблицы страниц, верно? – Notlikethat
Я не совсем понимаю это. То, что я имею в виду, заключается в том, чтобы ходить по страницам таблицы страниц страниц, не слишком ли это для каждой выборки/загрузки? Разве это не должно быть сделано только с помощью аппаратного обеспечения? Я попытался прочитать много ссылок, но не мог полностью понять это. Можете ли вы представить несколько значимых ссылок для понимания этой темы? – Hemant