Введение

В вычислительной технике адресное пространство определяет диапазон дискретных адресов, каждый из которых может соответствовать сетевому узлу, периферийному устройству, сектору диска, ячейке памяти или другой логической или физической сущности. Чтобы программное обеспечение могло сохранять и извлекать данные, каждый элемент данных должен иметь адрес, по которому его можно найти. Количество доступных адресных пространств зависит от базовой структуры адресов, которая обычно ограничена используемой компьютерной архитектурой. Часто адресное пространство в системе с виртуальной памятью соответствует таблице преобразования верхнего уровня, например, таблице сегментов в IBM System/370. Адресные пространства создаются путем объединения достаточного количества уникальных идентификаторов, чтобы сделать адрес однозначным в пределах этого адресного пространства. Для физического адреса человека адресное пространство будет представлять собой комбинацию местоположений, таких как район, город, населенный пункт или страна. Некоторые элементы адресного пространства данных могут быть одинаковыми, но если хотя бы один элемент в адресе отличается, адреса в этом пространстве будут ссылаться на разные объекты. Например, по одному адресу "32 Main Street" может быть несколько зданий, но в разных городах, что демонстрирует, что разные города имеют разные, хотя и аналогично организованные, адресные пространства улиц. Адресное пространство обычно предусматривает (или позволяет) разделение на несколько регионов в соответствии с его математической структурой. В случае полного порядка, как в случае адресов памяти, это просто сегменты. Подобно иерархической структуре почтовых адресов, некоторые вложенные доменные иерархии представляются в виде направленного упорядоченного дерева, например, в системе доменных имен или структуре каталогов. В Интернете организация Internet Assigned Numbers Authority (IANA) распределяет диапазоны IP-адресов различным регистраторам, чтобы каждый мог управлять своей частью глобального интернет-адресного пространства.

Картография адресов и их перевод

Еще одной общей особенностью адресных пространств являются отображения и преобразования, часто формирующие множество уровней. Обычно это означает, что какой-либо адрес более высокого уровня должен быть преобразован в адрес более низкого уровня. Например, файловая система на логическом диске работает с линейными номерами секторов, которые необходимо преобразовать в абсолютные LBA-адреса секторов, в простейшем случае, путем добавления адреса первого сектора раздела. Затем, для диска, подключенного через Parallel ATA, каждый из этих адресов должен быть преобразован в логический адрес цилиндр-головка-сектор из-за исторических ограничений интерфейса. Дисковый контроллер преобразует его обратно в LBA, а затем, наконец, в физические номера цилиндров, головок и секторов. Система доменных имен (DNS) сопоставляет свои имена с сетевыми адресами (обычно IP-адресами) и обратно, которые, в свою очередь, могут быть сопоставлены с адресами канального уровня сети с помощью протокола разрешения адресов (ARP). Трансляция сетевых адресов (NAT) также может происходить на границе различных IP-пространств, таких как локальная сеть и Интернет. Классическим примером преобразования виртуальных адресов в физические является виртуальная память, где различные страницы виртуального адресного пространства сопоставляются либо с файлом подкачки, либо с физическим адресным пространством основной памяти. Возможно, что несколько различных виртуальных адресов указывают на один и тот же физический адрес и, следовательно, на один и тот же физический байт оперативной памяти. Также возможно, что один виртуальный адрес может сопоставляться с нулем, одним или несколькими физическими адресами.