[ЭКЗАМЕН 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. Регистры. Режимы работы.

Предыдущий вопрос: Защищённый режим работы процессора. Многозадачность.