Презентацию к данной лекции Вы можете скачать здесь.
Виртуальная память – распространенная стратегия
Концепция виртуальной памяти основана на идеях отделения логической памяти пользователя от физической памяти и расширения логической памяти путем хранения ее образа на диске.
При исполнении программы только часть ее кода и данных, к которым происходит обращение, в каждый момент требует размещения в физической памяти. Поэтому, естественно, возникает идея расширить пространство логической памяти, которое может быть реализовано намного большего размера, чем
Заметим, что концепция виртуальной памяти непосредственно не связана ни со страничной, ни с сегментной стратегиями
В приведенных терминах подчеркивается динамический характер управления виртуальной памятью: термин по требованию означает, что страница или сегмент будут размещены в физической памяти только в случае, если к ним реально происходит обращение из программы пользователя. Причем если размер обрабатываемой области виртуальной памяти (например, массива) очень велик – например, 1000 страниц, то в физической памяти будет размещена только та его страница, к которой обращается пользовательская программа.
Принцип управления виртуальной памятью иллюстрируется рис 18.1.
(рис 18.1) Виртуальная память и физическая память.
Из схемы видно, что
Принцип реализации виртуальной памяти в виде страничной организации по требованию заключается в том, что каждая страница загружается в память, только если она реально требуется при выполнении программы – содержит код или данные, к которым произошло обращение.
Преимущества данного подхода:
Основные принципы
рис 18.2 иллюстрирует размещение виртуальной памяти на диске и ее откачку и подкачку.
(рис 18.2) Преобразование страничной памяти в непрерывное дисковое пространство.
Из схемы видно, что, с точки зрения каждой программы, пространство ее виртуальной памяти непрерывно. Оно преобразуется в непрерывную область дисковой памяти. С помощью механизма откачки – подкачки в нужный момент страница виртуальной памяти размещается в основной памяти.
С каждым элементом
Первоначально для всех элементов
Если в процессе трансляции адреса бит "
На рис 18.3 приведен пример
(рис 18.3) Пример таблицы страниц, в которой не все страницы в памяти.
На схеме
Если в таблице страниц имеется ссылка на страницу, отсутствующую в памяти, первое же обращение по такой ссылке приведет к прерыванию и вызову ОС (ситуации page
ОС по таблицам определяет, что именно произошло:
Если имеет место неверная ссылка (на страницу, отсутствующую в логической памяти), то работа программы прекращается.
Если же имеет место обычное отсутствие страницы в памяти, то ОС должна разместить его в основной памяти. Для этого ОС выполняет следующий алгоритм:
Этапы обработки ситуации отсутствия страницы в памяти показаны на рис 18.4.
(рис 18.4) Обработка ситуации отсутствия страницы в памяти.
Этап 1 – выполнение команды load M, которая прерывается по отсутствию страницы в памяти; 2 – прерывание и вызов ОС; 3 – обращение к странице, находящейся в файле откачки на диске; 4 – считывание страницы в память на свободный фрейм; 5 – изменение элемента
На этапе 4 (рис. 18.4) возможна ситуация отсутствия свободного фрейма в основной памяти. При этом ОС должна выполнить замещение страницы (page replacement) – найти страницу, загруженную в память, но реально не используемую, и откачать ее.
Для оптимальной реализации
Дадим общую оценку производительности обработки страниц по требованию.
Введем коэффициент отказов страниц (Page Fault Rate) p:> 0 <= p <= 1.0.
Если p = 0, то имеет место отсутствие отказов страниц.
Если p = 1, то каждое обращение к странице приводит к отказу.
Оценим теперь эффективное время доступа (Effective Access Time - EAT):
EAT = (1 – p) * время доступа к памяти + p * (время реакции на отказ + [ время откачки страницы ] + время подкачки страницы + время рестарта)
Дадим необходимые пояснения к данной формуле. Оценка времени складывается из двух слагаемых. Первое слагаемое соответствует ситуации, когда отказ страницы не имеет места, и оценивает среднее время доступа к странице в этом случае. Второе слагаемое вычисляет оценку времени в случае отказа страницы. В нем первая компонента – суммарное время реакции апппратуры и ОС на отказ страницы, вторая (необязательная) – время откачки страницы (если она требуется для замещения страниц), третья – время подкачки страницы, четвертая – время
Благодаря механизму виртуальной памяти, могут быть использованы следующие оптимизации расходования памяти при
Принцип совместного использования страниц процессами (или копирование по записи - Copy-On-Write,
Использование при вводе-выводе файлов, отображаемых в память, позволяет рассматривать
Первоначально файл читается с использованием запроса страниц по требованию. Часть файла размером с одну страницу читается из файла в
На рис 18.5 иллюстрируется концепция файла, отображаемого в память.
(рис 18.5) Файлы, отображаемые в память.
Процессы A и B совместно используют файл, причем каждому блоку файла соответствует страница в памяти. Эти страницы имеют одни и те же номера в таблицах страниц виртуальной памяти процессов. Страницы, присутствующие в памяти, фактически являются частями файла, обрабатываемого при вводе-выводе, благодаря этому, гораздо быстрее, чем обычный файл. По окончании обмена, при
Подобный механизм имеется в большинстве операционных систем. Например, в системе Solaris он реализуется командой и системным вызовом mmap (memory map).
Для предотвращения переполнения памяти, подпрограмма обслуживания отказов страниц дополняется поддержкой замещения страниц.
Для сокращения времени передачи страниц используется бит модификации в таблице страниц: только модифицированные страницы откачиваются на диск.
Замещение страниц дополняет картину и стратегию разделения между виртуальной и физической памятью – большая
Пример замещения страниц приведен на рис 18.6.
(рис 18.6) Пример замещения страниц.
В примере имеются два пользовательских процесса, каждый из которых использует по 4 страницы виртуальной памяти. Однако имеется только 6 фреймов в основной памяти, выделенных для
Кратко алгоритм замещения страниц можно сформулировать следующим образом:
На рис 18.7 иллюстрируется момент замещения страниц, с предварительной откачкой страницы-жертвы на диск.
(рис 18.7) Замещение страниц с откачкой жертвы на диск.
Этапы замещения страниц: 1 – откачка жертвы; 2 – изменение ее элемента
Как видно из рассмотренного выше, поиск оптимального алгоритма замещения страниц должен быть основан на следующем критерии: необходимо добиваться уменьшения коэффициента отказов страниц p.
Оценка алгоритма может быть выполнена путем опробования его на конкретной строке обращений к памяти (строке запросов) и определения числа отказов страниц при данной
Во всех приводимых ниже в данном разделе примерах из области
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
График зависимости числа отказов страниц от числа фреймов в основной памяти изображен на рис 18.8.
(рис 18.8) Зависимость числа отказов страниц от числа фреймов.
В целом, как и подсказывает
Алгоритм FIFO (First-In-First-Out).Наиболее простой алгоритм замещения страниц – в качестве жертвы всегда выбирается фрейм, первым из имеющихся считанный в
Рассмотрим пример использования данного алгоритма.
Пусть строка запросов имеет вид: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
Случай 1: 3 фрейма (3 страницы могут быть одновременно в памяти для одного процесса). Пусть имеются три процесса. Их
(1, 2, 3) (4, 1, 2) (5, 3, 4).
В данном случае имеет место 9 отказов страниц (проверьте в качестве упражнения).
Случай 2: 4 фрейма. Пусть имеются по-прежнему три процесса.
(1, 2, 3, 4) (5, 1, 2, 3) (4, 5)
Нетрудно проверить, что в данном случае имеет место 10 (!) отказов страниц, несмотря на то, что процесс может иметь больше свободных фреймов, чем в предыдущем случае.
Данная аномалия называется аномалией Belady.
В целом же, как уже говорилось, зависимость такова, что чем больше фреймов может иметь процесс (при достаточно большом числе фреймов), тем меньше отказов страниц.
Пример работы алгоритма
(рис 18.9) Пример работы алгоритма FIFO.
На рис 18.10 изображен график зависимости числа отказов страниц от числа фреймов при алгоритме
(рис 18.10) Аномалия Belady при использовании алгоритма FIFO замещения страниц.
Одна из возможных
Рассмотрим пример применения данного алгоритма с той же строкой запроса и с четырьмя максимально возможными фреймами у каждого процесса:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Нетрудно видеть, что будет иметь место всего 6 отказов страниц (в отличие от алгоритма
Пример использования оптимального алгоритма замещения страниц с той же
строкой запроса, которая применялась на рис 18.9 для алгоритма
(рис 18.11) Пример использования оптимального алгоритма замещения страниц.
Данный алгоритм замещения страниц основан на следующем принципе: Замещается та страница, которая раньше всего использовалась.
Для примера со строкой запросов: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 число отказов страниц равно всего 4.
Однако следует иметь в виду, что использование системой информации о времени последнего обращения к странице требует хранения в каждом элементе
Если требуется изменение в конфигурации страниц, необходимо проанализировать поля счетчиков всех элементов
Пример использования алгоритма замещения страниц
(рис 18.12) Пример использования алгоритма замещения страниц LRU.
Для оптимизации данного алгоритма, чтобы избежать поиска минимального элемента
На рис 18.13 приведен пример использования стека в алгоритме
(рис 18.13) Использование стека в алгоритме LRU для хранения самых недавних обращений к страницам.
Имеется несколько алгоритмов, близких к алгоритму
Данный алгоритм имеет следующее эвристическое обоснование. Странице, которая дольше всего не использовалась, как бы дается второй шанс на то, что она будет использована, т. е. делается эвристическое предположение, что, по мере возрастания времени, вероятность обращения к странице, к которой давно не было обращений, возрастает.
Схема алгоритма второго шанса изображена на рис 18.14.
(рис 18.14) Алгоритм второго шанса.
Идея, родственная идее алгоритма
До сих пор мы рассматривали алгоритмы замещения страниц при определенном числе фреймов, выделенных каждому процессу. Рассмотрим теперь стратегии выделения фреймов. При их выделении ОС исходит из того, чтобы каждому процессу выделить минимально необходимое число страниц.
Однако различные аппаратные платформы имеют свои особенности, что тоже приходится учитывать. Например, в системе IBM 370 требуется 6 (!) страниц, чтобы обработать команду MOVE (пересылки) формата SS (Storage-Storage). В самом деле, длина команды - 6 байтов, так что она может размещается на двух соседних страницах. Кроме того, максимум две страницы требуются для обработки источника и максимум две страницы – для обработки получателя. Разумеется, подобный казус не может произойти в
В операционных системах используются две основных схемы выделения фреймов - фиксированное выделение и выделение по приоритетам.
Фиксированное выделение фреймов.Наиболее простой вариант - равномерное распределение фреймов процессам. Например, если имеется
100 фреймов и 5 процессов, каждому выделяется по 20 страниц. Используется также пропорциональное распределение – выделять фреймы в соответствии со следующим
принципом: если общее число фреймов m, размер процесса – s, а
общий размер всех процессов – S, то общее число фреймов, выделенных процессу, равно:
a = m * (s / S).
Выделение по приоритетам.Принцип данного распределения фреймов следующий: применять схему пропорционального распределения, но используя приоритеты, а не размер. Если процесс генерирует отказ страницы, то для замещения выделяется фрейм из процесса с более низким приоритетом.
Глобальное и локальное распределение. Глобальное замещение фреймов означает, что процесс выбирает фрейм для замещения среди всех существующих фреймов всех процессов, т.е. один процесс может взять фрейм у другого. Локальное замещение фреймов, наоборот, гарантирует, что каждый процесс выбирает фрейм для замещения только из числа выделенных ему фреймов.
Данный термин буквально означает метание, тряска.Если процессу не выделено достаточное число страниц, коэффициент отказов страниц очень высок. Это приводит к тому, что процесс занят в основном откачкой и подкачкой страниц. При этом ОС может сделать неверное заключение о низкой производительности использования процессора и, следовательно ... принять решение об увеличении
Неформально,
Другой реальный пример – использование ОС Windows XP (
На рис 18.15 приведен график зависимости использования процессора от
(рис 18.15)
Если более глубоко проанализировать ситуацию с
Выражаясь более простым языком,
Для борьбы с подобными явлениями в операционных системах для распределения фреймов используется модель рабочего множества. Обозначим через $$\Delta$$ (рабочее множество) фиксированное число обращений к страницам.
Рассмотрим WSSi (рабочее множество процесса Pi ) - общее число
обращений к страницам в самой недавней $$\Delta$$ (меняется в зависимости от времени).
Если $$\Delta$$ очень мало, не рассматриваем полную локальную потребность.
Если $$\Delta$$ слишком велико, рассматриваем несколько локальных потребностей.
Если $$\Delta = \infty$$, рассматриваем всю программу.
Вычислим величину $$D = \sum WSS_{i}$$ - общий объем
требований фреймов всех процессов. Пусть m – размер основной памяти.
Если D > m то ( m - общий размер памяти).
Политика ОС по борьбе с
Пример использования рабочего множества и вычисления .
(рис 18.16) Пример использования рабочего множества.
ОС Windows NT использует
В ОС Solaris поддерживается список свободных страниц для выделения процессам, в которых происходят отказы страниц. Используется lotsfree – пороговый параметр для начала подкачки страниц. Управление страницами выполняет процесс pageout. Процесс pageout сканирует страницы, используя модифицированный алгоритм, основанный на показаниях часов. Используется также scanrate – коэффициент, характеризующий процесс сканирования. Диапазон - от slowscan до fastscan. Процесс pageout вызывается более часто, в зависимости от размера свободной памяти.
mmap (memory map) – команда и
Thrashing – ситуация критической нехватки основной памяти в системе, при которой процессор занят в основном откачкой и подкачкой страниц.
Алгоритм FIFO (First-In-First-Out) замещения страниц - наиболее простой алгоритм замещения страниц, при котором в качестве жертвы всегда выбирается фрейм, первым из имеющихся считанный в
Алгоритм Least Frequently Used (LFU) замещения страниц – алгоритм, при котором замещается страница с минимальным значением счетчика обращений (к которой было меньше всего обращений).
Алгоритм Least Recently Used (LRU) замещения страниц – алгоритм, при котором замещается та страница, которая раньше всего использовалась.
Алгоритм Most Frequently Used (MFU) замещения страниц – алгоритм, при котором замещается страница с максимальным значением счетчика обращений (к которой было больше всего обращений).
Алгоритм второго шанса (second chance) при замещении страниц – алгоритм, в котором замещается не та страница, к которой дольше всего не было обращения, а следующая за ней по списку страниц, упорядоченному в порядке возрастания времен обращений.
Аномалия Belady – рост числа отказов страниц в алгоритме FIFO при четырех свободных фреймах у процесса, по сравнению с числом отказов страниц при трех свободных фреймах.
Бит модификации - бит элемента
Бит ссылки (reference bit) – бит элемента
Бит "valid/invalid" – бит элемента
Виртуальная память – метод
Выделение фреймов по приоритетам – выделение процессам фреймов страниц в основной памяти, в соответствии с
Глобальное выделение фреймов – выделение процессам фреймов страниц в основной памяти, при котором набор свободных фреймов – общий для всех процессов, так что один процесс может взять фрейм у другого.
Замещение страницы (page replacement) – подкачка операционной системой страницы, к которой произошло обращение, вместо другой страницы, с откачкой последней, если она требуется.
Копирование при записи (Copy-on-Write) – стратегия создания процесса, при которой новый процесс разделяет адресное пространство с процессом-родителем до первой записи в адресное пространство, после чего для дочернего процесса создается новое адресное пространство – копия родительского.
Коэффициент отказов страниц (Page Fault Rate) – число от 0 до 1, характеризующее вероятность отказа страницы.
Локальное выделение фреймов – выделение процессам фреймов страниц в основной памяти, при котором наборы свободных фреймов выделяются для каждого процесса отдельно.
Оптимальный алгоритм замещения страниц - алгоритм замещения страниц, при котором замещается та страница, которая не использовалась в течение наибольшего периода времени.
Отказ страницы ( page fault) – прерывание по отсутствию страницы в основной памяти.
Пропорциональное выделение фреймов – выделение процессам фреймов страниц в основной памяти, пропорционально размерам процессов в памяти.
Рабочее множество – набор страниц, используемых процессом.
Сегментная организация по требованию (segmentation on demand) – метод организации виртуальной памяти, основанный на сегментной организации, при котором каждый сегмент загружается в память, только если он реально требуется при выполнении программы – содержит код или данные, к которым произошло обращение.
Страничная организация по требованию (paging on demand) – метод организации виртуальной памяти, основанный на
Файл, отображаемый в память (Memory-Mapped File) – файл, блоки которого отображены в
Фиксированное выделение фреймов – выделение фреймов страниц в основной памяти процессам либо равномерно, либо пропорционально размерам процессов в памяти.
Эффективное время доступа (Effective Access Time - EAT) –
При обработке ситуации отказа страницы ОС находит фрейм в основной памяти и подкачивает в него страницу с диска. При отсутствии свободного фрейма выполняется алгоритм замещения страниц – выбор фрейма-жертвы (по какому-либо критерию), откачка его на диск и подкачка на освободившееся место адресуемой страницы.
При замещении страниц на диск откачиваются только модифицированные страницы (для их указания используется
Число отазов страниц обратно пропорционально зависит от числа свободных фреймов у каждого процесса: чем больше фреймов, тем меньше отказов страниц. Исключение –
Используются следующие алгоритмы замещения страниц:
Выделение процессам фреймов в основной памяти для размещения страниц выполняется равномерно (выделяется одинаковое число фреймов), пропорционально размерам процессов, по приоритетам, локально (для каждого процесса свой список свободных фреймов) или глобально (общий список свободных фреймов для всех процессов).
В Windows NT каждый процесс имеет минимум и максимум элементов рабочего множества. Если объем свободной памяти меньше некоторого критического порога, рабочие множества всех процессов сокращаются.
В системе Solaris имеется пороговое значение для подкачки страниц; управление страницами выполняется на основе модифицированных показаний часов.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.