Мне было интересно, какие различия и отношения существуют между логической и виртуальной памятью? Чем отличаются их цели?
Являются ли отношения и различия одинаковыми для логических и виртуальных адресов?
Мне было интересно, какие различия и отношения существуют между логической и виртуальной памятью? Чем отличаются их цели?
Являются ли отношения и различия одинаковыми для логических и виртуальных адресов?
Давайте сначала рассмотрим разницу между виртуальной и логической адресацией. Я считаю, что различие заключается в том, что "логический адрес" означает, что адрес, который видит программа, отличается от физического адреса данных, хранящихся в ОЗУ.
Если у вас есть виртуальная память, физического адреса может вообще не быть, так как сохраненные данные могут быть выгружены на диск. Однако возможно иметь систему без виртуальной памяти, в которой логические адреса отличаются от физических адресов, но каждый логический адрес отображается на физический адрес. Это упростит запуск нескольких программ без их наступления друг на друга, но не позволит программам использовать больше памяти, чем физической памяти, доступной для системы.
Таким образом, в компьютере нет отдельной "логической памяти", хотя я полагаю, вы могли бы сказать, что компьютер с логическими адресами, но без системы виртуальной памяти, имеет систему логической памяти. Я бы просто сказал, что логическая память - это память, адресованная каким-то косвенным методом. Есть ли какая-то конкретная компьютерная система, которую вы имеете в виду?
-
Принимая во внимание ваши комментарии:
Логические адреса для одной и той же физической памяти могут быть одинаковыми или разными. Обычно два процесса не будут иметь доступа к одной и той же памяти, поскольку один может испортить другой. Однако, если они договорились использовать какую-либо форму совместно используемой памяти, они обычно сопоставляют эту совместно используемую память с разными адресами. Виртуальные адреса в большей или меньшей степени являются типом логического адреса, поэтому, если у вас есть операционная система, которая поддерживает виртуальную машину, и два процесса отображают общую память, они обычно будут видеть эту память по разным адресам, так же, как если бы не было виртуальной памяти. объем памяти.
Что касается вашего понимания назначения логического и виртуального, то виртуальная память - это использование HD для расширения памяти, доступной для программ. Логическая адресация может использоваться не только для разделения процессов, но это будет одним из основных применений.
"Логические" адреса памяти используются процессом для ссылки на его код и данные. Перевод с логического адреса на физический адрес зависит от модели памяти.
Когда память отображается напрямую (т. Е. В реальном режиме), адрес логической памяти идентичен адресу физической памяти.
Если физическая память больше, чем адресное пространство процессора (например, на 16-битном процессоре), то аппаратное обеспечение банка памяти часто используется для расширения используемого объема физической памяти. Процессоры Intel 8086/8088 использовали гибкие сегментные регистры вместо фиксированной банковской схемы. Преобразование (16-разрядного) логического адреса в (20-разрядный) физический адрес будет использовать таблицы банковской карты. Для x86 логический адрес, вероятно, будет включать в себя спецификацию регистра сегмента.
Если диапазон физических адресов больше, чем типичная физическая память (например, 32-разрядные процессоры десять лет назад), то для обеспечения использования полного диапазона адресов используется оборудование виртуальной памяти. Логические адреса поддерживаются физической памятью по требованию. Для размещения полного виртуального / логического адресного пространства и / или обеспечения каждого процесса своим собственным адресным пространством необходимо резервное хранилище для хранения выгруженных копий виртуальной памяти. Переставленная память может быть организована по сегментам или страницам или сегментным страницам.
Кстати, за годы взлома ядра Unix я редко слышал или использовал фразу «логический адрес (адрес памяти)». Если вы не имели в виду адрес физической памяти, то это был виртуальный адрес. То есть "логический адрес" == "виртуальный адрес" (когда виртуальная память активирована в MMU).