Виртуализация памяти. Классы виртуальной памяти 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Виртуализация памяти. Классы виртуальной памяти



· Виртуализация оперативной памяти осуществляется совокупностью аппаратных

средств процессора и программных средств ОС и включает решение следующих задач:

· размещение данных (образов процессов или их частей) в запоминающих устрой-

ствах разного типа: частично – в оперативной памяти, частично – на диске;

· выбор образов процессов или их частей для перемещения из оперативной памя-

ти на диск и обратно;

· перемещение данных между памятью и диском;

· преобразование виртуальных адресов в физические.

Решение этих задач осуществляется автоматически, без участия программиста, и

не отображаются в логике работы приложений.

· Виртуализация памяти может быть осуществлена на основе двух подходов –

свопинга и механизма виртуальной памяти.

Свопинг (swapping). Между оперативной памятью и диском перемещаются образы

процессов Более простой в реализации способ, чем виртуальная память. Однако обла-

дает избыточностью при подкачке или выгрузке: часто для активизации процесса или

освобождения памяти не требуется перемещение всего образа процесса. Избыточность

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

Кроме того, невозможно загрузить для выполнения процесс, виртуальное адресное про-

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

Как основной механизм управления памятью в современных ОС почти не использует-

ся. В некоторых ОС, например, версиях Unix, основанных на коде SVR4, свопинг приме-

няется как дополнительный к виртуальной памяти, включающийся только при серьезных

перегрузках системы.

Виртуальная память (virtual memory). Между оперативной памятью и диском пе-

ремещаются части (сегменты, страницы – см. ниже) образов процессов.

В зависимости от способа структуризации виртуального адресного пространства, опре-

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

виртуальной памяти.

· Страничное распределение. Единицей перемещения между памятью и диском

является страница – часть виртуального адресного пространства фиксированного и

небольшого объема.

· Сегментное распределение. Единицей перемещения между памятью и диском

является сегмент – часть виртуального адресного пространства произвольного объе-

ма, содержащая осмысленную с некоторой точки зрения совокупность данных (под-

программу, массив и т.д.).

· Сегментно-страничное распределение. Объединяет элементы предыдущих клас-

сов. Виртуальное адресное пространство структурируется иерархически: делится на сег-

менты, а затем сегменты делятся на страницы. Единицей перемещения между памятью

и диском является страница.

Для временного хранения вытесненных на диск сегментов и страниц отводится

либо специальная область, либо специальный файл, обычно называемые странич-

ным файлом (page file, paging file) или, по традиции, файлом свопинга.

Текущий размер страничного файла влияет на возможности работы ОС следую-

щим образом: чем больше файл, тем больше одновременно работающих приложе-

ний, но тем медленнее их работа из-за многократной перекачки перемещаемых эле-

ментов на диск и обратно.

Размер страничного файла в современных ОС является настраиваемым парамет-

ром, который выбирается администратором системы для достижения компромисса

между числом одновременно выполняемых приложений и быстродействием системы.

Этот размер устанавливается в панели управления, пункт «система», вкладка «до-

полнительно» – «параметры быстродействия».

Страничное распределение

· Общая схема

Виртуальное адресное пространство каждого процесса делится на части одинако-

вого, фиксированного для данной системы размера, называемые виртуальными стра-

ницами (virtual pages). В общем случае размер виртуального адресного пространства

не является кратным размеру страницы, поэтому последняя страница каждого про-

цесса дополняется фиктивной областью.

Вся оперативная память машины также делится на части такого же размера, на-

зываемые физическими страницами (блоками, кадрами).

Для каждого процесса ОС создает таблицу страниц – информационную структу-

ру, содержащую записи обо всех виртуальных страницах процесса.

Схема страничного распределения памяти приведена на рис. 3.3.

При создании процесса его виртуальные страницы загружаются в оперативную па-

мять; в случае нехватки последней часть виртуальных страниц может быть вытесне-

на на диск. Смежные виртуальные страницы не обязательно располагаются в смежных

физических страницах.

 

Кэширование данных

· Память вычислительной машины, представленная совокупностью запоминающих

устройств (ЗУ) различных видов, может быть иерархизирована по следующим основ-

ным признакам:

· время доступа к данным;

· объем;

· стоимость хранения данных в расчете на один бит.

Конкретные значения этих характеристик изменяются очень быстро, поэтому в

данном случае важны не столько их абсолютные значения, сколько соотношение для

разных типов запоминающих устройств. Иерархия ЗУ приведена на рис. 3.9.

Закономерность такова: чем больше быстродействие, тем больше стоимость хра-

нения данных в расчете на один бит и меньше объем устройства. Кэш-память пред-

ставляет некоторое компромиссное решение этой проблемы.

· Кэш-память (cache) – это способ организации совместного функционирования

двух типов запоминающих устройств, отличающихся временем доступа и стоимос-

тью хранения данных, который позволяет уменьшить среднее время доступа к дан-

ным за счет динамического копирования в “быстрое” ЗУ наиболее часто используе-

мой информации из “медленного” ЗУ.

Механизм кэш-памяти прозрачен для пользователя: все перемещения данных де-

лаются автоматически системными средствами.

Кэш-памятью часто называют не только способ организации работы двух типов

запоминающих устройств, но и одно из устройств – “быстрое” ЗУ. Оно стоит дороже

и, как правило, имеет сравнительно небольшой объем. Медленное ЗУ из этой пары

назовем основной памятью, быстрое представлено кэш-памятью.

· Кэширование – универсальный метод, пригодный для ускорения доступа к опе-

ративной памяти, к диску и другим видам ЗУ. Так, в качестве составляющих пары

«основная память – кэш-память» могут выступать: оперативная память – быстро-

действующая статическая память; система ввода-вывода – буферы в оперативной

памяти (или специальная кэш-память).

Функционирование кэш-памяти

Рассмотрим одну из возможных схем кэширования.

Содержимое кэш-памяти представляет собой совокупность записей обо всех заг-

руженных в нее элементах данных из основной памяти. Каждая запись об элемен-

те данных включает в себя:

- значение элемента данных;

- адрес, который этот элемент данных имеет в основной памяти;

- управляющую информацию для реализации алгоритма замещения, обычно – признак

модификации и признак обращения к данным за некоторый последний период времени.

При каждом обращении к основной памяти по физическому адресу просматрива-

ется содержимое кэш-памяти с целью определения, не находятся ли там нужные дан-

ные. Поиск нужных данных осуществляется по содержимому – взятому из запроса

значению поля адреса в оперативной памяти. Далее возможно одно из двух:

· произошло кэш-попадание – данные обнаружены в кэш-памяти; они считываются

из кэш-памяти и результат передается источнику запроса;

· произошел кэш-промах (cache-miss) – нужных данных нет; они считываются из ос-

новной памяти, передаются источнику запроса и одновременно копируются в кэш-память.

Покажем, что среднее время доступа к данным зависит от вероятности попада-

ния в кэш.

Пусть имеется основное запоминающие устройство со средним временем доступа

к данным t1 и кэш-память, имеющая время доступа t2 (t2<t1). Обозначим через t сред-

нее время доступа к данным в системе с кэш-памятью, а через p -вероятность попа-

дания в кэш. По формуле полной вероятности имеем:

t = t1((1 – p) + t2p.

Видно, что среднее время доступа изменяется от среднего времени доступа в основ-

ное ЗУ (при р=0) до среднего времени доступа непосредственно в кэш-память (при р=1).

Таким образом, использование кэш-памяти имеет смысл только при высокой веро-

ятности кэш-попадания. Эта вероятность, в свою очередь, зависит от многих раз-

личных факторов. Тем не менее в реальных системах вероятность попадания в кэш

очень высока и составляет более 0.9. Такое высокое значение вероятности нахож-

дения данных в кэш-памяти связано с наличием у данных объективных свойств: про-

странственной и временной локальности.

Пространственная локальность. Если произошло обращение по некоторому ад-

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

соседним адресам.

Временная локальность. Если произошло обращение по некоторому адресу, то сле-

дующее обращение по этому же адресу с большой вероятностью произойдет в бли-

жайшее время.

На практике в кэш-память считывается не один элемент данных, к которому про-

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

кэш при последующих обращениях.

Проблемы кэширования

· Вытеснение данных их кэша в основную память

В процессе работы содержимое кэш-памяти постоянно обновляется, а значит, пе-

риодически данные должны из нее вытесняться. Вытеснение предполагает объявле-

ние соответствующей области кэша свободной (сброс бита действительности) и, если

вытесняемые данные за время нахождения в кэше были изменены, копирование дан-

ных в основную память.

Методы выбора данных для вытеснения зависят от способа отображения основной

памяти на кэш и базируются на предположениях о свойствах данных. Реально как пра-

вило учитывается интенсивность обращения к данным. В некоторых алгоритмах заме-

щения предусматривается первоочередная выгрузка модифицированных данных.

Из-за непредсказуемости вычислительного процесса ни один алгоритм замещения

данных не может быть максимально быстрым и одновременно гарантировать макси-

мально возможную вероятность кэш-попаданий. Поэтому разработчики ограничивают-

ся рациональными решениями, по крайней мере, не сильно замедляющими работу кэша.

· Согласование данных кэша и основной памяти при записи в последнюю Проблема заключается в том, что при записи данных в основную память их копия в

КЭШе (если она там есть) становится недостоверной. Для решения этой проблемы типич-

ны два подхода.

Сквозная запись (write through). Если данные по запрашиваемому адресу отсут-

ствуют в кэше, то запись выполняется только в основную память, в противном слу-

чае – одновременно в кэш и основную память.

Обратная запись (write back). Если данные по запрашиваемому адресу отсут-

ствуют в кэше, то запись выполняется только в основную память, в противном слу-

чае – только в кэш-память. Во втором случае устанавливается признак модифика-

ции, указывающий на необходимость записи данных в основную память при вытес-

нении их из кэша.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 979; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.59.187 (0.028 с.)