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

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

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

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

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

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

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

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


person Community    schedule 13.09.2010    source источник
comment
Я бы посоветовал прочитать статью в Википедии о таблице страниц или что-то в этом роде.   -  person asveikau    schedule 13.09.2010
comment
Спасибо, запись в таблице страниц очень полезна   -  person    schedule 13.09.2010


Ответы (9)


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

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

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

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

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

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

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

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

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

person paxdiablo    schedule 13.09.2010
comment
Спасибо, что делает много кликов. Я также считаю, что своппинг - это что-то вроде архаики. Часто ли он используется в наши дни? Оперативная память довольно дешевая. Я не знаю, когда своп действительно нужен на ПК. Ноутбуки могут использовать swap для сна / гибернации. Есть ли еще его применение? - person ; 13.09.2010
comment
Оперативная память дешевая, но не настолько дешевая, чтобы вы могли предоставить 100 процессов на своей машине по 4G каждый :-) Также обратите внимание, что часто существует различие между подкачкой (выгружается весь процесс) и подкачкой (выгружаются небольшие страницы). Последний намного эффективнее. Это также означает, что вы даже не загружаете в физическую память то, что вам не нужно. - person paxdiablo; 13.09.2010
comment
Ах, замена страниц имеет больше смысла. Я полагаю, что это и есть «сегментация», когда страницы делятся на разные сегменты и загружаются в оперативную память только необходимые сегменты? Таким образом, вы не используете больше оперативной памяти, чем действительно необходимо? - person ; 13.09.2010
comment
Можно ли сказать, что основное различие между типами адресов - «перемещаемость»? - person ; 13.09.2010
comment
Я бы сказал более высокий уровень абстракции. Логические адреса перемещаемы не больше, чем физические, с точки зрения того, к чему вы их относите. Вы не можете использовать произвольный логический адрес для своего логического адреса, хотя вы можете использовать произвольный физический адрес для своего логического адреса. Сопоставление между ними - это то, что обеспечивает возможность перемещения, а не свойство какого-либо конкретного уровня. Это ничем не отличается от сопоставления имен файлов с секторами логического диска или секторов логического диска с кортежем (цилиндр, головка, сектор). - person paxdiablo; 13.09.2010
comment
+1 @paxdiablo хороший ответ, он помог мне кое-что понять даже после прочтения книги Гэлвина. - person Trying; 10.07.2013

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

person pallavi nigam    schedule 20.11.2010

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

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

person JAINATH GUPTA    schedule 15.05.2012

  1. Адрес, генерируемый ЦП, обычно называют логическим адресом. Набор всех логических адресов, генерируемых программой, известен как пространство логических адресов. Принимая во внимание, что адрес, видимый блоком памяти, то есть адрес, загруженный в регистр адреса памяти, обычно называют физическим адресом. Набор всех физических адресов, соответствующих логическим адресам, известен как физическое адресное пространство.
  2. Методы привязки адресов во время компиляции и загрузки генерируют идентичные логические и физические адреса. Однако в схеме привязки адресов во время выполнения логические и физические адресные пространства различаются.
  3. Программа пользователя никогда не видит физических адресов. Программа создает указатель на логический адрес, скажем 346, сохраняет его в памяти, манипулирует им, сравнивает его с другими логическими адресами - все как число 346. Только когда логический адрес используется в качестве адреса памяти, он перемещается относительно регистр базы / переезда. Аппаратное устройство отображения памяти, называемое блоком управления памятью (MMU), преобразует логические адреса в физические адреса.
  4. Диапазон логических адресов от 0 до макс. Пользовательская программа, генерирующая логический адрес, считает, что процесс выполняется в ячейках от 0 до макс. Логические адреса должны быть сопоставлены с физическими адресами перед их использованием. Физические адреса варьируются от (R + 0) до (R + max) для значения R.
  5. Пример:  введите здесь описание изображения Отображение логических адресов в физические с помощью блока управления памятью (MMU) и регистра перемещения / базового регистра Значение в регистре перемещения / базового адреса добавляется к каждому логическому адресу, созданному пользовательским процессом , во время отправки в память, чтобы сгенерировать соответствующий физический адрес. На приведенном выше рисунке значение базы / перемещения составляет 14000, тогда попытка пользователя получить доступ к местоположению 346 сопоставляется с 14346.
person Elyor    schedule 09.01.2016
comment
Почему логический и физический адреса идентичны в случае привязки адреса во время загрузки? - person Abdelrahman Eid; 11.12.2017

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

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

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

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

person gurdas singh    schedule 23.08.2012
comment
Каковы шансы, что вы заимствовали это содержание отсюда? - person Andrew Barber; 03.10.2012
comment
Или любой из дюжины других сайтов, где люди не могут отличить referred от refereed. Похоже, что этот конкретный ответ находится в топ-100 по плагиату :-) - person paxdiablo; 24.04.2015
comment
Я поддержал этот вопрос, потому что он имеет хорошее объяснение! Ссылка, которую вы предоставили @AndrewBarber, больше не работает - person Hashmatullah Noorzai; 13.03.2018

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

Он находится в главе 7.2 «Срывов».

person mellodi    schedule 15.06.2015

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

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

person Alex Hart    schedule 13.09.2010

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

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

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

Сравнение логического и физического адреса

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

person Tharindu Sathischandra    schedule 20.03.2019

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

person Saif Khan    schedule 22.03.2013
comment
Сказал, что ваш ответ неполный, спрашивающий спросил, в чем разница между логическим и физическим адресами, а не только в логическом адресе! - person Hashmatullah Noorzai; 13.03.2018