Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Логический адрес и физический адрес

Лекция 3: Физическая и логическая организация адресного пространства

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

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

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

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

  • плоское (линейное) ЛАП: состоит из массива байтов, не имеющего определенной структуры; трансляция адреса не требуется, так как логический адрес совпадает с физическим;
  • сегментированное ЛАП: состоит из сегментов — непрерывных областей памяти, содержащих в общем случае переменное число байтов; логический адрес содержит 2 части: идентификатор сегмента и смещение внутри сегмента; трансляцию адреса проводит блок сегментации MMU ;
  • страничное ЛАП: состоит из страниц — непрерывных областей памяти, каждая из которых содержит фиксированное число байтов. Логический адрес состоит из номера (идентификатора) страницы и смещения внутри страницы; трансляция логического адреса в физический проводится блоком страничного преобразования MMU ;
  • сегментно-страничное ЛАП: состоит из сегментов, которые, в свою очередь, состоят из страниц; логический адрес состоит из идентификатора сегмента и смещения внутри сегмента. Блок сегментного преобразования MMU проводит трансляцию логического адреса в номер страницы и смещение в ней, которые затем транслируются в физический адрес блоком страничного преобразования MMU .

Таким образом, основой получения физического адреса памяти служит логический адрес . В какой-то степени логическое адресное пространство , с которым имеет дело программист, можно сравнить со структурой книги, где аналогом сегмента выступает рассказ, страница книги соответствует странице ЛАП, а искомая информация — это некоторое слово . При этом если память организована как линейная, то номер искомого слова задается в явном виде и просто отсчитывается от начала книги. При сегментном представлении памяти искомое слово определяется его номером в заданном рассказе. Страничное представление памяти предполагает задание информации о слове в виде номера страницы в книге и номера слова на указанной странице. При сегментно-страничном представлении логический адрес слова задается номером слова в определенном рассказе. В этом случае по оглавлению книги определяется номер страницы, с которой начинается указанный рассказ. Затем, зная количество слов на странице и положение слова в рассказе, можно вычислить страницу книги и положение искомого слова на этой странице.

Формирование физического адреса в универсальном микропроцессоре при различных режимах работы

Микропроцессор способен работать в двух режимах: реальном и защищенном.

При работе в реальном режиме возможности процессора ограничены: емкость адресуемой памяти составляет 1 Мбайт, отсутствует страничная организация памяти, сегменты имеют фиксированную длину 2 16 байт .

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

В реальном режиме сегментные регистры процессора содержат старшие 16 бит физического адреса начала сегмента. Сдвинутый на 4 разряда влево селектор дает 20-разрядный базовый адрес сегмента. Физический адрес получается путем сложения этого адреса с 16-разрядным значением смещения в сегменте, формируемого по заданному режиму адресации для операнда или извлекаемому из регистра EIP для команды (рис. 3.1). По полученному адресу происходит выборка информации из памяти.

Наиболее полно возможности микропроцессора по адресации памяти реализуются при работе в защищенном режиме. Объем адресуемой памяти увеличивается до 4 Гбайт, появляется возможность страничного режима адресации. Сегменты могут иметь переменную длину от 1 байта до 4 Гбайт.

Общая схема формирования физического адреса микропроцессором , работающим в защищенном режиме, представлена на рис. 3.2.

Как уже отмечалось, основой формирования физического адреса служит логический адрес . Он состоит из двух частей: селектора и смещения в сегменте.

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

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

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

Структура дескриптора сегмента представлена на рис. 3.3.

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

32-разрядное поле базового адреса позволяет определить начальный адрес сегмента в любой точке адресного пространства в 2 32 байт (4 Гбайт).

Поле предела (limit) указывает длину сегмента (точнее, длину сегмента минус 1: если в этом поле записан 0, то это означает, что сегмент имеет длину 1) в адресуемых единицах, то есть максимальный размер сегмента равен 2 20 элементов.

Величина элемента определяется одним из атрибутов дескриптора битом G ( Granularity — гранулярность , или дробность):

Таким образом, сегмент может иметь размер с точностью до 1 байта в диапазоне от 1 байта до 1 Мбайт (при G = 0 ). При объеме страницы в 2 12 = 4 Кбайт можно задать объем сегмента до 4 Гбайт (при G = l ):

Так как в архитектуре IA-32 сегмент может начинаться в произвольной точке адресного пространства и иметь произвольную длину, сегменты в памяти могут частично или полностью перекрываться.

Бит размерности ( Default size ) определяет длину адресов и операндов, используемых в команде по умолчанию:

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

Байт доступа определяет основные правила обращения с сегментом.

Бит присутствия P (Present) показывает возможность доступа к сегменту. Операционная система (ОС) отмечает сегмент, передаваемый из оперативной во внешнюю память , как временно отсутствующий, устанавливая в его дескрипторе P = 0 . При P = 1 сегмент находится в физической памяти. Когда выбирается дескриптор с P = 0 (сегмент отсутствует в ОЗУ ), поля базового адреса и предела игнорируются. Это естественно: например, как может идти речь о базовом адресе сегмента, если самого сегмента вообще нет в оперативной памяти? В этой ситуации процессор отвергает все последующие попытки использовать дескриптор в командах, и определяемое дескриптором адресное пространство как бы»пропадает».

Возникает особый случай неприсутствия сегмента. При этом операционная система копирует запрошенный сегмент с диска в память (при этом, возможно, удаляя другой сегмент), загружает в дескриптор базовый адрес сегмента, устанавливает P = 1 и осуществляет рестарт той команды, которая обратилась к отсутствовавшему в ОЗУ сегменту.

Читать еще:  Как правильно писать электронный адрес

Двухразрядное поле DPL ( Descriptor Privilege Level ) указывает один из четырех возможных (от 0 до 3) уровней привилегий дескриптора, определяющий возможность доступа к сегменту со стороны тех или иных программ (уровень 0 соответствует самому высокому уровню привилегий).

Бит обращения A (Accessed) устанавливается в»1″ при любом обращении к сегменту. Используется операционной системой для того, чтобы отслеживать сегменты , к которым дольше всего не было обращений.

Пусть, например, 1 раз в секунду операционная система в дескрипторах всех сегментов сбрасывает бит А. Если по прошествии некоторого времени необходимо загрузить в оперативную память новый сегмент, места для которого недостаточно, операционная система определяет»кандидатов» на то, чтобы очистить часть оперативной памяти, среди тех сегментов, в дескрипторах которых бит А до этого момента не был установлен в»1″, то есть к которым не было обращения за последнее время.

Поле типа в байте доступа определяет назначение и особенности использования сегмента. Если бит S ( System — бит 4 байта доступа) равен 1, то данный дескриптор описывает реальный сегмент памяти. Если S = 0 , то этот дескриптор описывает специальный системный объект , который может и не быть сегментом памяти, например, шлюз вызова, используемый при переключении задач, или дескриптор локальной таблицы дескрипторов LDT . Назначение битов байта доступа определяется типом сегмента (рис. 3.4).

В сегменте кода: бит подчинения, или согласования, C ( Conforming ) определяет дополнительные правила обращения, которые обеспечивают защиту сегментов программ. При C = 1 данный сегмент является подчиненным сегментом кода. В этом случае он намеренно лишается защиты по привилегиям. Такое средство удобно для организации, например, подпрограмм, которые должны быть доступны всем выполняющимся в системе задачам. При C = 0 — это обычный сегмент кода; бит считывания R ( Readable ) устанавливает, можно ли обращаться к сегменту только на исполнение или на исполнение и считывание, например, констант как данных с помощью префикса замены сегмента. При R = 0 допускается только выборка из сегмента команд для их выполнения. При R = 1 разрешено также чтение данных из сегмента.

Запись в сегмент кода запрещена. При любой попытке записи возникает программное прерывание .

В сегменте данных:

  • ED ( Expand Down) — бит направления расширения. При ED = 1 этот сегмент является сегментом стека и смещение в сегменте должно быть больше размера сегмента. При ED = 0 — это сегмент собственно данных (смещение должно быть меньше или равно размеру сегмента);
  • бит разрешения записи W(Writeable) . При W = 1 разрешено изменение сегмента. При W = 0 запись в сегмент запрещена, при попытке записи в сегмент возникает программное прерывание .

В случае обращения за операндом смещение в сегменте формируется микропроцессором по режиму адресации операнда, заданному в команде. Смещение в сегменте кода извлекается из регистра — указателя команд EIP .

Сумма извлеченного из дескриптора начального адреса сегмента и сформированного смещения в сегменте дает линейный адрес (ЛА).

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

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

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

Ремонт компьютеров в Самаре

Операционные системы компьютеров, построенных на архитектуре PC, такие как Mac OS X, Windows 7 и Linux, позволяют одновременно запускать несколько программ. Разработчикам ОС удалось достичь этого, создавая видимость для каждой программы, что она единственная. Этот фокус получается сделать, используя такое понятие, как адрес памяти. Так как обычный компьютер имеет ограниченное количество памяти с настоящей физической адресацией, операционная система использует виртуальную схему распределения памяти на основе логического адреса. Использование технологии виртуальной адресации позволяет на компьютере запускать одновременно несколько программ.

Компьютерная память и программы

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

Виртуальная память

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

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

Физический адрес

Адрес в памяти, служащий для указания действительного размещения данных на компьютерном оборудовании, получил название физический адрес. Когда компьютер записывает данные по определенному физическому адресу в памяти, вы можете в любой момент обратиться к ним, зная его. Помимо модулей оперативной памяти, физический адрес может быть использован при работе с таким компонентом компьютера, как BIOS или basic input-output system. Этот чип содержит небольшие программы, записанные в BIOS еще на предприятии – изготовителе материнских плат. Другим устройством с физической адресацией к данным является жесткий диск, клавиатура и прочие компоненты системы. Но только при работе с памятью RAM может быть использована логическая адресация, и то косвенно.

Логический адрес

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

Читать еще:  Как правильно ввести емейл адрес

Адреса памяти: физические, виртуальные, логические, линейные, эффективные, гостевые

Мне периодически приходится объяснять разным людям некоторые аспекты архитектуры Intel® IA-32, в том числе замысловатость системы адресации данных в памяти, которая, похоже, реализовала почти все когда-то придуманные идеи. Я решил оформить развёрнутый ответ в этой статье. Надеюсь, что он будет полезен ещё кому-нибудь.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.

На рисунке — сегментация и страничное преобразование адреса, как они выглядели 27 лет назад. Иллюстрация из Intel 80386 Programmers’s Reference Manual 1986 года. Забавно, что в описании рисунка есть аж две опечатки: «8036 Addressing Machanism». В наше время адрес подвергается более сложным преобразованиям, а иллюстрации больше не делают в псевдографике.

Начнём немного с конца — с цели всей цепочки преобразований.

Физический адрес

Эффективный адрес

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

Например, для инструкции (ассемблер в AT&T-нотации)

addl %eax, 0x11(%ebp, %edx, 8)

эффективный адрес операнда-назначения будет вычислен по формуле:

eff_addr = EBP + EDX * 8 + 0x11

Логический адрес

Без знания номера и параметров сегмента, в котором указан эффективный адрес, последний бесполезен. Сам сегмент выбирается ещё одним числом, именуемым селектором. Пара чисел, записываемая как selector:offset , получила имя логический адрес. Так как активные селекторы хранятся в группе специальных регистров, чаще всего вместо первого числа в паре записывается имя регистра, например, ds:0x11223344.

Здесь обычно у тех, кто столкнулся с этими понятиями впервые, голова начинает идти кругом. Несколько упростить (или усложнить) ситуацию помогает тот факт, что почти всегда выбор селектора (и связанного с ним сегмента) делается исходя из «смысла» доступа. По умолчанию, если в кодировке машинной инструкции не сказано иного, для получения адресов кода используются логические адреса с селектором CS, для данных — с DS, для стека — с SS.

Линейный адрес

Эффективный адрес — это смещение от начала сегмента — его базы. Если сложить базу и эффективный адрес, то получим число, называемое линейным адресом:

lin_addr = segment.base + eff_addr

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

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

Что такое виртуальный адрес?

В литературе и в документации других архитектур встречается ещё один термин — виртуальный адрес. Он не используется в документации Intel на IA-32, однако встречается, например, в описании Intel® Itanium, в котором сегментация не используется. Можно смело считать, что для IA-32 виртуальный == линейный.
В советской литературе по вычислительной технике этот вид адресов также именовался математическим.

Страничное преобразование

Однако общая идея всегда одна и та же: линейный адрес разбивается на несколько частей, каждая из которых служит индексом в одной из системных таблиц, хранящихся в памяти. Записи в таблицах — это адреса начала таблицы следующего уровня или, для последнего уровня — искомая информация о физическом адресе страницы в памяти и её свойствах. Самые младшие биты не преобразуются, а используются для адресации внутри найденной страницы. Например, для режима PAE с размером страниц 4 кбайт преобразование выглядит так:

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

Гостевой физический

До введения возможностей аппаратной виртуализации в процессорах Intel страничное преобразование было последним в цепочке. Когда же на одной системе работают несколько виртуальных машин, то физические адреса, получаемые в каждой из них, приходится транслировать ещё один раз. Это можно делать программным образом, или же аппаратно, если процессор поддерживает функциональность EPT (англ. Extended Page Table). Адрес, раньше называвшийся физическим, был переименован в гостевой физический для того, чтобы отличать его от настоящего физического. Они связаны с помощью EPT-преобразования. Алгоритм последнего схож с ранее описанным страничным преобразованием: набор связанных таблиц с общим корнем, последний уровень которых определяет, существует ли физическая страница для указанной гостевой физической.

Полная картина

Я попытался собрать все преобразования адреса в одну иллюстрацию. В ней преобразования обозначены стрелками, типы адресов обведены в рамки.

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

Заключение

  1. Virtual: Translated by dynamic address translation (DAT) to real addresses
  2. Real: Translated to absolute addresses using the prefix register
  3. Absolute: After applying the prefix register
  4. Logical: The address seen by the program (this can either be a virtual or a real address)
  5. Physical: translated to absolute addresses by the Config Array

Спасибо за внимание!

Литература

  • Скопировать ссылку
  • Facebook
  • Twitter
  • ВКонтакте
  • Telegram
  • Pocket

Похожие публикации

  • 14 июля 2015 в 09:42

Виртуальное время, часть 2: вопросы симуляции и виртуализации

Виртуализация¹

Запуск физического движка Bullet Physics на Andro > +20 14,8k 59 20

Комментарии 11

Сразу уточняющий вопрос — под ia64 подразумевается Intel Itanium? Если да, то в нём формата инструкции для IP-relative адресации не предусмотрено. Для написания position independent code на этой архитектуре можно просто загрузить значение ip в любой регистр общего назначения, а затем использовать его с нужным смещением.

Или всё-таки имелась в виду архитектура Intel 64?

Тогда сперва, я думаю, стоит объяснить, зачем RIP-relative адресация вообще нужна. А нужна она для эффективной поддержки т.н. position-independent code (PIC), т.е. машинного кода, работоспособность которого не зависит от его положения в памяти.

Читать еще:  Корректный емайл адрес

Чаще всего необходимость в PIC возникает для разделяемых библиотек. При раздельной компиляции каждой библиотеки необходимо где-то разместить данные, с которыми она работает; использующий их код будет использовать константы-смещения для их адресации. При загрузке нескольких независимых библиотек может произойти конфликт: две или более библиотек будут хотеть разместить данные по одним и тем же адресам.

Для решения этой проблемы неободимо ввести уровень косвенности: «плавающую» адресацию данных. Можно при загрузке каждой библиотеки высчитывать адреса данных заново и переписывать их прямо в коде. Можно выбрать и использовать некоторый регистр, значение которого будет определять начало блока данных для конкретной библиотеки, и изменять только его значение при переходах между ними.

Наверное, самым изящным решением является выбор указателя текущей инструкции (RIP, EIP, IP, PC, IC…) в качестве такого регистра. На этапе компиляции известно «расстояние» между инструкцией, использующей некоторую переменную, и положением самой переменной в памяти. Самое важное — эта величина не меняется, где бы в памяти мы не разместили библиотеку в будущем. Поэтому смещение относительно счётчика инструкций можно как константу зашить прямо в машинный код инструкции. При условии, что кодировка набора команд это позволяет.

Изначально Intel IA-32 не имела такой тип адресации. Смещения можно было указывать только относительно регистров общего назначения. Кроме того, не было возможности загрузить значение EIP прямо в регистр — это можно было сделать только через операции над памятью, использующие стек, и вызов подпроцедуры, помещающей EIP на стек.

(Кстати, это тот самый случай, когда попытка inline-оптимизации рушит всё веселье!)

Конечно, это всё жутко неэффективно и коряво. Поэтому в компиляторах для 32-битного режима IA-32 по умолчанию режим PIC выключен.

С приходом Intel 64 в набор инструкций был добавлен новый способ адресации (вместо неиспользуемого в 64-битном режиме 32-битного смещения при использовании байта SIB). Для него идущая после байта ModRM 32-битная константа трактуется как смещение со знаком относительно RIP.

Возможно, следующий пример поможет проиллюстрировать сказанное выше. В нём я ассемблирую программу из единственной инструкции, использующей RIP-relative адресацию операнда в памяти, и вывожу результат дизассемблирования.

Здесь в результирующем машинном коде 0x48 — это REX-префикс, 0x89-часть опкода, а 0x05 — байт ModRM, кодирующий, в том числе, тот факт, что используется RIP-relative адресация, и что последующие четыре байта определяют смещение (0x0000aabb) относительно адреса инструкции, следующей за текущей.

Логический адрес и физический адрес 2020

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

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

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

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

Что такое логический адрес?

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

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

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

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

Что такое физический адрес?

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

Когда действительный адрес используется в качестве адреса памяти, он перемещается на базовой странице, где блок администрирования памяти изменяется в разумных местах в физические местоположения. Стратегии ограничения адресов, время сбора и время загрузки создают интеллектуальные и физические местоположения. Физические адреса обычно включают R + Zero (R + 0) в R + максимум (R + max) для базового или регистрационного значения регистров «R».

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

Основы различия

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

Именование пространства

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

Природа

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

Метод связывания — идентичный

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

Метод привязки — разные

Метод привязки по времени выполнения создает логические и физические адреса, которые имеют тенденцию отличаться друг от друга.

непостоянство

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

Ссылка на основную публикацию
Adblock
detector