Подтвердить что ты не робот

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

  • Адрес, сгенерированный ЦП, обычно называется логическим адресом. Набор всех логических адресов, сгенерированных программой, называется логическим адресным пространством. Принимая во внимание, что адрес, который видит блок памяти, то есть тот, который загружен в регистр памяти памяти памяти, обычно называется физическим адресом. Набор всех физических адресов, соответствующих логическим адресам, известен как физическое адресное пространство.
  • Методы связывания времени с использованием времени компиляции и времени загрузки генерируют идентичные логические и физические адреса. Тем не менее, в схеме привязки адреса времени выполнения разные пространства логических и физических адресов различаются.
  • Пользовательская программа никогда не видит физические адреса. Программа создает указатель на логический адрес, скажем, 346, сохраняет его в памяти, манипулирует им, сравнивает его с другими логическими адресами - все как число 346. Только когда логический адрес используется как адрес памяти, он перемещается относительно регистра базы/переезда. Аппаратное устройство отображения памяти, называемое модулем управления памятью (MMU), преобразует логические адреса в физические адреса.
  • Логические адреса варьируются от 0 до макс. Пользовательская программа, которая генерирует логический адрес, думает, что процесс выполняется в местах от 0 до макс. Логические адреса должны быть сопоставлены с физическими адресами до их использования. Физические адреса варьируются от (R + 0) до (R + max) для значения регистра базы/перемещения.
  • Пример: введите описание изображения здесь Сопоставление с логических и физических адресов с использованием модуля управления памятью (MMU) и регистрационного/базового регистра Значение в регистре перемещения/базы добавляется к каждому логическому адресу, сгенерированному пользовательским процессом, в момент его отправки в память, для создания соответствующего физического адреса. На приведенном выше рисунке базовое/перемещающее значение равно 14000, тогда попытка пользователя получить доступ к местоположению 346 сопоставляется с 14346.

Ответ 5

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

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

Ответ 6

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

Это в главе 7.2 "Загибы".

Ответ 7

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

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

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

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

Ответ 8

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