- •6 Пара. Управление памятью. Виртуальная память (слайд №1) Управление памятью в ос
- •4.1. Понятие об организации и управлении физической памятью в ос
- •4.2. Методы связного распределения основной памяти
- •4.2.1. Связное распределение памяти для одного пользователя
- •4.2.2. Связное распределение памяти при мультипрограммной обработке
- •Откачка и подкачка
- •Алгоритмы определения устаревших страниц
- •Недостатки
- •4.3. Организация виртуальной памяти
- •4.3.1. Основные концепции виртуальной памяти
- •4.3.2. Страничная организация виртуальной памяти
- •Страничная организация
- •Реализация таблицы страниц
- •4.3.3. Сегментная организация виртуальной памяти
- •Принципы сегментной организации памяти
- •Архитектура сегментной организации памяти
- •Пример сегментной организации памяти
- •Пример использования разделяемых сегментов
- •4.3.4. Странично-сегментная организация виртуальной памяти
- •4.4. Управление виртуальной памятью
- •4.4.1. Стратегии управления виртуальной памятью
- •4.4.2. Стратегии вталкивания (подкачки)
- •4.4.3. Стратегии размещения
- •4.4.4. Стратегии выталкивания
- •Связывание программ и данных с адресами в памяти
- •-Виртуальная память и стандартные интерфейсы ос
- •-Паравиртуализация и бинарная трансляция
Откачка и подкачка
(слайд №8)
Рис. 16.1. Схема откачки и подкачки.
Пользовательский процесс может находиться в различных состояниях во время обработки системой. В частности, процесс может быть некоторое время неактивным, если, например, он исполняется в режиме разделения времени, и пользователь за терминалом обдумывает следующую команду или редактирует исходный код своей программы. В подобных случаях процесс может быть откачан операционной системой на диск, в связи с тем, что занимаемая им память оказывается необходимой в данный момент для другого, активного, процесса.
Откачка и подкачка (swapping) – это действия операционной системы по откачке (записи) образа неактивного процесса на диск или подкачке (считыванию) активного процесса в основную память. Необходимость выполнения подобных действий вызвана нехваткой основной памяти.
Популярная разновидность стратегии откачки и подкачки – roll out / roll in: откачка и подкачка на базе приоритетов; более приоритетные процессы исполняются, менее приоритетные – откачиваются на диск.
Наибольшие временные затраты на откачку – это затраты на передачу данных: полный образ процесса может занимать большую область памяти. Общее время откачки пропорционально размеру откачиваемых данных.
В распространенных ОС – UNIX, Linux, Windows и др. – реализованы различные стратегии откачки и подкачки.
Схема откачки и подкачки изображена на рис. 16.1.
Когда приложение обратится к откаченной странице, произойдет исключительная ситуация PageFault. Обработчик этого события должен проверить, была ли ранее откачена запрошенная страница, и, если она есть в свопе, загрузить ее обратно в память.
(слайд №9)
Из схемы видно, что, с точки зрения каждой программы, пространство ее виртуальной памяти непрерывно. Оно преобразуется в непрерывную область дисковой памяти. С помощью механизма откачки – подкачки в нужный момент страница виртуальной памяти размещается в основной памяти.
С каждым элементом таблицы страниц связывается бит "valid/invalid", однако, в отличие от организации логической памяти, он играет несколько иную роль – он указывает на присутствие или отсутствие страницы в основной памяти. Значение бита равно 1, если страница в памяти, и 0, если ( страница отсутствует в памяти.
Первоначально для всех элементов таблицы страниц бит valid/invalid полагается равным 0.
Если в процессе трансляции адреса бит "valid/invalid" в таблице страниц оказыется равным 0, то происходит прерывание по отсутствию страницы в памяти (page fault).
На рис. 18.3 приведен пример таблицы страниц, в которой не все страницы присутствуют в основной памяти.
Рис. 18.3. Пример таблицы страниц, в которой не все страницы в памяти.
Алгоритмы определения устаревших страниц
При выделении места для новой страницы бывает необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мёртвая» страница, которая больше не потребуется кому-либо (например, относится к завершённому процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:
Правило локального замещения выделяет каждому процессу или группе взаимосвязанных процессов определённое количество страниц. Если процессу нужна новая страница, он должен заменить одну из собственных.
Правило глобального замещения страниц позволяет брать страницы любого процесса, используя глобальные критерии выбора. Для реализации данного подхода необходимо выбрать критерий, по которому будет приниматься решение о страницах, хранимых в памяти.
Наиболее часто используемые критерии поиска:
Least Recently Used. Удаляются те страницы, доступ к которым производился наиболее давно. Считается, что в последующем к таким страницам будет происходить минимум обращений.
Last Recently Used. Удаляются недавно освободившиеся страницы. Подразумеваются страницы только что завершившихся процессов.