Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Линейный адрес

Читайте также:
  1. GOTO — Переход по адресу
  2. III. Адресация в Интернете.
  3. Абсолютные и относительные адреса ячеек
  4. Автоматизация процесса назначения IP-адресов узлам сети - протокол DHCP
  5. Адрес переменной
  6. Адреса бомбоубежищ в Луганске
  7. Адреса в Интернете
  Таблицы страниц Физический адрес

31 0 31 0

 

Иначе:

селектор   смещение

15 0 31 0


таблица дескрипторов

базовый

+

адрес
+Дескриптор сегмента

 

 

поле Directory поле Table поле Offset

Линейный адрес Индекс каталога Индекс страницы Смещение

31 22 21 12 11 0

 

Мы получили полный формат линейного адреса.

Рассмотрим, как осуществляется механизм страничной адресации памяти.

· Страницей называется связный участок линейного или физического адресного пространства объемом 4 Кбайта.

Программа работает в линейном адресном пространстве, не подозревая о существовании страничного преобразования. Механизм страничной трансляции отображает логические страницы на физические в соответствии с информацией, содержащейся в страничных таблицах. В итоге отдельные 4-х Кбайтовые участки программы могут реально находиться в любых несвязных друг с другом 4-х Кбайтовых областях физической памяти. Порядок размещения физических страниц в памяти может не соответствовать (и обычно не соответствует) порядку следования логических страниц. Логические страницы могут прерываться, фактически существуя в одной и той же области физической памяти.

В страничных преобразованиях принимают участие аппаратные средства CPU и находящиеся в памяти таблицы преобразования. Это сложный механизм.


Линейное адресное пр-во Физическое адресное пр-во

 

4 Кбайта   4 Кбайта
4 Кбайта   4 Кбайта
4 Кбайта   4 Кбайта
4 Кбайта   4 Кбайта
4 Кбайта   4 Кбайта
4 Кбайта   4 Кбайта

 

· Каталог таблиц страниц – резидентная в памяти, содержащая 1024 4-х байтовых поля (32 разряда) с физическими адресами таблиц страниц.

· Каждая таблица страниц содержит тоже 1024 4-х байтовых поля с адресами физических страниц памяти.

Т.к. максимально возможное число таблиц страниц – 1024, и в каждой таблице содержатся данные по 1024 страницам, размер страницы равен 4 Кбайтам, следовательно, они перекрывают все адресное пространство в 4 Гбайта. (1024 х 1024 х 4 х 1024 = 4 Гбайта). Не используемые поля в каталоге таблиц страниц помечаются как отсутствующие, с целью экономии памяти для таких полей система не выделяет страничные таблицы. Базовый адрес каталога таблиц страниц хранится в регистре CR3 (управляющий регистр CPU). Каталог – это тоже страница, адрес ее выровнен в памяти на границу в 4 Кбайта (212), следовательно, в 32-разрядном регистре CR3 под адрес каталога отведены старшие 20 бит, а младшие зарезервированы для нужд системы.

При включенной страничной трансляции старшие 10 бит линейного адреса (22..31) образуют номер поля в каталоге таблиц страниц. Строка с данным номером содержит число, являющееся адресом RAM, по которому находится соответствующая таблица страниц. Чтобы попасть на нужное поле в каталоге таблиц страниц необходимо 10-битный индекс каталога сдвинуть влево на 2 бита (т.е. умножить на 4) и прибавить базовый адрес каталога из регистра CR3. Получим 32-разрядное число, дающее нам адрес поля из каталога в RAM (2 младших бита этого адреса содержат нули, т.к. каждое поле занимает 4 байта, а мы адресуемся к младшему байту поля – адрес выровнен на границу в 4 байта).

Следующие 10 бит линейного адреса (12..21) содержат номер поля в выбранной таблице страниц. Сдвигаем это число на два бита влево (т.е. умножаем на 4) и прибавляем к выбранному из каталога физическому адресу таблицы страниц. Из этого адреса значащими являются старшие 20 бит, т.к. страница выровнена в памяти на границу в 4 Кбайт. Получаем физический адрес поля, содержащего физический адрес страницы в памяти. Страница также представляет собой область адресного пространства памяти объемом в 4 Кбайта, поэтому из этого адреса значащими, опять же, являются старшие 20 бит. Они уже являются старшими 20-ю битами физического адреса ячейки в памяти.

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

 

 


Линейный адрес Физический адрес

31 22 21 12 11 0 31 12 11 0

Индекс каталога Индекс страницы Смещение   Страничный кадр Смещение

таблица страниц

адрес страницы
адрес страницы
адрес страницы

таблица страниц
Адрес таблицы страниц

Адрес таблицы страниц
Адрес таблицы страниц
Адрес таблицы страниц
адрес страницы
адрес страницы
адрес страницы

Каталог таблиц страниц

1024 4х-байтовых полей


базовый адрес каталога

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

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

Надо учитывать, что GDT существует в единственном экземпляре, а LDT может быть много (для каждой задачи своя). Когда ОС переключает задачи, GDT остается неизменной, а текущая LDT заменяется на LDT новой задачи. В защищенном режиме программа не может выйти за пределы объявленных ею сегментов.

В реальном режиме любой сегмент представляет собой область памяти в 64 Кбайта, кратную 16. Сегмент защищенного режима может начинаться с любого адреса памяти. Он может иметь любую длину.

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


Дата добавления: 2015-07-08; просмотров: 124 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Основы защищенного режима работы процессора| Одномандатный избирательный округ №3

mybiblioteka.su - 2015-2024 год. (0.008 сек.)