8. Ускорение страничного механизма. Проблемы защиты памяти.

Ускорение страничного механизма

Основные проблемы:

  1. Отображение должно быть быстрым (а операнды часто тоже из памяти);
  2. Если адресное пространство велико, то и таблица страниц будет большой.

Пути оптимизации:

  1. Размещение таблицы страниц в регистровом файле. Недостаток: непригодность для больших таблиц страниц.
  2. Размещение таблицы страниц в ОП. Недостаток: приводит к удвоению обращений к памяти (а значит замедлению).
  3. Использование свойства локальности обращений к страницам, по сути, кэширование наиболее часто используемых записей таблицы страниц. Для этого используется Translation Lookaside Buffer (TLB) – буфер быстрого преобразования адреса (буфер ассоциативной трансляции).

Устройство управления памятью (Memory Management Unit, MMU)

MMU – аппаратное устройство для организации виртуальной памяти. Осуществляет трансляцию адресов, защиту памяти.

Включает:

  1. Translation Lookaside Buffer (TLB) – кэш, в котором хранятся записи таблицы страниц.
  2. Конечный автомат, выполняющий обход таблицы страниц при поиске нужной страницы и вытеснение страниц из физической памяти.

Буфер быстрого преобразования адреса (Translation Lookaside Buffer, TLB)

TLB – это кэш на 8 – 64 записи таблицы страниц, который служит для ускорения процесса трансляции виртуального адреса в физический и проверки прав доступа. TLB работает благодаря свойству локальности: программа часто обращается к небольшому подмножеству страниц памяти, при этом другие страницы почти не используются

Функционирование TLB

Когда в MMU поступает виртуальный адрес, он сначала ищется в TLB:

  1. Если адрес присутствует и режим доступа не нарушен, то номер страничного кадра извлекается напрямую из TLB без обращений к таблице страниц. При нарушении режима доступа выбрасывается исключение защиты.

  2. Если адрес отсутствует (TLB miss), то осуществляется обычный поиск в таблице страниц (в 10 – 60 раз дольше, чем поиск в TLB). При этом из TLB удаляется одна из записей и на ее место записывается только что найденная. Вероятность промаха < 1 %. При обработке промаха TLB конвейер обычно не очищается, он может «замораживаться», а в некоторых реализациях конвейер продолжает обработку других инструкций одновременно с обработкой промаха. При реализации механизма TLB существует проблема обеспечения точных прерываний (т. к. этот кэш может изменяться безвозвратно).

Размах TLB

Защита памяти

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

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

Защита может организовываться различным образом:

• Защита отдельных ячеек памяти (используется редко).
• Защита областей памяти (страниц, сегментов).

Наиболее популярна постраничная защита.

Механизмы защиты:

  1. Предоставление каждому процессу собственного виртуального адресного пространства.
  2. Таблицы страниц для всех процессов поддерживает ОС (т. е. для их изменения требуется привилегированный доступ).
  3. Обращение к памяти за пределами адресного пространства процесса приводит к исключению.
  4. Разделение памяти между процессами осуществляется через разные виртуальные адресные пространства, но одинаковые физические страничные кадры.
  5. Попытка выполнения запрещенной операции (например, запись кода) над данной страницей приводит к исключению.
  6. Область памяти имеет некоторый уровень привилегий, при несоответствии которому происходит исключение.
  7. Один из способов защиты адресного пространства – это разрешение изменения значений сегментных регистров только для ОС.
  8. В некоторых архитектурах (MIPS) записи TLB имеют поле ASID, идентифицирующее процесс и позволяющее организовать защиту или разделение адресного пространства между всеми процессами. Изменение ASID осуществляется ОС.
  9. В других архитектурах (PA-RISC) сами страницы имеют поле ASID, что открывает возможности организации гибкой политики разделения памяти между группами процессов.

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

По принадлежности:

  1. С единственным владельцем – полный диапазон адресов доступен одному процессу в конкретный момент времени. Т. е. процесс может сгенерировать произвольный адрес. Необходимо обеспечивать механизмы защиты.
  2. С несколькими владельцами. Адресное пространство разделено между несколькими
    процессами. При этом разные процессы генерируют разные адреса. Механизм
    реализации: сегментация.

По организации защиты:

  1. С единственным идентификатором. Каждый процесс характеризуется ID-ом, каждая страница содержит ID процесса, к которому она принадлежит. Проблема разделяемой памяти решается путем отключения защиты для разделяемых страниц. Т. н. подход «всё или ничего».
  2. С несколькими идентификаторами. Каждый процесс (и/или страница) характеризуется несколькими идентификаторами. В результате одной страницей могут владеть процессы из небольшой группы.
  3. Без идентификаторов. Аппаратная защита не предусматривается.