2016-11-14 9 views
0

Я изучаю (по SO и в других местах) связь между виртуальными адресами и физическими адресами. Я был бы признателен, если бы кто-то мог подтвердить, правильно ли я понимаю это понятие.Правильно ли я понимаю взаимосвязь между виртуальными адресами и физическими адресами?

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

википедия диаграмма, чтобы сделать мое объяснение понятнее:

https://upload.wikimedia.org/wikipedia/commons/3/32/Virtual_address_space_and_physical_address_space_relationship.svg

Является ли мое понимание этой концепции правильно?

спасибо.

ответ

1

Не совсем правильно.

Каждая программа имеет свое виртуальное адресное пространство. Технически существует только одно адресное пространство - физическая память с произвольным доступом. Поэтому он называется «виртуальным», потому что для пользовательской программы кажется, что у него есть собственное адресное пространство.

Теперь, возьмите инструкцию mov 0x1234, %eax (AT & T) или MOV EAX, [0x1234] (Intel) в качестве примера:

  1. ЦП посылает виртуальный адрес 0x1234 к одной из его частей, в MMU.
  2. MMU получает соответствующий физический адрес из таблицы страниц. Этот процесс настройки адреса также с любовью называется «массажированием».
  3. ЦП извлекает данные из места ОЗУ, на которое указывает физический адрес.

Конкретный процесс перевода в значительной степени зависит от реальной архитектуры и центрального процессора.

+0

Приносим извинения; Я забыл задать соответствующий вопрос, прежде чем принимать ваш ответ. Что касается 3, могу ли я правильно сказать, что ЦП может также извлекать данные из вторичного хранилища, предполагая, что это относится к физическому адресу? –

+0

@ handler'shandle №. ЦП может напрямую обращаться к первичному хранилищу. Вторичное хранилище «адресуется» контроллером, который вместе с драйвером загружает данные из вторичного хранилища в основное хранилище. Затем процессор может получить к нему доступ. В архитектуре x86 можно использовать пейджинг: если виртуальный адрес, переданный в MMU, не имеет соответствующего адреса физической памяти в таблице страниц и установлен соответствующий флаг, запрашивается вторичное хранилище, а данные из него копируются в первичный storage.This позволяет программе адресовать больше адресов, чем обеспечивает первичное хранилище. – Downvoter

0

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

Это не совсем правильно. Таблица страниц определяет логическое адресное пространство, состоящее из страниц. Таблица страниц отображает логические страницы в физические кадры страниц, они указывают, что кадр страницы еще не существует [все еще] в памяти, и в этом случае у вас есть виртуальное сопоставление. Страница VIRTUAL, когда память моделируется с использованием дискового пространства.

В старые времена таблицы страниц всегда устанавливали виртуальное адресное пространство. Теперь становится все более распространенным (например, встроенная система) использовать логический перевод адреса без виртуальной памяти (пейджинг). Таким образом, термины «виртуальная память» и «логическая память» часто объединяются.

Физическое адресное пространство существует только для операционной системы. Процесс видит только логическое адресное пространство.

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

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

И, наконец, диаграмма, на которую вы ссылаетесь, является очень плохой иллюстрацией.