Адресное пространство
Адресное пространство — это просто диапазон адресов, обозначающих определенное место в памяти. Адресные пространства разделают на три разновидности:
физическое адресное пространство
линейное адресное пространство
логическое адресное пространство
Физические адреса — это аппаратные адреса доступные в системе. Если в системе имеется 64 Мб памяти, в ней допустимые физические адреса могут находиться в диапазоне от 0 до 0x3fffffff. Каждый адрес соответствует одному набору транзисторов в микросхемах памяти и отдельному сочетанию сигналов на адресной шине процессора.
Страничный обмен позволяет перемещать процессы или только фрагменты процессов в различные области физической памяти и обратно в течение срока существования процесса. Именно по этой причине процессам предоставляется пространство логических адресов. Когда речь идет о любом конкретном процессе, предусмотренное для него его адресное пространство начинается с 0 и продолжается до шестнадцатеричного адреса 0xbfffffff. Несмотря на то, что каждому процессу предоставляется одинаковое логическое пространство, соответствующие физические адреса для каждого процесса различны, поэтому в действительности они не могут помешать друг другу.
Для обеспечения работы ядра и логические, и физические адреса подразделяются на страницы, каждый действительный логический адрес располагается на одной и только одной логической странице, и это же касается физических адресов.
В противоположность этому, линейные адреса обычно не рассматриваются как адреса, находящиеся на страницах. Процессор преобразует логические адреса, используемые процессом, в линейные адреса с применением способа, зависящего от архитектуры. В архитектуре х86 это преобразование предусматривает простое сложение виртуального адреса с другим адресом - базовым адресом сегмента процесса; поскольку этот базовый адрес устанавливается равным 0 для любой задачи, логические адреса и линейные адреса в этой архитектуре одинаковы. Затем результирующий линейный адрес преобразуется в физический адрес для взаимодействия с оперативной памятью системы.
Объем адресного пространства МПС определяется разрядностью шины адреса и номенклатурой управляющих сигналов интерфейса. Управляющие сигналы могут определять тип объекта, к которому производится обращение - ОЗУ, ВУ, стек и др. В случае, если МП не выдает сигналов, идентифицирующих устройство, то для селекции используются только адресные линии. Число адресуемых объектов составляет в этом случае 2k, где k - разрядность шины адреса. Иногда говорят, что ВУ в едином адресном пространстве "отображены на память", т.е. адреса ВУ занимают адреса ячеек памяти.
Структура единого адресного пространства МПС на базе i8080
ПЗУ |
ОЗУ |
ВУ |
4K |
<59,75К |
0,25К |
Распределение единого адресного пространства МПС на базе i8080
При небольших объемах памяти некоторые адресные линии можно использовать непосредственно в качестве селектирующих. Это позволит уменьшить объем оборудования МПС за счет исключения селектора адреса. Но есть отрицательная сторона данного способа - адресное пространство используется крайне неэффективно.
При использовании информации о типе устройства, к которому идет обращение, одни и те же адреса можно назначать для разных устройств, а выбор осуществлять с помощью управляющих сигналов. Так, большинство МП выдают информацию о типе обращения к устройству и в интерфейсах присутствуют отдельные управляющие линии для обращения к памяти и вводу-выводу. В результате суммарный объем адресного пространства МПС может превышать величину 2k.