Разница между логическими адресами и физическими адресами? - PullRequest
38 голосов
/ 13 сентября 2010

Я читаю Концепцию операционных систем, и я нахожусь на восьмой главе!Однако я мог бы использовать некоторые разъяснения или заверения в том, что мое понимание верно.

Логические адреса: логические адреса генерируются процессором, согласно книге.Что именно это означает?(В сгенерированной исполнением адресной системе ...) Я предполагаю, что когда код скомпилирован для программы, программа имеет нет представление о том, где код будет загружен в память.Все, что делает компилятор, - это создает общий эскиз компоновки программы и того, как должно быть выложено изображение, но не присваивает ему никаких реальных адресов.Когда программа выполняется, CPU берет этот образ компоновки, который создал компилятор, и передает некоторые адреса (логические) тем, которые сгенерированы из кода.

Физические адреса: Физические адреса не генерируются до тех пор, пока ЦП не сгенерирует некоторый набор логических адресов (состоящий из базового адреса и смещения).Логические адреса проходят через MMU или другое устройство, и где-то вдоль линии логические адреса отображаются на физические адреса ОЗУ.

В чем же тогда разница?Я вижу одно преимущество.Использование логических адресов дает больше свободы приложениям.Если бы физические адреса были жестко запрограммированы, то успех программы сильно зависел бы от физического компьютера, доступных адресов ОЗУ и т. Д.

Разве использование логических адресов, преобразованных в физический адрес, не налагает двух шагов вместоодин в один, а значит больше над головой?

Где же тогда логические адреса находятся после генерации?Они могут существовать в регистре ЦП, пока ЦП обслуживает процесс, но до и после, куда они идут?Я понимаю, что это зависит от реализации.Я предполагаю, что они могут храниться в каком-то специальном регистровом пространстве или буфере на процессоре, таком как TLB, правильно?Если нет, то таблица может существовать в самом ОЗУ, а ЦП содержит только указатель / адрес на базовый адрес таблицы в ОЗУ, верно?

Кажется, хранение адресов в оперативной памяти противоречит назначению адресов логической памяти.Я могу только предположить, что мое понимание неверно.

Ответы [ 9 ]

46 голосов
/ 13 сентября 2010

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

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

Приложениеможет быть предоставлено виртуальное адресное пространство (скажем) 4G.Это его полезная память, и он может использовать ее по своему усмотрению.Это хороший непрерывный блок памяти (с точки зрения приложения).

Однако это не только приложение only , и ОС должна быть посредником между всеми ними.Под этой прекрасной смежной моделью происходит много преобразований для преобразования логических в физические адреса.

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

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

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

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

Это, конечно, менее эффективно, чем чистосреда с физическими адресами, но производители процессоров стараются сделать ее настолько безумно эффективной, насколько это возможно, поскольку она интенсивно используется.Преимущества далеко перевешивают недостатки.

9 голосов
/ 20 ноября 2010

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

4 голосов
/ 09 января 2016
  1. Адрес, сгенерированный ЦП, обычно называется логическим адресом. Набор всех логических адресов, генерируемых программой, называется логическим адресным пространством. Принимая во внимание, что адрес, видимый блоком памяти, то есть адрес, загруженный в регистр адреса памяти, обычно называется физическим адресом. Набор всех физических адресов, соответствующих логическим адресам, называется физическим адресным пространством.
  2. Методы привязки адресов во время компиляции и во время загрузки генерируют идентичные логические и физические адреса. Однако в схеме привязки адресов во время выполнения логические и физические адресные пространства различаются.
  3. Пользовательская программа никогда не видит физические адреса. Программа создает указатель на логический адрес, скажем, 346, сохраняет его в памяти, манипулирует им, сравнивает его с другими логическими адресами - все как число 346. Только когда логический адрес используется в качестве адреса памяти, он перемещается относительно регистра базы / перемещения. Аппаратное устройство отображения памяти, называемое блоком управления памятью (MMU), преобразует логические адреса в физические адреса.
  4. Диапазон логических адресов от 0 до макс. Пользовательская программа, которая генерирует логический адрес, считает, что процесс выполняется в местах от 0 до макс. Логические адреса должны быть сопоставлены с физическими адресами перед их использованием. Диапазон физических адресов варьируется от (R + 0) до (R + max) для значения регистра основания / перемещения R.
  5. Пример: enter image description here Преобразование из логических в физические адреса с использованием блока управления памятью (MMU) и регистром перемещения / базы Значение в регистре перемещения / базы добавляется к каждому логическому адресу, сгенерированному пользовательским процессом, во время его отправки в память, чтобы сгенерировать соответствующий физический адрес. На приведенном выше рисунке базовое значение / значение перемещения составляет 14000, затем попытка пользователя получить доступ к местоположению 346 отображается на 14346.
4 голосов
/ 15 мая 2012

Логический адрес: - Логический адрес, сгенерированный процессором.когда мы передаем проблему компьютеру, наш компьютер передает ее процессору по логическому адресу, который мы не видим, этот адрес называется логическим адресом.

Физический адрес: - когда наш процессор создает процесс и решает егонаша проблема, то мы храним данные во вторичной памяти через адрес, называемый физическим адресом

1 голос
/ 15 июня 2015

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

Это в главе 7.2 Stallings.

1 голос
/ 23 августа 2012

Логическое и физическое адресное пространство

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

Набор всех логических адресовгенерируется программой и называется логическим адресным пространством, тогда как набор всех физических адресов, соответствующих этим логическим адресам, является физическим адресным пространством. Теперь отображение времени выполнения с виртуального адреса на физический адрес выполняется аппаратным устройством, известным как управление памятью.Unit.Here в случае отображения базовый регистр известен как регистр перемещения. Значение в регистре перемещения добавляется к адресу, сгенерированному пользовательским процессом во времяМне это отправляется в память. Давайте разберем эту ситуацию с помощью примера: если базовый регистр содержит значение 1000, то попытка пользователя обратиться к местоположению 0 динамически перемещается в местоположение 1000, сопоставляется доступ к местоположению 346до местоположения 1346.

Пользовательская программа никогда не видит реального физического адресного пространства, она всегда имеет дело с логическими адресами. Поскольку у нас есть два разных типа адресов, логический адрес в диапазоне (от 0 до макс.) и физические адресав диапазоне (от R до R + max), где R - это значение регистра перемещения. Пользователь генерирует только логические адреса и считает, что процесс выполняется в местоположении от 0 до max. Как видно из приведенного выше текста, пользовательская программа предоставляеттолько логические адреса, эти логические адреса должны быть сопоставлены с физическим адресом, прежде чем они будут использованы.

0 голосов
/ 20 марта 2019

Я нашел статью о логическом и физическом адресе в операционной системе, которая ясно объясняет это.

Логический адрес генерируется ЦП, пока программаБег.Логический адрес является виртуальным адресом, поскольку он не существует физически, поэтому он также известен как виртуальный адрес.Этот адрес используется как ссылка для доступа к физической памяти ЦП.Термин логическое адресное пространство используется для набора всех логических адресов, сгенерированных перспективой программы.Аппаратное устройство, называемое модулем управления памятью, используется для сопоставления логического адреса с соответствующим физическим адресом.

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

Logical and Physical Address comparision

Источник: www.geeksforgeeks.org

0 голосов
/ 22 марта 2013

Логический адрес - это адрес, по которому элемент (ячейка памяти, элемент хранения, сетевой хост) находится с точки зрения выполняемой прикладной программы.

0 голосов
/ 13 сентября 2010

Насколько мне известно, физический адрес является явным, установленным в памяти каменным адресом в памяти, а логический адрес состоит из базового указателя и смещения.

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

...