
- •Лекция 14. Управления виртуальной памятью. Кэширование. Методы загрузки и замещения страниц
- •Кэш транслированных адресов
- •Методы поиска в tlb
- •Методы замещения для tlb.
- •Кэширование памяти и tlb
- •Методы загрузки и замещения страниц Методы загрузки страниц
- •Методы замещения страниц
- •Примеры поведения разных стратегий
- •Реализации lru Точная
- •На основе бита обращения к странице
- •N-й шанс (2-й шанс)
- •Явление «пробуксовки» (thrashing)
Реализации lru Точная
Требует строго упорядочивать страницы по времени обращения к ним. Сложно.
На основе бита обращения к странице
Для каждой страницы поддерживается бит использования(R). Этот бит аппаратно устанавливается при каждом обращении к странице (может размещаться в таблице страниц).
Номера загружаемых страниц размещаются в кольцевом буфере.
Когда происходит прерывание по отсутствию страницы, указатель кольцевого буфера смещается на 1. Анализируется бит R текущей страницы буфера
- если равен 0, страница замещается
- если равен 1, то очищается и переходим к следующему элементу буфера
Если бит R установлен для всех страниц, то метод вырождается вFIFO.
N-й шанс (2-й шанс)
Поддерживается счетчик просмотров для каждой страницы.
Когда происходит прерывание по отсутствию страницы, указатель кольцевого буфера смещается на 1. Анализируется бит R текущей страницы буфера
- если равен 0, то счетчик увеличивается и если <N переходим к следующей позиции, иначе страница замещается
- если равен 1, то очищается счетчик и бит R и переходим к следующему элементу буфера
При больших N может происходить многократный просмотр буфера с наращиванием счетчика до величиныN.
Обычно N=1 для чистых (не модифицированных) страниц иN=2 для «грязных» страниц.
Многие процессоры поддерживают до 4 битов, связанных со страницами:
use (R) - устанавливается при каждом обращении к странице и очищается алгоритмомLRU
modified (W) - устанавливается при каждой записи в страницу и очищается при записи страницы на диск
valid (P) – бит присутствия страницы в памяти
read-only – бит защиты страницы от записи
Заметим, что первые два могут эмулироваться на основе двух последних.
Например, VAX/VMS не поддерживаетR иM биты
Поддерживаются два списка страниц:
FIFO - помечены какread-write и доступны для обращения
LRU (второй шанс) - помечены какinvalid, но находятся в памяти
При обращении к странице:
Еслив спискеFIFO, то обращаемся к ней
иначепрерывание по отсутствию страницы
По прерыванию:
Еслив спискеLRU, то
переместить в список FIFO,
первую страницу из FIFO переместить в конецLRU
иначе
удалить первую из LRU,
переместить в конец LRUпервую страницу изFIFO,
загрузить требуемую страницу в конец FIFO
Явление «пробуксовки» (thrashing)
Возникает в случае, когда размер буфера меньше чем число активно используемых страниц.
Например, пусть время обращения к странице – 200нс, а время обработки прерывания по отсутствию страницы – 10 мс, вероятность прерывания 0.2.
Тогда среднее время обращения к странице составит ~2мс, т.е. ухудшение на 4 порядка.
Беда в том, что система не представляет потребности и характер поведения процессов, можно лишь фиксировать факт резкого увеличения числа прерываний по отсутствию страницы на уровне производительности дисковой подсистемы.
Как определить текущие потребности процессов?