2016-11-28 4 views
1

Насколько я понимаю, процессор всегда создает виртуальный адрес, состоящий из 2 частей - номер страницы и смещение страницы. Номер страницы используется для индексации таблицы страниц (соответствующее сопоставление дает начальный адрес кадра в ОЗУ). Теперь, пожалуйста, рассмотрите следующие вопросы. Учтите, что размер слова машины равен 4 байтам, а размер страницы равен размеру кадра = 4096 байт.Использование смещения в виртуальных адресах

  1. Предположим, что номер страницы равен 4, а смещение равно 3. Затем в логической памяти отображается карта 8 в виртуальной памяти. Это означает, что начальный адрес кадра равен 8.
  2. Теперь каждый кадр будет содержать 4096/4 = 1024 слов. Влияет ли смещение на слово внутри кадра, так как машина всегда будет извлекать слово за раз? Я имею в виду, что это означает третье слово в кадре 8?
  3. Это конкретное слово, данное ЦПУ или всему кадру? Если бывший, то почему все говорят о передаче в терминах фреймов и страниц, а не слов?
  4. Предположим, что произошла ошибка страницы. Это означает, что конкретная страница не в памяти. Означает ли это, что отображаемый физический адрес содержит другую страницу? Имеет ли отображение даже в таком случае, когда недопустимый бит равен 1.

Может кто-нибудь прояснить мне вещи? Как-то я, кажется, это понял, а в следующий раз я попал в лабиринт.

ответ

4

Ключевым моментом пейджинга является то, что он имеет дело с «кусками» памяти.
Это карта, функция, которая преобразует виртуальные адреса в физические адреса, но не по базе адресов по адресам. Скорее, «кусок» непрерывный виртуальных адресов переведен вместе в другой непрерывный «кусок», теперь физический, адреса.
Вы можете думать об этом как о «переводе» или «перетасовке» «кусков» памяти.

Shuffing of "chunks" of memory

Правильный термин для "кусок" является страница.
Если вы попытаетесь выполнить сопоставление образцов, вы увидите, что каждая страница содержит набор адресов, все из которых имеют свою особенность: их младшие разряды не меняют при переходе от виртуального к физическому. Верхние биты вместо этого являются произвольными.
Эта дихотомия значения адреса определяет Смещение и Страница/Номер кадра.
Смещение - это часть значения адреса, которое не подвергается никакому переводу. В странице по 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 существует множество причин для этого, включая защиту.

1

У вас есть вещи немного назад. Операционная система определяет логическое адресное пространство для каждого процесса. Логическое адресное пространство разделено на единицы памяти, называемые PAGES.

Операционная система логически отображает страницы адреса на физические кадры страницы или на вторичное хранилище. Если операционная система сопоставляет страницы со вторичным хранилищем, то используется виртуальная память.

В старые времена все системы, которые выполняли логическую память, всегда делали отображения виртуальной памяти на вторичное хранилище. Вот почему термины перевод виртуальной памяти и перевод логической памяти часто объединены. В эти дни становится все более распространенным логический перевод без виртуальной памяти.

Доступ всех адресов через процесс осуществляется по логическим адресам. Процессор преобразует логический адрес в рамки страницы. Если логическая страница существует, но отображается на вторичное хранилище, доступ к этой странице вызывает ошибку страницы. Операционная система должна обрабатывать неисправность, переназначить логическую/виртуальную страницу на физический кадр страницы; загрузить данные из вторичного хранилища в рамку страницы; и перезапустите инструкции.

  1. Предположив, что номер страницы 4 и смещение 3. Затем страница 4 в логической памяти карты к кадру 8 в виртуальной памяти. Это означает, что начальный адрес рамы составляет 8.

Это не имеет никакого смысла. Логическая страница является виртуальной, когда она сопоставляется с вторичным хранилищем. Если номер страницы равен 4 4-й логической страницы может:

а) не имеют отображение на всех (нарушение прав доступа)

б) отображение в физическую страницу кадра

с) карты к вторичной памяти (виртуальная память)

  1. Теперь каждый кадр будет содержать 4096/4 = 1024 слов. Влияет ли смещение на слово внутри кадра, так как машина всегда будет извлекать слово за раз? Я имею в виду, что это означает третье слово в кадре 8?

В почти всех (если не все) современных процессорах нет слов памяти; только байты. Системная шина извлекает память, а «размер слова» шины может (и часто) отличаться от «размера слова» процессора.

  1. Это конкретное слово, данное ЦПУ или всему кадру? Если бывший, то почему все говорят о передаче в терминах фреймов и страниц, а не слов?

Процесс рассматривает передачи в размерах, связанных с выполняемой инструкцией. Размер операнда может быть больше или меньше машинного слова. Шина передает данные в память, и этот размер часто отличается от размера слова машины.

Предположим, что произошла ошибка страницы. Это означает, что конкретная страница не в памяти. Означает ли это, что отображаемый физический адрес содержит другую страницу? Имеет ли отображение даже в таком случае, когда недопустимый бит равен 1.

Я дал три возможности для отображения логических страниц выше. Как они указаны, являются специфическими для системы. Некоторые системы используют 2 бита для обозначения a, b или c. Другие используют один бит для указания (b) и требуют, чтобы операционная система определяла, является ли это (a) или (c).

Независимо от того, вызвана ли ошибка страницы, зависит от состояния таблицы страниц.

Как правило, ошибка страницы означает, что рамка страницы отсутствует в памяти. Однако часто физический кадр страницы может находиться в памяти, но не отображается в таблице страниц (ошибка со стороны страницы). (Это происходит, когда операционная система имеет несмонтированные кадры страницы, чтобы освободить их, но не перераспределила их.) В этом случае операционной системе просто нужно обновить таблицу страниц, чтобы указать на кадр страницы и перезапустить инструкцию (нет необходимости загрузка из вторичного хранилища).

Смежные вопросы