2. Организация памяти

Физическая память, к которой процессор имеет доступ по шине адреса называется оперативной памятью. На самом нижнем уровне памяти она представлена в виде массива битов. Минимальная адресуемая ячейка памяти — байт. Оперативная память — это последовательность байтов. Также процессор работает со словами и двойными словами (слово — 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 гигабайта

17.07.2015