Модели памяти

Содержание

Слайд 2

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Outline

Дескрипторные таблицы:
● основные понятия;
● глобальная таблица дескрипторов;
● локальная таблица дескрипторов;
● таблица дескрипторов прерываний.

Основные положения защищенного режима:
● дескриптор;
● формирование линейного адреса в защищенном режиме;
● особенности формирования физического адреса в защищенном режиме;

Резюме к лекции и список используемой литературы

Организация памяти:
● Сплошная (плоская) модель;
● Сегментированная модель;
● Модель режима реального адреса.

Слайд 3

Модели памяти Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011

Модели памяти

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov

Alexander Yurievich

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

сплошная ("плоская")
модель памяти

сегментированная
модель памяти

модель режима
реального адреса

При использовании сплошной модели
(Flat Model) памяти программа оперирует единым непрерывным адресным пространством - линейным адресным пространством.
В нем содержатся и код, и стек, и данные программы, адресуемые смещением в пределах от 0 до 232-1.
Такое 32-битное смещение называется линейным адресом.

● Идеология плоской модели:
вся память представляет собой единое линейной последовательностью байт

Важно отметить!
Что плоская модель – это классическая реализация фон-неймановской архитектуры – здесь хранятся и данные и коды.

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

Для 16-битных процессоров плоская модель памяти позволяет адресовать 64 кБ оперативной памяти; для 32-битных процессоров 4 ГБ, для 64-битных — 16 экзабайт.

Слайд 4

Сплошная ("плоская") модель памяти Physics Faculty, Electronic Computing Devices & Systems,

Сплошная ("плоская") модель памяти

Physics Faculty, Electronic Computing Devices & Systems, 7th

semester,2011 Dr.Mokhovikov Alexander Yurievich

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

www.duartes.org

Важно отметить!
Что плоская модель не может быть использована в реальном режиме – в ней не вся адресуемая память будет доступной.

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

Управление памятью все ещё (на 2011 год) реализуется на основе плоской модели, в целях содействия функциональности операционной системы, защиты ресурсов, многозадачности или увеличения объёма памяти за пределы ограничений, налагаемых физическим адресным пространством процессора.

Слайд 5

Сегментированная модель памяти Physics Faculty, Electronic Computing Devices & Systems, 7th

Сегментированная модель памяти

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011

Dr.Mokhovikov Alexander Yurievich

При использовании сегментированной модели (Segmented Model) для программы память представляется группой независимых адресных блоков, называемых сегментами.

Процессор при помощи блока сегментации отображает логический адрес в линейное адресное пространство.

Для адресации байта памяти программа должна
использовать логический адрес, состоящий из селектора сегмента и смещения.
Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретный байт в адресном пространстве выбранного сегмента.
Каждая задача в защищенном режиме может иметь до 16383 сегментов, размером до 4 Гбайт каждый, таким образом, общий объем памяти, адресуемой программой составляет 64 Тбайт.

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

● Каждый сегмент имеет несколько связанных с ним атрибутов: размер, расположение, тип (стек, программа или данные) и характеристики защиты.

Слайд 6

Модель режима реального адреса Physics Faculty, Electronic Computing Devices & Systems,

Модель режима реального адреса

Physics Faculty, Electronic Computing Devices & Systems, 7th

semester,2011 Dr.Mokhovikov Alexander Yurievich

Архитектура может использовать модель режима реального адреса (Real-address Mode Model).

Эта модель является специфическим случаем сегментированной модели.
Линейное адресное пространство образуется из массива сегментов длиной по 64 Кбайт.
Размер такого линейного адресного пространства - 1 Мбайт.

В этой модели селектор сегмента непосредственно используется для вычисления базового адреса в линейном адресном пространстве путем сдвига значения селектора на 4 бита влево (умножение на 16).
Это значит, все сегменты начинаются с адреса, кратного 16.

● 16-байтный блок памяти называют параграфом, поэтому говорят, что сегмент выравнивается по границе параграфа.

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

Слайд 7

Physics Faculty, Electronic Devices & Systems, 7th semester,2011 Dr. Mokhovikov Поскольку

Physics Faculty, Electronic Devices & Systems, 7th semester,2011 Dr. Mokhovikov

Поскольку свернутым

в кольцо является всё пространство памяти: по мере увеличения исполнительного адреса и адреса сегмента физический адрес растет,
но только до значения FFFFFh, после чего обнуляется и начинает расти с начала.

Модель памяти в реальном режиме

Слайд 8

Physics Faculty, Electronic Devices & Systems, 7th semester,2011 Dr. Mokhovikov Ох

Physics Faculty, Electronic Devices & Systems, 7th semester,2011 Dr. Mokhovikov

Ох уж

это переполнение!!

Модель памяти в реальном режиме

Слайд 9

Основные положения защищенного режима Physics Faculty, Electronic Computing Devices & Systems,

Основные положения защищенного режима

Physics Faculty, Electronic Computing Devices & Systems, 7th

semester,2011 Dr.Mokhovikov Alexander Yurievich

Назначение

Что защищаем?

На чем основана защита?

Как работать в PM?

Слайд 10

Дескрипторы Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich

Дескрипторы

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich
Слайд 11

Формирование линейного адреса в защищенном режиме Physics Faculty, Electronic Computing Devices

Формирование линейного адреса в защищенном режиме

Physics Faculty, Electronic Computing Devices &

Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich

● Процессор может обраться только к тем сегментам памяти, для которых имеются дескрипторы в таблицах.

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

● Индекс совместно с индикатором таблицы TI позволяет выбрать дескриптор из локальной(TI =1) или глобальной(TI=0) таблицы дескрипторов.

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

● Попытка обращения к памяти по такому сегментному регистру вызовет исключение. Исключение возникает и при попытке загрузки нулевого селектора в регистре CS и SS.

Поле RPL указывает требуемый уровень привилегий.

Слайд 12

Особенности формирования физического адреса в Protected Mode Physics Faculty, Electronic Computing

Особенности формирования физического адреса в Protected Mode

Physics Faculty, Electronic Computing Devices

& Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich

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

● Сегмент, в защищенном режиме, это не просто область памяти, ограниченная лишь максимально допустимым значением внутрисегментного смещения, как это было в реальном режиме, - это «объект», который имеет строго определенный размер.
Минимальный размер сегмента может быть равен 1 байту, а максимальный – 1 Мб или 4 Гб (это зависит от, того, умножается размер сегмента на 4 килобайта или нет).
Но! в отличие от режима реального адреса, где адрес сегмента находился непосредственно в одном из сегментных регистров – алгоритм формирования физического адреса в защищенном режиме абсолютно иной.

e-zine.excode.ru/online/3/syscall.html

Слайд 13

Особенности формирования физического адреса в Protected Mode Physics Faculty, Electronic Computing

Особенности формирования физического адреса в Protected Mode

Physics Faculty, Electronic Computing Devices

& Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich

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

www.duartes.org

Слайд 14

Дескрипторные таблицы Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011

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

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov

Alexander Yurievich

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

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

глобальная таблица дескрипторов

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

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

Каждый дескриптор (элемент) таблицы описывает свой сегмент памяти.
Сегменты памяти не пересекаются!

Адрес начала каждой из таблиц (указатель на начало таблицы) хранится в специальных (программно доступных) регистрах процессора.
Указатели на таблицу глобальных дескрипторов (GDTR) и таблицу прерываний (IDTR) имеют размер 48 байт, 32 из которых указывают линейный адрес начала таблицы, а остальные 16 – ее размер (предел).

Дескрипторные таблицы — служебные структуры данных, содержащие дескрипторы сегментов

Слайд 15

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

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

У регистра-указателя локальной дескрипторной таблицы (LDTR) программно доступно только 16-битное поле селектора (индекса для GDT), по которому из GDT автоматически загружаются программно недоступные и невидимые поля базового адреса и размера таблицы.
Регистр LDTR указывает на дескриптор в GDT, описывающий локальную дескрипторную таблицу для текущей задачи.

Команды загрузки регистров-указателей таблиц (GDTR, LDTR, IDTR) являются привилегированными (выполняются только на нулевом кольце привилегий

Слайд 16

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Глобальная таблица дескрипторов

http://sasm.narod.ru/docs/pm/pm_in/chap_7.htm

Некоторые важные понятия о GTD (Global Descriptor Table) :
● Глобальная дескрипторная таблица одна. Она общая для всех задач.
● Прежде, чем процессор перейдёт в PM, должна быть определена GDT, т.к. все сегменты и прочие системные объекты должны быть описаны в дескрипторной таблице;
● Процессору всё равно, где именно вы расположили эту таблицу, но, в любом случае, она будет находится в первом мегабайте адресного пространства, потому что только из режима реальных адресов можно перевести процессор в защищённый режим;
● Таблица GDT будет выровнена на границу 8 байт, так как дескрипторы, из которых она состоит, имеют 8-байтный размер. Выравнивание позволит процессору максимально быстро обращаться к дескрипторам, что, естественно, увеличивает производительность.

Слайд 17

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Глобальная таблица дескрипторов

Некоторые важные понятия о GTD (Global Descriptor Table) :
● Число дескрипторов, определённых в GDT, может быть любым, от 0 до 8192.
Размер таблицы не может превышать 8192 дескрипторов, поскольку один дескриптор занимает 8 байт, а лимит в регистре GDTR - двухбайтный и хранит размер таблицы минус один (максимальное значение лимита - 65535), а 8192 x 8 = 65536.
● Нулевой дескриптор, т.е. определённый в самом начале GDT, процессор не использует, обращение к такому дескриптору могло бы быть, когда поле Index селектора равно 0;
● Нулевой дескриптор можно использовать как шаблон, на основе которого программа может создавать новые дескрипторы.

Если всё же в программе встречается
обращение к нулевому дескриптору,
то процессор генерирует
исключение и не позволит доступ
к такому дескриптору.

но на практике их удобнее
создавать иными способами

Слайд 18

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Глобальная таблица дескрипторов

GDT используется процессором всё время, пока он находится в защищённом режиме. Параметры GDT хранятся в специальном 48-разрядном регистре GDTR:

Формат регистра GDTR следующий:
биты:
[0..15]: 16-разрядный предел GDT
[15..47]: 32-разрядный адрес начала GDT

Адрес начала GDT - это тот адрес, по которому вы разместили GDT.
Предел таблицы GDT - это максимальное смещение относительно её начала.

Слайд 19

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Пример создания GDT

Например, вы создаёте GDT, состоящую из 3-х дескрипторов - для сегментов кода, стека и данных.

Общее число дескрипторов будет равно четырём, потому что первым по счёту будет идти нулевой дескриптор, а за ним уже остальные три:

Размер GDT в данном случае будет равен 32 байтам, =>, предельное смещение в таблице будет равно 31 - это и есть предел GDT.

Алгоритм:
1. Вычисляем 32-разрядный адрес GDT
2. Вычисляем размер GDT
3. Сохраняем параметры GDT в 48-разрядную переменную
4. Загружаем значение в регистр GDTR

● Для загрузки значения в регистр GDTR используется команда LGDT.
● Операндом этой команды является 48-разрядное значение адреса в памяти,
где размещается адрес и предел GDT.
● Cохранить содержимое GDTR командой SGDT, указав в операнде адрес
48-разрядной переменной в памяти.

Слайд 20

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Пример создания GDT

Код:
; 1. Вычисляем 32-разрядный адрес GDT
xor eax,eax ; EAX = 0; адрес будем вычислять в регистре EAX.
mov ax,ds ; Подразумевается, что GDT находится в текущем сегменте данных.
shl eax,4 ; EAX = адрес начала сегмента DS
xor edx,edx ; EDX = 0.
lea dx,GDT ; EDX = DX = смещение начала GDT относительно DS.
add eax,edx ; EAX = полный физический адрес GDT в памяти.
; 2. Вычисляем размер GDT
mov cx,4 ; CX = число дескрипторов +
; + нулевой дескриптор.
shl cx,3 ; CX = CX * 8 - столько байт будут
; занимать в GDT эти дескрипторы.
dec cx ; Предел меньше размера на 1
; 3. Сохраняем параметры GDT в 48-разрядную переменную
mov GDT_address,eax
mov GDT_limit,cx
; 4. Загружаем значение в регистр GDTR
lgdt GDT_params
;--------------------------------------------------------------------------
GDT_params label fword
GDT_limit dw ?
GDT_address dd ?
GDT:
dd ? ; 0-й дескриптор
dd ?
dd ? ; 1-й дескриптор (код)
dd ?
dd ? ; 2-й дескриптор (стек)
dd ?
dd ? ; 3-й дескриптор (данные)
dd ?

http://sasm.narod.ru/docs/pm/pm_in/chap_7.htm

Слайд 21

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

Особенности работы с GTD

Размер GDT желательно не менять в процессе
выполнения программ в защищённом режиме.
Если ваша программа будет динамически
создавать новые дескрипторы, то размер GDT лучше всего заранее задать достаточно большим, например, 64 Кб (максимальный размер).

● Однако, следует учитывать, что при обращении
процессора к несуществующим дескрипторам, его поведение непредсказуемо, хотя оно, скорее всего, закончится зависанием.

Слайд 22

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander

Yurievich

В следующей серии

…и многое другое…

Дескрипторы
(продолжение)

Дескрипторы адресных пространств:
Сегмент кода
Сегмент данных
Сегмент состояния задачи
2. Дескрипторы системных объектов:
Шлюз вызова*
Шлюз задачи
Шлюз прерывания
Шлюз ловушки
Таблицы локальных дескрипторов

Слайд 23

Физический факультет, ЭВУ и системы, 7 семестр,2011 Доцент Моховиков А..Ю. Physics

Физический факультет, ЭВУ и системы, 7 семестр,2011 Доцент Моховиков А..Ю. Physics

Faculty, Electronic Devices & Systems, 7th semester,2010 Dr. Mokhovikov

http://cracklab.ru/faq/Int3
http://sasm.narod.ru/apps/eflags/app_b.htm
http://club155.ru/x86cmd/POPF
http://kit-e.ru/articles/cpu/2006_9_148.php
http://de.ifmo.ru/--books/electron/cpu-cod.htm
http://www.viva64.com/ru/k/0035/
http://www.kailib.ru/arhitevm?start=23
http://www.zcub.ru/blog/org_comp_system/registry-processora.php

Основные используемые Интернет-ресурсы: