Предположим следующее.У меня есть система с виртуальной памятью с одним пейджинговым рычажком, у меня есть MMU, а TLB управляется программным обеспечением.
Хорошо ... так что представьте, что я процесс, и я хочу прочитать слово вОЗУ виртуального адреса vaddr.
Итак, CPU выдает MMU vaddr, MMU проверяет в TLB, есть ли запись с (предположим) 5 старшими значащими битами vaddr.Если он там ... все в порядке, он вычисляет физический адрес и все идет хорошо.
Теперь ... предположим, что его не было в TLB.В этом случае MMU делает прерывание (ошибка страницы).Хорошо ... теперь я в обработчике ошибки страницы.
В PBR (регистр базы страниц) у меня есть адрес начала таблицы страниц.Мой вопрос здесь.Это физический адрес?Я думаю, да, потому что если бы он был виртуальным, это означало бы две вещи: 1) Должно быть как-то зарезервировано в виртуальном адресном пространстве процесса (никогда не слышал о чем-то подобном) 2) Если этот адрес отсутствует в TLB, будетснова ошибка страницы, и у меня будет бесконечный цикл.
Тот же вопрос об адресах в таблицах.Если бы у меня был двухуровневый пейджинг.Адрес в записи в таблице первого уровня (который указывает на таблицу второго уровня) является виртуальным или физическим?
Спасибо.