Физическая память, к которой процессор имеет доступ по шине адреса называется оперативной памятью. На самом нижнем уровне памяти она представлена в виде массива битов. Минимальная адресуемая ячейка памяти — байт. Оперативная память — это последовательность байтов. Также процессор работает со словами и двойными словами (слово — 2 байта / 16 бит, двойное слово — 4 байта).
Каждому байту соответствует уникальный адрес, его номер, — это физический адрес. Диапазон значений физических адресов зависит от разрядности шины адреса процессора. Механизм формирования физического адреса зависит от режима процессора.
Процессор аппаратно поддерживает две модели использования оперативной памяти: сегментированная и страничная. Страничная модель является надстройкой над сегментированной, существует для организации виртуальной памяти.
Сегментация — это механизм адресации, обеспечивающий существование нескольких независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты задач от взаимного влияния задач.
Сегмент — независимый, поддерживаемый на аппаратном уровне, блок памяти. Программа может состоять из любого количества сегментов, но непосредственный доступ она имеет только к трем основным сегментам (кода, данных, стека, а также к дополнительным сегментам данных). Операционная система размещает сегменты в оперативной памяти под определенным физическим адресом, значения этих адресов помещают в определенное место, которое зависит от режима работы процессора. В реальном режиме это сегментные регистры. В защищенном режиме они размещены в элементы специальной системной дескрипторной таблицы.
Три модели сегментированной организации памяти:
- Сегментная модель памяти реального режима.
- Сегментная модель памяти защищенного режима.
- Сплошная модель памяти защищенного режима.
Под физическим адресом понимается адрес в памяти, выдаваемый на шину адреса микропроцессора
Формирование физического адреса в реальном режиме:
Вне зависимости от разрядности шины адрес в реальном режиме используется только 20 младших разрядов адресной шины. Максимальный размер сегмента = 64 килобайта. Для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента и смещение внутри сегмента.
Сегментированная модель памяти в защищенном режиме:
Любой сегмент памяти в защищенном режиме имеет следующие атрибуты:
- Расположение сегмента в памяти (его начала)
- Размер сегмента
- Уровень привилегий
- Тип доступа
Информация о каждом сегменте объединена в дескриптор сегмента. Дескриптор сегмента располагается в операционно-системной таблице (GDT и LDT). Дескриптор сегмента имеет размер 8 байтов. Поля дескриптора (база и лимит) определяют адрес и размер сегмента. База — линейный 32 битный адрес начала сегмента. Лимит — 20-битное число, которое равно размеру сегмента байта. Реальный лимит сегмента зависит от бита гранулярности (если бит гранулярности сброшен (0), то 20-битное значение и будет тем самым лимитом сегмента, если бит гранулярности установлен (1), то всё 20-битное значение автоматически увеличивается в 1000h раз, т.е. если при бите гранулярности = 0 мы измеряем размер в байтах, то при G=1 – в единицах по 4 Килобайта).
Сплошная модель памяти защищенного режима (flat memory model)
. Базы всех сегментов установлены в 0, a лимиты в 4 гигабайта