Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос № 8 Сегментная и страничная адресация памяти

Поиск

Сегментация при работе с ПЭВМ в защищенном режиме реализует функции защиты памяти, а в сочетании со страничным механизмом, по существу, представляет собой средство организации виртуальной памяти. Средства управления памятью в ПЭВМ разделены на две части: механизм сегментации и страничный механизм.

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

Страничный механизм обеспечивает реализацию традиционной виртуальной системы памяти со страничными запросами, при котором исполнительное окружение программы отображается на физическую память. Страничный механизм также может использоваться и для изоляции различных задач.

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

  1. Сегментная адресация памяти

Особенностью архитектуры процессоров INTEL 8086, 80286, 80386, 80486 является использование механизма сегментации адресного пространства.

Прообраз процессора 8086 - оригинальный микропроцессор INTEL 8080 - имел линейное адресное пространство размером 64 килобайта. В этом микропроцессоре логический и физический адреса совпадали - все 16 адресных линий (адресных шин) использовались непосредственно для адресации памяти, а программы оперировали абсолютными шестнадцатиразрядными адресами.

Однако быстро растущие потребности программ в оперативной памяти привели к необходимости расширения адресного пространства. Следующий микропроцессор 8086 имел уже 20 адресных линий, что позволило непосредственно адресовать до мегабайта оперативной памяти. Архитектурное решение этого микропроцессора позволило легко адаптировать накопленное в большом количестве программное обеспечение для микропроцессора 8080.

Микропроцессор 8086 является шестнадцатиразрядным, поэтому использование двадцатиразрядного адреса в 16-разрядных командах неэффективно. Вместо указания в командах полного 20-разрядного адреса используется двухкомпонентная адресация, причем каждая компонента использует только 16 разрядов.

Эти компоненты называются сегментной компонентой адреса и компонентой смещения. Логический 20-разрядный адрес получается сложением двух компонент, причем сегментный адрес перед сложением умножается на 16 (сдвигается влево на 4 разряда). Сложение и сдвиг выполняется аппаратно, поэтому на формирование 20-разрядного адреса дополнительно время не затрачивается.

На рисунке показано, как в процессоре 8086 происходит формирование 20-разрядного адреса из адреса сегмента и смещения:

19 4 3 0

+----------------------------------+

¦ Сегментный адрес ¦ 0 0 0 0 ¦

+----------------------------------+

 

+

19 16 15 0

+----------------------------------+

¦ 0 0 0 0 ¦ Смещение ¦

+----------------------------------+

 

=

19 0

+----------------------------------+

¦ Полный 20-разрядный адрес ¦

+----------------------------------+

 

 

Адрес сегмента сдвигается влево на 4 бита с заполнением младших битов нулями, смещение расширяется до 20 битов и складывается со сдвинутым адресом сегмента. Например, если адрес сегмента равен 1234h, а смещение равно 1116h, то полный 20-разрядный адрес будет 12340h + 01116h = 13456h.

Таким образом, оперируя 16-разрядными адресами сегмента и смещением, процессор может адресовать мегабайт памяти. Для хранения сегментных адресов и смещений процессор имеет специальные регистры.

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

Сегменты могут перекрываться или не перекрываться.

Для хранения сегментных адресов процессор имеет 4 сегментных регистра: CS, DS, ES, SS. Эти регистры содержат соответственно адреса сегментов кода, данных, дополнительных данных и стека.

При адресации выполняющегося кода вместе с регистром CS используется регистр смещения IP. Пара регистров CS:IP всегда указывает на текущую выполняющуюся команду.

Адресация данных возможна относительно любого сегментного регистра. При этом смещение может указываться как непосредственно в команде, так и с помощью регистров. Программа должна сама следить за правильной загрузкой и использованием сегментных регистров.

 

  1. Страничная адресация памяти

 

Основное применение страничного преобразования адреса – организация виртуальной памяти. Виртуальная память позволяет использовать программам больший объем памяти, чем установленный на компьютере физический объем памяти. Остальная информация может быть сброшена на внешний носитель.

Управление страничным разбиением памяти обычно возлагается на специальную микросхему MMU (Memory Management Unit – устройство управления памятью). В микропроцессоре i80486 и выше это устройство встроено в процессор.

Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса (в данном случае линейного) в физический. В страничном преобразовании базовым объектом памяти является блок фиксированного размера, называемый страницей (page). Размер страницы - 4 Кбайт.

Страничное управление (Paging) является средством организации виртуальной памяти с подкачкой страниц по запросу (Demand-Paged Virtual Memory). В отличие от сегментации, которая организует программы и данные в модули различного размера, страничная организация оперирует с памятью, как с набором страниц одинакового размера. В момент обращения страница может присутствовать в физической оперативной памяти, а может быть выгруженной на внешнюю (дисковую) память. При обращении к выгруженной странице памяти процессор вырабатывает исключение #PF – отказ страницы, а программный обработчик исключения (часть ОС) получит необходимую информацию для свопинга«подкачки» отсутствующей страницы с диска.

СТРУКТУРА СТРАНИЦ.

При разрешенном страничном преобразовании физическая память компьютера разбивается на страницы. Иногда страницы называют страничными кадрами – page frame – размером 4 Кбайт. Поскольку часть страниц находится вне физической памяти, предусмотрен механизм замены страниц по требованию. Это позволяет программам использовать для своих нужд все линейное адресное пространство, не заботясь о том, занята ли физическая память другими процессами.

Границы сегментов и страниц могут не совпадать. Однако желательно, для повышения производительности системы, выравнивать границы сегментов на границы страничного кадра.

В отличие от сегмента, для страниц есть только два уровня привилегий:

- пользовательский (User) – системный программный уровень 3

- супервизора (Supervisor) – системный программный уровень 0,1,2

 

ФОРМИРОВАНИЕ АДРЕСА ПРИ СТРАНИЧНОМ ПРЕОБРАЗОВАНИИ.

Для уменьшения размера таблицы страниц предусмотрена двухуровневая схема преобразования адреса. Основой страничного преобразования служит регистр управления CR3, содержащий 20-ти битный физический базовый адрес каталога страниц текущей задачи. Предполагается, что каталог выровнен по границе страничного кадра, постоянно находится в памяти и не участвует в свопинге.

Механизм имеет три части:

- каталог страниц (Page Directory) – корневая страница, которая содержит 1024 32-х битных дескриптора, называемых элементами каталога страниц – PDE (Page Directory Entry). Каждый из них адресует подчиненную таблицу страниц.

- таблицы страниц (Page Table) – каждая из этих таблиц содержит 1024 32-х битных дескриптора, называемых элементами таблицы страниц – PTE (Page Directory Entry). Каждый PTE содержит адрес страничного кадра в физической памяти.

- Страницы (Page Frame).

Механизм включается установкой бита PG=1 в регистре CR0. Регистр CR2 хранит линейный адрес отказа (Page Fault Linear Address) – адрес памяти, по которому был обнаружен последний отказ страницы. Регистр CR3 хранит физический адрес каталога страниц (Page Directory Physical Base Address). Его младшие 12 бит всегда нулевые, т.к. каталог выравнивается по границе страницы.

 

Каталог страниц, размером 4 Кбайт содержит 1024 32-х битных строки PDE. Каждая строка PDE (см.рис.) содержит 20 старших бит адреса таблицы следующего уровня (младшие биты этого адреса всегда нулевые) и признаки (атрибуты) этой таблицы. Индексом поиска в каталоге страниц являются 10 старших бит линейного адреса (А22-А31)

 
 

Рисунок, где а – строка каталога - PDE, б – строка таблицы - PTE

Каждая таблица страниц также имеет 1024 строки PTE аналогичного формата (см.рис.), но эти строки содержат базовый физический адрес (Page Frame Address) и атрибуты самих страниц. Индексом поиска в таблице являются биты А12-А21 линейного адреса.

Физический адрес получается из адреса страницы, взятого из таблицы, и младших 12 бит линейного адреса.

Строки каталога и таблиц имеют следующие биты атрибутов:

P (Present) – бит присутствия. Разрешает использования таблицы страниц или кадра страницы при P=1. Если же P=0, то обращение к соответствующему разделу или странице запрещено и попытка их использования вызовет прерывание типа 14 (отсутствие доступа к странице). Отметим, что при P=0 остальные биты доступны операционной системе и могут использоваться для получения информации о местонахождении данной таблицы.

R/W – бит чтения/записи и U/S – бит пользователя/супервизора. Эти биты определяют права доступа к соответствующему разделу или странице для программ пользователя, имеющих минимальные уровни привилегий (системный программный уровень 3). Если осуществляется запрос с уровнем привилегий 3 (программы пользователя), то при значении U/S=0 ему запрещается доступ к соответствующему разделу или кадру страницы. Если U/S=1, то при значении R/W=0 разрешается только чтение раздела или страницы, а при R/W=1 – и чтение, и запись. При запросах с бОльшими привилегиями (системные программные уровни 0,1,2) допускается запись и чтение разделов и страниц при любых значения U/S, R/W.

PWT и PCD – эти биты используются для управления работой кэш-памяти при страничной адресации. (Эти биты отсутствуют в указателях, используемых микропроцессором 80386).

PWT (Page Write Through) – бит обратной записи -определяет метод обновления содержимого внешней кэш-памяти. При PWT=1 для текущей страницы обновление реализуется методом сквозной записи (как для внутренней кэш-памяти), при PWT=0 – методом обратной записи.

PCD (Page Cache Disable) – бит запрещения кэширования страницы - запрещает кэширование памяти для обслуживаемых страниц или таблиц.

A (Accessed) – бит доступа. Автоматически устанавливается микропроцессором в состояние А=1 при обращении к данному разделу или странице для записи или чтения информации.

D (Dirty) – бит модификации. Этот бит в указателе кадра страницы устанавливается в состояние D=1 при записи на данную страницу. Таким образом, помечается использованная, «грязная» страница, которую в случае замещения необходимо выгрузить на диск.

PS (Page Size) – задает размер страницы (только в POE (Power Over Ethernet) – технология, позволяющая передавать сетевую информацию и одновременно обеспечивать питание Ethernet устройств). При PS=0 имеет размер 4 Кбайт, PS=1 используется в расширениях PAE* и PSE*.

OS Reserved – доступно. Зарезервированы для операционной системы, которая может использовать их для размещения информации о времени последнего обращения к данному разделу или странице. Эта информация используется для определения разделов и страниц, подлежащих замене из внешней памяти.

Бит G (Global) -появившийся в Р6, определяет глобальность страницы. Он анализируется только в строке, указывающей на страницу физической памяти (в РТЕ для страниц в 4 Кбайт, в PDE — для страниц 2 Мбайт или 4 Мбайт). Этот бит, управляемый только программно, позволяет пометить страницы гло­бального использования (например, ядра ОС). При установленном бите PGE в регистре CR4 строки с указателями на глобальные таблицы не будут аннулиро­ваться в TLB при загрузке CR3 или переключении задач, что снижает издержки обслуживания виртуальной памяти.

* PAE - (Physical Address Extension – расширение физических адресов) – аппаратная технология, с помощью которой приложения Windows на 32-разрядных серверах с процессорами IA-32 могут адресовать физическую память свыше 4 Гбайт. Для создания дополнительной адресуемой памяти в PAE используется 36 разрядов. Работая с PAE, диспетчер памяти операционной системы использует трехуровневую схему преобразования адресов для обращения к памяти свыше 2 или 3 Гбайт, доступных на серверах без PAE. Как и любой механизм, с помощью которого операционная система может предоставить дополнительную память для приложений, PAE сокращает потребность в записи страниц из памяти в системный файл подкачки.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-06-06; просмотров: 2105; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.92.165 (0.01 с.)