[ЭКЗАМЕН 33] Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование. - mRrvz/bmstu-asm GitHub Wiki
Модели памяти
- Плоская - код и данные используют одно и то же пространство
- Сегментная - сложение сегмента и смещения (используется в реальном режиме; знакома нам)
- Страничная - виртуальные адреса отображаются на физические постранично
- виртуальная память - метод управления памятью компьютера, позволяющий выполнять программы, требующие больше оперативной памяти, чем имеется в компьютере, путём автоматического перемещения частей программы между основной памятью и вторичным хранилищем (файл, или раздел подкачки);
- основной режим для большинства современных ОС;
- в x86 минимальный размер страницы - 4096 байт;
- основывается на таблице страниц - структуре данных, используемой системой виртуальной памяти в операционной системе компьютера для хранения сопоставления между виртуальным адресом и физическим адресом. Виртуальные адреса используются выполняющимся процессом (программа имеет информацию только о виртуальных адресах), в то время как физические адреса используются аппаратным обеспечением. Таблица страниц является ключевым компонентом преобразования виртуальных адресов, который необходим для доступа к данным в памяти.
Преимущества страничной модели:
- Программы полностью изолированы друг от друга
- В память можно загрузить больше программ, чем памяти доступно (долго не использующиеся данные загружаются на диск и освобождают место)
Управление памятью в x86
Сегментные регистры меняют назначение: они внешне выглядят 2 байтными, но на деле они 8байтные, просто 6 байт - теневые регистры, используются процессором для кеширования дексрипторов страниц
- В сегментных регистрах - селекторы:
- 13-разрядный номер дескриптора;
- какую таблицу использовать - глобальную или локальную (таблица текущей программы/задачи);
- уровень привилегий запроса 0-3
- 0 - система
- 3 - прикладная программа
- 1-2 - где-то не используется, где-то используется, например, для драйверов
- По селектору определяется запись в одной из таблиц дескрипторов сегментов;
- При включённом страничном режиме - по таблице страниц определяется физический адрес страницы либо выявляется, что она выгружена из памяти, срабатывает исключение и операционная система подгружает затребованную страницу из "подкачки" (swap).
Регистры управления памятью
- GDTR: (Global Descriptor Table Register) 6-байтный регистр, содержит 32-битный линейный адрес начала таблицы глобальных дескрипторов (GDT) и 16-битный размер (лимит, уменьшенный на 1);
- IDTR: (Interrupt Descriptor Table Descriptor; то есть в защищенном режиме таблица векторов прерываний начинается с некоторого произвольного адреса) 6-байтный регистр, содержит 32-битный линейный адрес начала таблицы глобальных дескрипторов обработчиков прерываний (IDT) и 16-битный размер (лимит, уменьшенный на 1);
- LDTR: (Local Descriptor Table Register) 10-байтный регистр, содержит 16-битный селектор для GDT и весь 8-байтный дескриптор из GDT, описывающий текущую таблицу локальных дескрипторов;
- TR: (Task Register) 10-байтный регистр, содержит 16-битный селектор для GDT и весь 8-байтный дескриптор из GDT, описывающий TSS текущей задачи.
Страничное преобразование
- Линейный адрес:
- биты 31-22 - номер таблицы страниц в каталоге;
- биты 21-12 - номер страницы в выбранной таблице;
- биты 11-0 - смещение от физического адреса начала страницы в памяти.
- Каждое обращение к памяти требует двух дополнительных обращений (проблема, долго);
- Необходим специальный кеш страниц - TLB (решение проблемы выше; внутри процессора);
- Каталог таблиц/таблица страниц:
- биты 31-12 - биты 31-12 физического адреса таблицы страниц либо самой страницы;
- младшие биты - атрибуты управления страницей (если это таблица страниц, то элементы - страницы программы, если это каталог таблиц, то данные - таблицы страниц отдельных программ).
Следующий вопрос: Процессоры x86-64. Регистры. Режимы работы.
Предыдущий вопрос: Защищённый режим работы процессора. Многозадачность.