Адресные пространства и модели оперативной памяти
Адресация и распределение памяти
Синтаксическая конструкция, с помощью которой обеспечивается доступ к определенному объекту (переменной, полю записи, массиву или его элементу, файлу), называется неявным адресом (implied address). Примеры неявных адресов дают следующие конструкции: Point^.Name, arrA[4], intValue, D:\DelProj\Table.xls. Используя неявный адрес, программист или пользователь предполагает, что адресуемый объект хранится в некотором участке памяти. Доступ к этому участку со стороны программы осуществляется по логическому адресу (logical address), который идентифицирует объект в виртуальной памяти. Логический адрес преобразуются в реальный физический адрес (physical address) ячейки оперативной памяти или порта.
Под адресным пространством компьютера понимается множество адресов памяти. Адресное пространство, понимаемое как множество адресов, доступных программе, еще называют виртуальным адресным пространством, а элемент этого пространства – виртуальным адресом. Определение «виртуальный», относящееся к техническим средствам или данным, указывает на то, что некоторый элемент представляется прикладному программисту существующим, тогда как фактически в представляемом виде он отсутствует. Например, при запуске приложения современная 32-разрядная операционная система, работая в так называемом защищенном режиме, представляет ему для кода и данных блок памяти размером 4 Гбайт. Понятно, что далеко не каждый пользователь может выделить 4 Гбайт ОЗУ под одно приложение. Фактически предоставляется пространство логических адресов, по которым, теоретически может храниться до 4 Гбайт информации. Это и есть виртуальное пространство. Компьютер незаметно для программиста компенсирует недостаток физической памяти, используя специальный страничный механизм, организующий обмен блоков данных или программ между оперативной и внешней памятью.
Реальное адресное пространство – это множество адресов, существующих в памяти ЭВМ физически (реально). Элемент реального адресного пространства – реальный адрес. Реальное адресное пространство является лишь частью виртуального.
Логическим адресным пространством называется множество адресов команд и данных, используемых в конкретной программе, потому иногда его называют адресным пространством программы. Логическое адресное пространство может быть частью реального адресного пространства или выходить за его пределы.
Микропроцессор аппаратно поддерживает две модели оперативной памяти:
- сегментированная модель, в которой программе выделяются непрерывные области памяти, называемые сегментами, а сама программа может обращаться только к информации, которая находится в этих сегментах;
- страничная модель, которую можно рассматривать как надстройку над сегментированной моделью. Основное применение этой модели связано с организацией виртуальной памяти, что позволяет операционной системе использовать для работы программ пространство памяти большее, чем объем физической памяти. Для микропроцессоров Pentium размер доступной виртуальной памяти может достигать 4 Тбайт (терабайт – 240 байт).
Особенности использования и реализации этих моделей зависят от режима работы микропроцессора:
- режим реальных адресов, или просто реальный режим,
- защищенный режим.