Управление памятью в микропроцессорах семейства Х86, страница 8

Подробная схема формирования физического (линейного) адреса команды из программы, дескриптор которой располагается в LDT, изображена на рисунке III.14.

Сегмент

глобальной

дескрипторной таблицы

 

Сегмент

локальной

дескрипторной

таблицы

 

Рис. III.14. Схема формирования линейного  адреса команды в

              программе, дескриптор которой располагается в LDT.

Важно отметить следующее: так как адреса памяти являются виртуальными, значение селектора не соответствует физическому адресу. С точки зрения пользовательских программ значение селектора сегмента лучше всего считать номером сегмента в дескрипторной таблице. Таким образом, физическое расположение сегмента не имеет фиксированного соответствия со значением селектора, которое программа загружает в сегментный регистр. Именно в этом и состоит предназначение MMU (Memory Management Unit) – устройства управления памятью. Эта независимость позволяет ОС размещать нужные сегменты в любой области физической памяти.

               6.  Страничная организация памяти в защищенном

                               режиме работы МП семейства х86.

                       Назначение страничной организации памяти.

Сегментация памяти весьма эффективна при защите информации, в ней размещенной, от случайных либо несанкционированных воздействий. Кроме того, она позволяет расширить виртуальное адресное пространство до 64 терабайт. Однако, она неудобна с точки зрения эффективного использования физической памяти. Это неудобство определяется в основном двумя причинами.

1.  Сегменты обычно определяются для размещения отдельных задач, т.е. законченных и соответствующим образом оформленных программ и данных (хотя, конечно, некоторые задачи могут быть размещены и в нескольких сегментах). Поэтому сегменты обычно бывают сравнительно большими. При этом возникает неудобство при организации многозадачной работе процессоров, когда в оперативной (физической) памяти необходимо держать одновременно много сегментов. С другой стороны, если  задачи располагать в нескольких небольших сегментах, облегчая размещение в физической памяти, сегменты многих задач одновременно, то учащаются межсегментные переходы, что сразу же сказывается на производительности работы процессора (из-за частой перезагрузки теневых регистров).

2. Сегменты, как правило, имеют различные размеры в зависимости от типов задач и данных в них размещенных. Поэтому, при свопинге между ними в оперативной памяти образуются большие промежутки («дыры»), которые существенно уменьшают объем эффективно используемой памяти. Конечно, эти «дыры» можно ликвидировать специальными программами обслуживания («сборки мусора»), но это сравнительно длительный процесс, который прерывает работу процессора. Как следует из вышеизложенного, эти недостатки наиболее ярко проявляются при организации виртуальной памяти, а без нее немыслима работа современного компьютера.

Логичным выводом из этого является такая организация памяти при формировании «виртуальной памяти», чтобы обмен информацией между оперативной физической и внешней памятью на жестких дисках при свопинге происходил сравнительно небольшими (оптимальными) блоками, которые имели бы одинаковый размер. Такие блоки получили название страниц, а соответствующая организация памяти – страничной организацией памяти.

Страничная организация памяти является дополнительной адресной структурой и может реализовываться только в защищенном режиме работы процессора. Для этого в регистре управления CR0 бит 31 должен быть установлен в 1 (бит PG = 1). При этом в защищенном режиме работы, сегментная организация памяти остается в любом случае. Однако если прикладной программист имеет доступ к части сегментных регистров, которые управляют сегментной адресацией, то страничная адресация от него скрыта. Операции со страницами разрешены только операционной системе. Объем страницы, как уже упоминалось, фиксирован и обычно составляет 4Кбайта – 4096 байт. Однако, в процессорах Pentium+, поддерживаются также страницы размером 2 и 4Мбайта. Таким образом, при включении страничной организации, устройство управления памятью процессора (MMU – Memory Management Unit), в защищенном режиме работы, наряду с обязательной сегментацией, реализует еще один уровень косвенности в формировании физического адреса памяти. При этом, исходным адресным объектом для формирования физического адреса с помощью страничной организации является  32 разрядный линейный адрес, получаемый как результат обращения к дескрипторам сегментов. При этом заметим, что в простых системах страничная организация не применяется и  устройство, ее реализующее выключено. Следует также  отметить, что в случае использования страничной организации памяти, при формировании физического адреса, бит присутствия P в сегментных дескрипторах игнорируется.  В этом случае свопинг организуется не на уровне сегментов, а на уровне страниц и, следовательно, бит P анализируется уже в элементах каталога или таблицы страниц.

Кроме того, следует отметить, что сегментация памяти характерна только для процессоров семейства Х86 и совместимых с ними. А страничная адресация  используется, в настоящее время, при создании практически всех достаточно мощных процессоров.

      Общая схема формирования физического адреса в МП

Общая схема формирования физического адреса при включенной страничной организации приведена на рисунке III.15.

Здесь: Base (содержимое базового регистра);

           Index (содержимое индексного регистра);                               

           Disp (Displacement –смещение в команде);

           Scale (масштаб, множитель индексного регистра).