Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСИ.docx
Скачиваний:
14
Добавлен:
29.10.2018
Размер:
434.23 Кб
Скачать

16. Особенности эффективного использования таблицы страниц: многоуровневые таблицы страниц, ассоциативная память, инвертированная таблица страниц, хеширование

Особенности эффективного использования таблицы страниц

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

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

В современных системах адресное пространство имеет высокую размерность, и использование одноуровневых таблиц страниц будет слишком накладно, так как при размере страницы в 4 кб, в 32-битных системах придется создать примерно 1 млн. страниц, таким образом в таблице было бы необходимо хранить ~1млн записей по несколько байт каждая, стоит отметить, что каждый процесс нуждается в своей таблице страниц (а в случае сегментно-страничной схемы, желательно иметь по одной таблице на каждый сегмент).

Многоуровневые таблицы страниц

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

Локальность – способность в течение ограниченного отрезка времени работать с небольшим набором адресов памяти.

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

Двухуровневая таблица страниц:

Получается, что таблица из 220 строк разбивается на 210 таблиц второго уровня по 210 строк, все эти таблицы объединены в общую структуру при помощи таблицы из 210 строк.

При помощи всего лишь одной страницы второго уровня, можно адресовать до 4 Мбайт (4кб * 1024 (=210)) оперативной памяти.

Таким образом, для размещения процесса с большим объемом занимаемой памяти достаточно иметь в памяти одну таблицу первого уровня и несколько таблиц второго уровня.

Ассоциативная память

Суть: Так как обращения в течении некоторого промежутка времени происходят к небольшому количеству страниц (в соотв. с свойством локальности), то для ускорения, используют устройство – внешний буфер поиска трансляции. (TLB – translate lookaside buffer).

Одна запись в ассоциативной памяти содержит информацию об одной виртуальной странице: ее атрибутах и кадре, в котором она находится.

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

Процент попаданий в кэш (англ. hit ratio) – число удачных поисков номера страницы в ассоциативной памяти по отношению к общему числу поисков. Основной параметр, определяющий эффективность использования ассоциативной памяти

Инвертированная таблица страниц

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

В этой таблице содержится по одной записи на каждый страничный кадр физ. памяти. Достаточно одной таблицы для всех процессов.

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

Хеш и хеш-функция

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

Хеш-функции – функция, выполняющая одностороннее преобразование (хеширование) входных данных.