Операционные системы
Работа с памятью. Виртуальная память
Виртуальная память
1. Требуемый объем памяти превышает физический объем памяти
2. Нужно разграничивать память между процессами

3. Виртуальная память бьется на блоки, называемые страницами
4. Страницы имеют размер кратный 2-ке
5. Виртуальные адреса попадают не на шину, а в MMU
Виртуальная память
Виртуальная память
Структура записи в таблице страниц
Сложности при страничной
организации памяти
1. Отображение виртуального адреса на физический должно быть быстрым
2. При увеличении пространства виртуальных адресов размер таблицы
страниц становится довольно большим
TLB(Transaction Lookaside Buffer) – буфер
быстрого преобразования адреса
1. Быстрое преобразование виртуального адреса
2. Программная и аппаратная ошибки отсутствия страниц
Подходы к решению проблем с
увеличением объемов виртуальной памяти
1. Многоуровневые таблицы страниц
2. Инвертированные таблицы страниц
Алгоритмы замещения страниц
1. Оптимальный
2. Алгоритм исключения недавно использовавшейся страницы

3. Алгоритм FIFO
4. Алгоритм «Второй шанс»
5. Алгоритм «часы»

6. Алгоритм замещения наименее востребованной страницы
7. Алгоритм «Рабочий набор»
8. Алгоритм WSClock
Оптимальный
1. Каждая загруженная страница помечается числом, обозначающим через
сколько команд к ней будет обращение

2. Удаляется страница имеющая наибольшее число
3. Прост в понимании, невозможен в реализации
4. Бывает для получения наилучшей замены страниц при тестировании
реальных алгоритмов
Исключение давно используемой
страницы (NRU)
1. Алгоритм основан на битах чтения (R) и изменения (M)
2. По таймеру бит R сбрасывается в ноль

3. Каждая страница относится к одному из классов:
a)
b)
c)
d)

R:0 M:0
R:0 M:1
R:1 M:0
R:1 M:1

4. Пытаемся удалить страницы в порядке a->b->c->d
Алгоритм FIFO
1. Имеет много вырожденных случаев
2. В чистом виде практически не используется
«Второй шанс»
1. Модификация FIFO
2. При вытеснении страницы производят следующие действия:
a) Если бит R установлен в 0, то просто вытесняем
b) Если бит R установлен в 1, то устанавливаем его в 0, а страницу перемещаем
в конец очереди и пытаемся снова вытеснить «голову» очереди
«Часы»
1. Модификация алгоритма «Второй шанс»
2. Аналогично «Второму шансу», но вместо очереди используем
закольцованный список и ходим по нему
Замещение наименее востребованной
страницы (LRU)
1. Ведем 64-разрядный счетчик команд C
2. После каждого обращения к странице записываем значение С в таблицу
страниц для этой записи, относящейся к этой странице
3. Замещаем страницу с наименьшим значением этого поля
4. Сложности в реализации из-за величины счетчика
Виртуальная память
Нечастого востребования (NFU), как
приближение LRU
1. При каждой странице ведем счетчик
2. При каждом прерывание таймера прибавляем к счетчику значение R

3. Замещается страница с наименьшим значением счетчика
Алгоритм старения, улучшение NFU
«Рабочий набор»
1. Загрузка страниц только по мере надобности
2. W(k, t) – рабочий набор, k – количество обращений к памяти, t – время

3. Опережающая подкачка страниц
«Рабочий набор». Реализация
1. В качестве времени берется виртуальное время
2. Вводим время устаревания (τ) и время такта (за время устаревания
должно проходить несколько тактов)
3. После каждого такта, страницы имеющие R:1 устанавливают
обновленное время
4. При возникновении ошибки отсутствия страницы происходит очистка
таблицы страниц
a) R:1 – не трогаем страницу
b) R:0 и возраст меньше τ – не трогаем страницу
c) R:1 и возраст больше τ – выгружаем страницу
«Рабочий набор». Анализ
1. Поддерживается довольно точно актуальный набор страниц в общих
случаях

2. Трудоемкий процесс очистки
WSClock
1. Совмещение алгоритма «Рабочий набор» и «Часы»
2. Время последнего использования берется из алгоритма «Рабочий
набор»
3. При ошибке отсутствия страницы:
a) Если R:1, то устанавливаем R:0 и стрелка перемещается дальше
b) Если R:0, W:1 и возраст > τ, то планируем запись на диск и перемещаем
стрелку далее
c) Если R:0, W:0 и возраст> τ, то освобождаем страницу
d) Если R:0 и возраст<τ, то перемещаем стрелку далее
WSClock. Иллюстрация
Оптимизация по работе со страничной
памятью
1. Использование локальных и глобальных политик
2. Использование свопинга

3. Оптимальный размер страниц
издержки = (s/p)*e + p/2
4. Разделения пространства команд и данных

5. Совместно используемые страницы и библиотеки
6. Отображаемые файлы
7. Своевременная очистка страниц
События инициализирующие подкачку
страниц
1. Создание процесса
2. Возникновение ошибки отсутствия страницы

3. Завершение процесса
Сегментирование
1. Работа идет с разрастающимися и сужающимися структурами данных
2. Сегмент – это логический объект

3. Сегмент не имеет фиксированного размера

More Related Content

PPTX
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
PDF
Александр Соловьев "Как modnaKasta трансформировалась"
ODP
Krizhanovsky Vm
PDF
Tarantool_qs
PDF
Komarov borba za-miesto-urfu_2013
PDF
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
PDF
Avito Stachka 2012
PDF
Антон Корзунов «Как разместить тысячи объектов на карте без увеличения нагруз...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Александр Соловьев "Как modnaKasta трансформировалась"
Krizhanovsky Vm
Tarantool_qs
Komarov borba za-miesto-urfu_2013
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Avito Stachka 2012
Антон Корзунов «Как разместить тысячи объектов на карте без увеличения нагруз...

What's hot (16)

PDF
SphinxSearch Meetup - Tips&tricks
PDF
Tokyo Cabinet
PDF
«Система защиты от парсинга API 2ГИС» — Дмитрий Бархатов, 2ГИС
PDF
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
PPT
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
PDF
JS Lab`16. Андрей Копенкин: "RethinkDB + Socket.io. Real-time web 2.0"
PDF
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
PPTX
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
PPTX
итерация и рекурсия
PDF
Михаил Трошев "AJAX в поиске по вебу"
PPTX
AI and navigation in games: problems, solutions, mobile platform optimization
PPTX
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
PDF
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
PDF
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
PDF
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
PPT
Second Life юрий жигайло
SphinxSearch Meetup - Tips&tricks
Tokyo Cabinet
«Система защиты от парсинга API 2ГИС» — Дмитрий Бархатов, 2ГИС
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
JS Lab`16. Андрей Копенкин: "RethinkDB + Socket.io. Real-time web 2.0"
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
итерация и рекурсия
Михаил Трошев "AJAX в поиске по вебу"
AI and navigation in games: problems, solutions, mobile platform optimization
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Second Life юрий жигайло
Ad

Similar to Виртуальная память (20)

PPTX
Операционные системы 2015, лекция № 8
PPTX
Операционные системы 2015, лекция № 7
PPT
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
PDF
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
PPTX
Презентация 3
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
PDF
Работа с памятью. Аллокаторы
PDF
сказки про «полезные» оптимизаторы памяти
PPTX
Операционные системы 2015, лекция № 2
PDF
Лекция 4. Оптимизация доступа к памяти (Memory access optimization, cache opt...
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
PDF
Как Linux работает с памятью — Вячеслав Бирюков
PDF
Практика Lock-free. RealTime-сервер
PDF
Вячеслав Бирюков - Как Linux работает с памятью
PDF
Дмитрий Еманов — Под капотом серверного ПО
PDF
Обработка потока данных на примере deep packet inspection: внутренняя архитек...
PDF
Константин Осипов
PDF
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
PPT
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Операционные системы 2015, лекция № 8
Операционные системы 2015, лекция № 7
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Презентация 3
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Работа с памятью. Аллокаторы
сказки про «полезные» оптимизаторы памяти
Операционные системы 2015, лекция № 2
Лекция 4. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Современная операционная система: что надо знать разработчику / Александр Кри...
Как Linux работает с памятью — Вячеслав Бирюков
Практика Lock-free. RealTime-сервер
Вячеслав Бирюков - Как Linux работает с памятью
Дмитрий Еманов — Под капотом серверного ПО
Обработка потока данных на примере deep packet inspection: внутренняя архитек...
Константин Осипов
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Ad

Виртуальная память

  • 1. Операционные системы Работа с памятью. Виртуальная память
  • 2. Виртуальная память 1. Требуемый объем памяти превышает физический объем памяти 2. Нужно разграничивать память между процессами 3. Виртуальная память бьется на блоки, называемые страницами 4. Страницы имеют размер кратный 2-ке 5. Виртуальные адреса попадают не на шину, а в MMU
  • 5. Структура записи в таблице страниц
  • 6. Сложности при страничной организации памяти 1. Отображение виртуального адреса на физический должно быть быстрым 2. При увеличении пространства виртуальных адресов размер таблицы страниц становится довольно большим
  • 7. TLB(Transaction Lookaside Buffer) – буфер быстрого преобразования адреса 1. Быстрое преобразование виртуального адреса 2. Программная и аппаратная ошибки отсутствия страниц
  • 8. Подходы к решению проблем с увеличением объемов виртуальной памяти 1. Многоуровневые таблицы страниц 2. Инвертированные таблицы страниц
  • 9. Алгоритмы замещения страниц 1. Оптимальный 2. Алгоритм исключения недавно использовавшейся страницы 3. Алгоритм FIFO 4. Алгоритм «Второй шанс» 5. Алгоритм «часы» 6. Алгоритм замещения наименее востребованной страницы 7. Алгоритм «Рабочий набор» 8. Алгоритм WSClock
  • 10. Оптимальный 1. Каждая загруженная страница помечается числом, обозначающим через сколько команд к ней будет обращение 2. Удаляется страница имеющая наибольшее число 3. Прост в понимании, невозможен в реализации 4. Бывает для получения наилучшей замены страниц при тестировании реальных алгоритмов
  • 11. Исключение давно используемой страницы (NRU) 1. Алгоритм основан на битах чтения (R) и изменения (M) 2. По таймеру бит R сбрасывается в ноль 3. Каждая страница относится к одному из классов: a) b) c) d) R:0 M:0 R:0 M:1 R:1 M:0 R:1 M:1 4. Пытаемся удалить страницы в порядке a->b->c->d
  • 12. Алгоритм FIFO 1. Имеет много вырожденных случаев 2. В чистом виде практически не используется
  • 13. «Второй шанс» 1. Модификация FIFO 2. При вытеснении страницы производят следующие действия: a) Если бит R установлен в 0, то просто вытесняем b) Если бит R установлен в 1, то устанавливаем его в 0, а страницу перемещаем в конец очереди и пытаемся снова вытеснить «голову» очереди
  • 14. «Часы» 1. Модификация алгоритма «Второй шанс» 2. Аналогично «Второму шансу», но вместо очереди используем закольцованный список и ходим по нему
  • 15. Замещение наименее востребованной страницы (LRU) 1. Ведем 64-разрядный счетчик команд C 2. После каждого обращения к странице записываем значение С в таблицу страниц для этой записи, относящейся к этой странице 3. Замещаем страницу с наименьшим значением этого поля 4. Сложности в реализации из-за величины счетчика
  • 17. Нечастого востребования (NFU), как приближение LRU 1. При каждой странице ведем счетчик 2. При каждом прерывание таймера прибавляем к счетчику значение R 3. Замещается страница с наименьшим значением счетчика
  • 19. «Рабочий набор» 1. Загрузка страниц только по мере надобности 2. W(k, t) – рабочий набор, k – количество обращений к памяти, t – время 3. Опережающая подкачка страниц
  • 20. «Рабочий набор». Реализация 1. В качестве времени берется виртуальное время 2. Вводим время устаревания (τ) и время такта (за время устаревания должно проходить несколько тактов) 3. После каждого такта, страницы имеющие R:1 устанавливают обновленное время 4. При возникновении ошибки отсутствия страницы происходит очистка таблицы страниц a) R:1 – не трогаем страницу b) R:0 и возраст меньше τ – не трогаем страницу c) R:1 и возраст больше τ – выгружаем страницу
  • 21. «Рабочий набор». Анализ 1. Поддерживается довольно точно актуальный набор страниц в общих случаях 2. Трудоемкий процесс очистки
  • 22. WSClock 1. Совмещение алгоритма «Рабочий набор» и «Часы» 2. Время последнего использования берется из алгоритма «Рабочий набор» 3. При ошибке отсутствия страницы: a) Если R:1, то устанавливаем R:0 и стрелка перемещается дальше b) Если R:0, W:1 и возраст > τ, то планируем запись на диск и перемещаем стрелку далее c) Если R:0, W:0 и возраст> τ, то освобождаем страницу d) Если R:0 и возраст<τ, то перемещаем стрелку далее
  • 24. Оптимизация по работе со страничной памятью 1. Использование локальных и глобальных политик 2. Использование свопинга 3. Оптимальный размер страниц издержки = (s/p)*e + p/2 4. Разделения пространства команд и данных 5. Совместно используемые страницы и библиотеки 6. Отображаемые файлы 7. Своевременная очистка страниц
  • 25. События инициализирующие подкачку страниц 1. Создание процесса 2. Возникновение ошибки отсутствия страницы 3. Завершение процесса
  • 26. Сегментирование 1. Работа идет с разрастающимися и сужающимися структурами данных 2. Сегмент – это логический объект 3. Сегмент не имеет фиксированного размера