Ключевым моментом пейджинга является то, что он имеет дело с «кусками» памяти.
Это карта, функция, которая преобразует виртуальные адреса в физические адреса, но не по базе адресов по адресам. Скорее, «кусок» непрерывный виртуальных адресов переведен вместе в другой непрерывный «кусок», теперь физический, адреса.
Вы можете думать об этом как о «переводе» или «перетасовке» «кусков» памяти.
Правильный термин для "кусок" является страница.
Если вы попытаетесь выполнить сопоставление образцов, вы увидите, что каждая страница содержит набор адресов, все из которых имеют свою особенность: их младшие разряды не меняют при переходе от виртуального к физическому. Верхние биты вместо этого являются произвольными.
Эта дихотомия значения адреса определяет Смещение и Страница/Номер кадра.
Смещение - это часть значения адреса, которое не подвергается никакому переводу. В странице по 4Kb есть 4096 адрес, каждая с его смещением, так что смещение имеет размер журнал (4096) = бревна (2) = 12 * журнала (2) = 12 бит.
Вкратце размер страницы определяет размер смещения.
Это необходимо, чтобы разбить память на страницы, а не слова или байт, или в другом виде необходимо сгруппировать адреса для перевода на страницы.
Без страниц метаданные, используемые для перевода, на жаргоне таблицы страниц различного уровня, занимают больше памяти, чем та, которая под переводом!
Смещения относительно их страницы/кадра благодаря тому, как они определены: смещение 1024 (в гексагоне 400h) в кадре 8 означает адрес 8000h + 400h = 8400h; если страница сопоставляется с кадром 12, смещение 1024 по-прежнему составляет 1024 байта после начала кадра, 0c000h + 400h = 0c400h.
Будучи адресом, смещение обычно обозначает байт, событие в архитектуре, где байты не адресуются. Однако это не стандартное соглашение, чтобы знать, означает ли смещение слово или байт (например, если смещение 10 кадра 0 является байтом 40 или байтом 10), проверьте руководство по архитектуре. Первые разделы обычно посвящены созданию терминологии для использования в книге.
Пейджинг происходит до того, как процессор обращается к памяти, вы можете думать об этом как о высоком уровне процесса. Устройство, которое обращается к памяти/шине, в основном не знает об этом, так как CPU считывает данные, которые инструкция сообщает ему, чтобы читать (слово, байт и т. Д.).
Люди говорят о перемещении страницы, потому что страница самая маленькая единица, которую можно охарактеризовать.
Вы можете пометить страницу как не существующую, но не слово. Вы можете сделать страницу только для чтения, но не слова.
Если вам нужно сопоставить, скажем, 16 байт, вам все равно нужно отобразить целую страницу, так как 16 байтов не являются характеристиками. Поэтому мы могли бы также прочитать целую страницу.
При возникновении ошибки в странице это означает, что доступ к странице на любом уровне в таблицах страниц отсутствует.
Это может означать широкий спектр вещей, из-за того, что бит «Настоящий» был просто переключен (со страницей все еще там), тем фактом, что страница была сохранена на диск и обнулена в памяти.
Поскольку функция отображения всего, что означает, что каждое значение является допустимым значением, ЦП должен знать, когда значение недопустимо.
Настоящий бит выполняет следующее: сообщит ЦП о том, что перевод не должен выполняться и что вместо него необходимо создать исключение.
OS использует это исключение, чтобы получать уведомление о том, когда нужна страница, не нужно переназначать сопоставление на другую страницу или нулевое значение памяти.
Когда люди говорят, что страница удалены, они означают, что она удалена из сопоставления, и все современные ОС также имеют нулевую страницу, чтобы предотвратить утечку информации в другие процессы.
Так что, если физический кадр не отображается, это не означает, что другая страница в другом процессе сопоставляет его, это просто означает, что доступ к этому диапазону адресов невозможен.
Как было сказано выше, для OS существует множество причин для этого, включая защиту.