- •Глава 7. Виртуальная память
- •7.1 Концепция виртуальной памяти
- •7.2. Организация виртуальной памяти
- •7.3. Пространство адресов
- •7.4. Эффективность виртуальной памяти
- •7.5. Достоинства виртуальной памяти
- •Упрощение выделения дополнительной физической оперативной памяти
- •7.6. Типы организаций виртуальной памяти процесса
- •7.7. Страничная организация виртуальной памяти
- •7.8. Сегментная организация виртуальной памяти
- •7.9. Сегментно-страничная организация виртуальной памяти
7.6. Типы организаций виртуальной памяти процесса
Различают следующие типы организации виртуальной памяти процесса:
непрерывная (flat);
сегментная;
страничная;
сегментно-страничная.
При непрерывной организации программист рассматривает виртуальное адресное пространство как непрерывную последовательность адресов.
При сегментной организации виртуальное адресное пространство процесса состоит из множества виртуальных адресных пространств, или сегментов. Сегменты могут иметь разные (фактически динамические) размеры. Обращения к виртуальной оперативной памяти используют адреса, представляющие собой пары - номер сегмента (номер виртуального адресного пространства) и смещение.
7.7. Страничная организация виртуальной памяти
Программист создает программу в соответствии со своим видением модели оперативной памяти компьютера. Он считает, что в его распоряжении имеется виртуальное адресное пространство необходимого размера N (в виде виртуальной оперативной памяти из N последовательно расположенных ячеек размером 1 байт каждая.) До начала выполнения программа находится на диске.
Распорядителем всех реальных ресурсов в компьютере является операционная система. Ей удобно рассматривать как реальное адресное пространство физической оперативной памяти, так и виртуальное адресное пространство программ на диске, как последовательность блоков (страниц) достаточно большого фиксированного размера (например, 4К байт).
Поэтому операционная система в любой момент времени считает, что :
виртуальное адресное пространство программы разбито на три непересекающихся подмножества страниц:
незанятые страницы, которые не были задействованы программистом. Эти незанятые страницы не содержат команд и данных и, таким образом, не занимают физическое пространство на диске.
страницы, которые на текущий момент времени находятся в физической (реальной) оперативной памяти);
страницы, которые на текущий момент времени находятся не в физической оперативной памяти, а на диске.
физическое адресное пространство разбито на n физических адресных пространств, где n – это количество процессов, загруженных в реальную оперативную память .
При запуске любой программы операционная система выделяет необходимый объем реальной оперативной памяти в виде некоторого количества физических страниц, в которые будет загружена часть запускаемой программы (или вся программа, если это возможно). Выделяемые программе физические страницы не обязательно располагаются последовательно в физическом адресном пространстве реальной оперативной памяти.
Виртуальные страницы располагаются последовательно в виртуальном адресном пространстве. Каждая виртуальная страница может быть загружена операционной системой в любую физическую страницу. Операционная система создает структуры (например, таблицы страниц), в которых фиксируется соответствие между виртуальными и физическими страницами.
Операционные системы каждому процессу предоставляют отдельную таблицу страниц и, следовательно, отдельное виртуальное адресное пространство.
При выполнении программы при каждом обращении в оперативную память определяется находится (кэширована) ли виртуальная страница в реальной оперативной памяти. Если да, то в какой физической странице она находится. Если нужная виртуальная страница отсутствует, то:
необходимо определить, в каком месте диска хранится эта виртуальная страница;
подготовить для нее физическую страницу (если есть свободные страницы физической памяти, то назначить одну из них;
если свободных физических страниц нет, то выбрать в физической оперативной памяти страницу, которую можно удалить) и скопировать виртуальную страницу с диска в физическую оперативную память на место удаленной страницы.
Эти возможности обеспечиваются некоторым сочетанием программного обеспечения операционной системы, аппаратных средств преобразования виртуальных адресов в физические адреса блока управления памятью и таблицы страниц, которая отображает виртуальные страницы на физические страницы. Аппаратные средства преобразования адресов обращаются к таблице страниц каждый раз, когда нужно преобразовать виртуальный адрес в физический адрес. Операционная система отвечает за поддержку содержимого таблицы страниц и за передачи страниц в обоих направлениях между диском и физической оперативной памятью.
