Процессоры Intel в защищенном режиме
Недостатки реального режима Невозможно адресовать пространство памяти свыше 1-го Мб Невозможно работать с массивами, длиной более 64 Кб, т.к. используются 16 разрядные смещения Невозможно запустить более одной программы (однозадачный режим) Невозможно реализовать защиту адресного пространства от постороннего вмешательства
Возможности защищенного режима Возможность адресации участков памяти размером 4 Гб Использование массивов размером 4Гб Использование дополнительных регистров Использование новых способов организации памяти Реализация многозадачности Реализация защиты адресного пространства
Регистры процессора в P-режиме
Регистры процессора Intel в Р-режиме Системные флагиДоступна старшая часть регистра EFLAGS Регистры управления памятью GDTR, IDTR, LDTR, TR Регистры управления процессором CR0 – CR4 Отладочные регистрыDR0 – DR7 Машинно-специфические регистры Более ста регистров, назначение которых отличается в различных марках и даже версиях процессоров Intel
Регистры управления памятью GDTR (Global Descriptor Table Register) –Длина 6 байт –32 бита – линейный адрес таблицы глобальных дескрипторов (GDT) –16 бит – размер GDT –Используется для определения дескриптора сегмента в GDT совместно с сегментными регистрами
Регистры управления памятью IDTR (Interruption Descriptor Table Register) –Длина 6 байт –32 бита – линейный адрес таблицы глобальных дескрипторов прерываний (IDT) –16 бит – размер IDT –Когда происходит прерывание, процессор передает управление на обработчик, описываемый дескриптором из IDT, с указанным номером
Регистры управления памятью LDTR (Local Descriptor Table Register) –Длина 6 байт –32 бита – линейный адрес таблицы локальных дескрипторов (LDT) –16 бит – размер LDT –Используется для определения дескриптора сегмента в LDT совместно с сегментными регистрами
Регистры управления памятью TR (Task Register) –Длина 10 байт –16-битный селектор сегмента состояния задачи (TSS) из GDT –8 байт – дескриптор сегмента состояния задачи (TSS) из GDT –TSS хранит всю информацию о задаче, если ее выполнение прервано. При выполнении задачи информация о TSS загружается в регистр TR.
Регистры управления процессором CR0Флаги управления системой CR1Зарезервирован CR2Регистр адреса ошибки страницы CR3 (PDBR) Регистр основной таблицы страниц CR4Регистр управления новыми возможностями процессоров
Организация памяти в P-режиме
Способы организации памяти Сегментный Страничный
Сегментная организация памяти R-режим Память разбивается на смежные участи памяти – сегменты Адреса начал сегментов хранятся в сегментных регистрах Для получения линейного адреса к адресу начала сегмента добавляется 16-ти битное смещение Р-режим Память разбивается на смежные участки памяти – сегменты Адреса начал сегментов и другая информация хранятся в специальных таблицах дескрипторов сегментов (GDT и LDT) В сегментных регистрах хранятся селекторы дескрипторов сегментов Получение линейного адреса по более сложной схеме
Селектор дескриптора сегмента Хранится в сегментном регистре Используется для получения дескриптора сегмента в одной из таблиц дескрипторов сегментов – GDT или LDT
Селектор дескриптора сегмента 0-1 – уровень привилегии запроса 2 – индикатор таблицы дескриптора –0 – GDT –1 – LDT 3-15 – номер дескриптора в таблице дескрипторов сегментов
Дескриптор сегмента Содержит информацию об адресе начала сегмента (используется при формировании линейного адреса при сегментом способе организации памяти в P-режиме) Содержит дополнительную информацию о сегменте (разрядность, размер, уровень защиты…) Размер дескриптора 8 байт
Структура дескриптора слово 3 (старшее): –биты 15 – 8: биты 31 – 24 базы –бит 7: бит гранулярности (0 лимит в байтах, 1 лимит в 4- килобайтных единицах) –бит 6: бит разрядности (0/1 16-битный/32-битный сегмент) –бит 5: 0 –бит 4: зарезервировано для операционной системы –биты 3 – 0: биты 19 – 16 лимита слово 2: –бит 15: бит присутствия сегмента –биты 14 – 13: уровень привилегий дескриптора (DPL) –бит 12: тип дескриптора (0 системный, 1 обычный) –биты 11 – 8: тип сегмента –биты 7 – 0: биты 23 – 16 базы слово 1: биты 15 – 0 базы слово 0 (младшее): биты 15 – 0 лимита
Формирование линейного адреса при сегментной организации памяти GDTR Сегментный регистр GDT + + Смещение ЛА
Особенности сегментной организации памяти при многозадачности Каждая задача может содержать собственную таблицу локальных дескрипторов сегментов (LDT) В состав TSS входит значение LDTR для данной задачи Определение линейного адреса строится на выборе дескриптора из LDT задачи
Особенности сегментной организации памяти при многозадачности
Страничная организация памяти память разбивается на смежные участки фиксированного размера (4Kб, для Pentium Pro и выше – возможно по 4 Мб) процессор физически обращается не по линейному адресу, а по тому физическому адресу, с которого начинается данная страница описание каждой страницы из линейного адресного пространства, включающее в себя ее физический адрес и дополнительные атрибуты, хранится в одной из специальных системных таблиц страничная адресация абсолютно невидима для программы
Каталог и таблицы страниц Каталог страниц имеет размер 4096 байт (ровно одна страница) и содержит байтных указателя на таблицы страниц Каждая таблица страниц имеет размер 4096 байт и содержит указатели до килобайтных страниц
Структура адреса при страничной организации памяти – номер таблицы страниц в каталоге – номер страницы в таблице страниц 0-11 – смещение от физического адреса начала страницы в памяти
Элементы каталога и таблицы страниц (4 байта) биты 31 – 12: биты 31 – 12 физического адреса (таблицы страниц или самой страницы) биты 11 – 9: доступны для использования операционной системой бит 8: G «глобальная страница» страница не удаляется из буфера TLB при переключении задач или перезагрузке регистра CR3 (только на Pentium Pro, если установлен бит PGE регистра CR4) бит 7: PS размер страницы. 1 для страницы размером 2 или 4 мегабайта, иначе 0 бит 6: D «грязная страница» устанавливается в 1 при записи в страницу; всегда равен нулю для элементов каталога страниц бит 5: А бит доступа (устанавливается в 1 при любом обращении к таблице страниц или отдельной странице) бит 4: PCD бит запрещения кэширования бит 3: PWT бит разрешения сквозной записи бит 2: U страница/таблица доступна для программ с CPL = 3 бит 1: W страница/таблица доступна для записи бит 0: Р страница/таблица присутствует. Если этот бит 0, остальные биты элемента система может использовать по своему усмотрению, например, чтобы хранить информацию о том, где физически находится отсутствующая страница
Формирование линейного адреса при страничной организации памяти CR3 Каталог таблиц страниц Таблица страниц Смещение K N