- •1)Основные функции операционных систем, сред и оболочек
- •2) Классификация ос
- •3) Требования к современным ос
- •4) Мультипрограммирование и распределение ресурсов
- •5) Понятие процессов и потоков
- •6) Алгоритмы планирования процессов и потоков
- •7) Синхронизация процессов
- •9) Функции ос по управлению памятью
- •10) Виртуализация памяти. Классы виртуальной памяти
- •11) Кэширование данных
11) Кэширование данных
· Память вычислительной машины, представленная совокупностью запоминающих
устройств (ЗУ) различных видов, может быть иерархизирована по следующим основ-
ным признакам:
· время доступа к данным;
· объем;
· стоимость хранения данных в расчете на один бит.
Конкретные значения этих характеристик изменяются очень быстро, поэтому в
данном случае важны не столько их абсолютные значения, сколько соотношение для
разных типов запоминающих устройств. Иерархия ЗУ приведена на рис. 3.9.
Закономерность такова: чем больше быстродействие, тем больше стоимость хра-
нения данных в расчете на один бит и меньше объем устройства. Кэш-память пред-
ставляет некоторое компромиссное решение этой проблемы.
· Кэш-память (cache) – это способ организации совместного функционирования
двух типов запоминающих устройств, отличающихся временем доступа и стоимос-
тью хранения данных, который позволяет уменьшить среднее время доступа к дан-
ным за счет динамического копирования в “быстрое” ЗУ наиболее часто используе-
мой информации из “медленного” ЗУ.
Механизм кэш-памяти прозрачен для пользователя: все перемещения данных де-
лаются автоматически системными средствами.
Кэш-памятью часто называют не только способ организации работы двух типов
запоминающих устройств, но и одно из устройств – “быстрое” ЗУ. Оно стоит дороже
и, как правило, имеет сравнительно небольшой объем. Медленное ЗУ из этой пары
назовем основной памятью, быстрое представлено кэш-памятью.
· Кэширование – универсальный метод, пригодный для ускорения доступа к опе-
ративной памяти, к диску и другим видам ЗУ. Так, в качестве составляющих пары
«основная память – кэш-память» могут выступать: оперативная память – быстро-
действующая статическая память; система ввода-вывода – буферы в оперативной
памяти (или специальная кэш-память).
Функционирование кэш-памяти
Рассмотрим одну из возможных схем кэширования.
Содержимое кэш-памяти представляет собой совокупность записей обо всех заг-
руженных в нее элементах данных из основной памяти. Каждая запись об элемен-
те данных включает в себя:
- значение элемента данных;
- адрес, который этот элемент данных имеет в основной памяти;
- управляющую информацию для реализации алгоритма замещения, обычно – признак
модификации и признак обращения к данным за некоторый последний период времени.
При каждом обращении к основной памяти по физическому адресу просматрива-
ется содержимое кэш-памяти с целью определения, не находятся ли там нужные дан-
ные. Поиск нужных данных осуществляется по содержимому – взятому из запроса
значению поля адреса в оперативной памяти. Далее возможно одно из двух:
· произошло кэш-попадание – данные обнаружены в кэш-памяти; они считываются
из кэш-памяти и результат передается источнику запроса;
· произошел кэш-промах (cache-miss) – нужных данных нет; они считываются из ос-
новной памяти, передаются источнику запроса и одновременно копируются в кэш-память.
Покажем, что среднее время доступа к данным зависит от вероятности попада-
ния в кэш.
Пусть имеется основное запоминающие устройство со средним временем доступа
к данным t1 и кэш-память, имеющая время доступа t2 (t2<t1). Обозначим через t сред-
нее время доступа к данным в системе с кэш-памятью, а через p -вероятность попа-
дания в кэш. По формуле полной вероятности имеем:
t = t1((1 – p) + t2p.
Видно, что среднее время доступа изменяется от среднего времени доступа в основ-
ное ЗУ (при р=0) до среднего времени доступа непосредственно в кэш-память (при р=1).
Таким образом, использование кэш-памяти имеет смысл только при высокой веро-
ятности кэш-попадания. Эта вероятность, в свою очередь, зависит от многих раз-
личных факторов. Тем не менее в реальных системах вероятность попадания в кэш
очень высока и составляет более 0.9. Такое высокое значение вероятности нахож-
дения данных в кэш-памяти связано с наличием у данных объективных свойств: про-
странственной и временной локальности.
Пространственная локальность. Если произошло обращение по некоторому ад-
ресу, то с высокой степенью вероятности в ближайшее время произойдет обращение к
соседним адресам.
Временная локальность. Если произошло обращение по некоторому адресу, то сле-
дующее обращение по этому же адресу с большой вероятностью произойдет в бли-
жайшее время.
На практике в кэш-память считывается не один элемент данных, к которому про-
изошло обращение, а целый блок данных, что увеличивает вероятность попадания в
кэш при последующих обращениях.
Проблемы кэширования
· Вытеснение данных их кэша в основную память
В процессе работы содержимое кэш-памяти постоянно обновляется, а значит, пе-
риодически данные должны из нее вытесняться. Вытеснение предполагает объявле-
ние соответствующей области кэша свободной (сброс бита действительности) и, если
вытесняемые данные за время нахождения в кэше были изменены, копирование дан-
ных в основную память.
Методы выбора данных для вытеснения зависят от способа отображения основной
памяти на кэш и базируются на предположениях о свойствах данных. Реально как пра-
вило учитывается интенсивность обращения к данным. В некоторых алгоритмах заме-
щения предусматривается первоочередная выгрузка модифицированных данных.
Из-за непредсказуемости вычислительного процесса ни один алгоритм замещения
данных не может быть максимально быстрым и одновременно гарантировать макси-
мально возможную вероятность кэш-попаданий. Поэтому разработчики ограничивают-
ся рациональными решениями, по крайней мере, не сильно замедляющими работу кэша.
· Согласование данных кэша и основной памяти при записи в последнюю Проблема заключается в том, что при записи данных в основную память их копия в
КЭШе (если она там есть) становится недостоверной. Для решения этой проблемы типич-
ны два подхода.
Сквозная запись (write through). Если данные по запрашиваемому адресу отсут-
ствуют в кэше, то запись выполняется только в основную память, в противном слу-
чае – одновременно в кэш и основную память.
Обратная запись (write back). Если данные по запрашиваемому адресу отсут-
ствуют в кэше, то запись выполняется только в основную память, в противном слу-
чае – только в кэш-память. Во втором случае устанавливается признак модифика-
ции, указывающий на необходимость записи данных в основную память при вытес-
нении их из кэша.