Разница между логическими адресами и физическими адресами?

StackOverflow https://stackoverflow.com/questions/3697729

Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

Адрес, сгенерированный CPU, обычно решается в качестве логического адреса, в то время как адрес, видимый блок памяти, который один загружен в реестр адреса памяти памяти, обычно решается как физический адрес. Время компиляции и загрузка. Создает идентичные логические и физические адреса. Как бы схема привязки адресов времени выполнения приводит к различным логическим и физическим адресам.

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

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

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

Это в главе 7.2 октября.

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

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

Я нашел А. статья О Logical VS Физический адрес в операционной системе, которые четко объясняют об этом.

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

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

Logical and Physical Address comparision

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top