Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 13.11.2010 | Доступ: свободный | Студентов: 6726 / 1527 | Оценка: 4.64 / 4.23 | Длительность: 45:08:00
ISBN: 978-5-9963-0495-0
Лекция 18:

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

Аннотация: В лекции рассмотрены следующие вопросы: концепция виртуальной памяти; страничная организация виртуальной памяти; обработка отсутствия страницы в памяти (page fault); обработка страниц по требованию; совместное использование страниц процессами; файлы, отображаемые в память (memory-mapped files); стратегии замещения страниц; алгоритмы FIFO и LRU; алгоритм "второго шанса"; алгоритмы со счетчиком; выделение фреймов – фиксированное и с приоритетами; thrashing; страничная организация в Windows NT и Solaris.
Ключевые слова: распределение памяти, трансляция адреса, страничная организация, создание процесса, thrashing, пространство, физическая память, виртуальная память, исполнение, организация памяти, программа, память, пользовательский процесс, ПО, fault, Размещение, таблица страниц, значение, бит, valid, invalid, логическая память, ссылка, место, алгоритм, прерывание, фрейм, стратегия замещения, время доступа, время реакции, рестарт, копирование, Write, COW, дочерний процесс, модифицируемость, файловый ввод/вывод, файл, физическая страница, доступ, read, закрытие файла, диск, подпрограмма, монитор, физический адрес, поиск, строка запроса, график, здравый смысл, основная память, FIFO, аномалия Belady, time stamp, счетчик, clocked, поле, длина, LRU, стек, вероятность, IBM, максимум, RISC, степень мультипрограммирования, автор, SPARC, Windows, service pack, Internet, коэффициент мультипрограммирования, полезность, множества, кластеризация, thresholding, список, параметр, диапазон, команда, системный вызов, процессор, управление памятью, приоритет процесса, адресное пространство, математическим ожиданием, бит модификации, исключение, бит ссылки, LFU, MFU, минимум

Презентацию к данной лекции Вы можете скачать здесь.

Введение

Виртуальная память – распространенная стратегия распределения памяти, используемая во всех современных операционных системах, основанная на идее расширения физической памяти путем размещения расширенной памяти на диске и использования таблиц страниц (или сегментов) для трансляции адресов. В лекции рассмотрены следующие вопросы:

  • Мотивировка концепции виртуальной памяти;
  • Потребность в страничной организации;
  • Создание процесса и его пространства виртуальной памяти;
  • Замена страницы;
  • Размещение фреймов;
  • Thrashing;
  • Примеры организации виртуальной памяти в различных ОС.

Мотивировка концепции виртуальной памяти

Концепция виртуальной памяти основана на идеях отделения логической памяти пользователя от физической памяти и расширения логической памяти путем хранения ее образа на диске.

При исполнении программы только часть ее кода и данных, к которым происходит обращение, в каждый момент требует размещения в физической памяти. Поэтому, естественно, возникает идея расширить пространство логической памяти, которое может быть реализовано намного большего размера, чем физическая память. Это и есть основной принцип организации виртуальной памяти.

Виртуальная память поддерживает совместное использование одного и того же адресного пространства более чем одним процессом, создание и исполнение облегченных процессов в общем пространстве виртуальной памяти.

Виртуальная память допускает более эффективное создание процесса, чем предшествующие схемы организации памяти и процессов.

Заметим, что концепция виртуальной памяти непосредственно не связана ни со страничной, ни с сегментной стратегиями распределения памяти. Виртуальная память может быть реализована различными способами, например, с помощью:

  • страничной организации по требованию (paging on demand);
  • сегментной организации по требованию (segmentation on demand).

В приведенных терминах подчеркивается динамический характер управления виртуальной памятью: термин по требованию означает, что страница или сегмент будут размещены в физической памяти только в случае, если к ним реально происходит обращение из программы пользователя. Причем если размер обрабатываемой области виртуальной памяти (например, массива) очень велик – например, 1000 страниц, то в физической памяти будет размещена только та его страница, к которой обращается пользовательская программа.

Принцип управления виртуальной памятью иллюстрируется рис. 18.1.

Виртуальная память и физическая память.

увеличить изображение
Рис. 18.1. Виртуальная память и физическая память.

Из схемы видно, что виртуальная память, как предполагается, больше, чем физическая память. Взаимодействие между частями виртуальной памяти и физической памяти происходит через отображение памяти – системную таблицу (сегментов, страниц и т.п.). Образ виртуальной памяти процесса хранится на диске.

Страничная организация по требованию

Принцип реализации виртуальной памяти в виде страничной организации по требованию заключается в том, что каждая страница загружается в память, только если она реально требуется при выполнении программы – содержит код или данные, к которым произошло обращение.

Преимущества данного подхода:

  • Меньший объем ввода-вывода: В память подкачивается только минимально необходимый объем данных (например, одна страница большого массива, а не весь многостраничный массив);
  • Меньший объем памяти: При данном способе расходуется минимально необходимый объем физической памяти;
  • Более быстрая реакция системы: Поскольку объем пересылаемых данных меньше, система в среднем быстрее реагирует на каждый запрос к памяти;
  • Система может обслуживать большее число пользователей: Ввиду экономии физической памяти и времени обращения, система в состоянии при данном подходе обслуживать большее число пользовательских процессов.

Основные принципы страничной организации по требованию:

  1. Если страница требуется программе, на нее имеется ссылка из программы.
  2. Если ссылка на страницу неверна (например, страницы с данным номером не существует), происходит прерывание.
  3. Если требуемая страница отсутствует в памяти, то она подкачивается в память. Механизм подкачки реализуется через прерывание (page fault – отказ страницы).

рис. 18.2 иллюстрирует размещение виртуальной памяти на диске и ее откачку и подкачку.

Преобразование страничной памяти в непрерывное дисковое пространство.

Рис. 18.2. Преобразование страничной памяти в непрерывное дисковое пространство.

Из схемы видно, что, с точки зрения каждой программы, пространство ее виртуальной памяти непрерывно. Оно преобразуется в непрерывную область дисковой памяти. С помощью механизма откачки – подкачки в нужный момент страница виртуальной памяти размещается в основной памяти.

С каждым элементом таблицы страниц связывается бит "valid/invalid",однако, в отличие от организации логической памяти, он играет несколько иную роль – он указывает на присутствие или отсутствие страницы в основной памяти. Значение бита равно 1, если страница в памяти, и 0, если страница отсутствует в памяти.

Первоначально для всех элементов таблицы страниц бит valid/invalid полагается равным 0.

Если в процессе трансляции адреса бит "valid/invalid" в таблице страниц оказыется равным 0, то происходит прерывание по отсутствию страницы в памяти (page fault).

На рис. 18.3 приведен пример таблицы страниц, в которой не все страницы присутствуют в основной памяти.

Пример таблицы страниц, в которой не все страницы в памяти.

Рис. 18.3. Пример таблицы страниц, в которой не все страницы в памяти.

На схеме логическия память процесса состоит из 6 страниц с номерами от 0 до 5. Однако только страницы 0, 2, 5 размещены в основной памяти (бит valid/invalid имеет значение v = 1). Страницы 1, 3, 4 в основной памяти отсутствуют (бит valid/invalid равен i = 0).

Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков