Преобразование адресов невыгружаемой памяти

Многие части в памяти ядра не могут использоваться для страниц.

  1. Какова настройка таблиц страниц для этих областей и насколько для них выполняется логическое сопоставление с физическим?

  2. Есть ли какая-либо связь между картированием удостоверений и проводной памятью (память без подкачки)?


person ultimate cause    schedule 12.06.2016    source источник


Ответы (1)


Для невыгружаемой памяти все, что нужно сделать системе, — это убедиться, что физический страничный фрейм сопоставляется с логическим адресом и что страничный фрейм не отменен. Таблицы страниц обычно одинаковы для страничной и невыгружаемой памяти.

person user3344003    schedule 12.06.2016
comment
Спасибо. Не правда ли, что, если память не подкачиваемая, мы не прилагаем больших усилий по преобразованию адресов, потому что адрес, который мы ищем, всегда будет находиться на определенном смещении от определенной базовой точки первичной памяти? Почему нам все еще нужны таблицы страниц, заполненные для них? - person ultimate cause; 13.06.2016
comment
В большинстве систем вам нужна таблица страниц, чтобы код ядра мог получить доступ к памяти. Даже код ядра использует трансляцию логических адресов. - person user3344003; 13.06.2016
comment
Да. Я согласен с этим. Выгружаемый или не выгружаемый каждый адрес является виртуальным адресом. На самом деле я имел в виду, что если какая-то вещь должна быть постоянно стационарной в ОЗУ, то зачем мы тратим на них PTE. Мы могли бы просто иметь специальные регистры, содержащие начальную пару виртуальных/физических адресов каждого из этих местоположений, а остальная часть преобразования будет арифметической операцией. Поскольку эта область никогда не будет ошибаться, мы можем использовать записи PTE для чего-то другого. Спасибо за ваш ответ. - person ultimate cause; 13.06.2016
comment
Тогда как разместить эти местоположения в нефиксированных местах в памяти и как процессор обрабатывает эти места так же, как и любое другое место? - person user3344003; 14.06.2016
comment
MMU можно немного изменить, чтобы рабочий набор невыгружаемой памяти выполнял трансляцию, добавляя (или вычитая) постоянное базовое значение после загрузки. Насколько я понимаю, процессор никогда не имел права голоса в том, как осуществляется доступ к адресу. Только в том случае, если MMU вызвал исключение ошибки страницы (для выгружаемой памяти), обработчик прерывания инициирует последовательность пейджинга по запросу. Расположение не имеет значения, т.к. адреса будут формироваться только после загрузки модуля. Поэтому программирование модифицированного MMU будет производиться только после того, как произойдет эта загрузка, абсолютно так же, как загружается TLB для динамической памяти. - person ultimate cause; 14.06.2016