- •Раздел 5. Управление памятью в операционных системах
- •5.1. Классификация способов организации памяти
- •5.2. Управление физической памятью
- •5.2.1. Однозадачные системы
- •5.2.2. Многозадачные системы
- •5.3. Управление виртуальной памятью
- •5.3.1. Общая характеристика виртуальной памяти
- •5.3.2. Страничная организация виртуальной памяти
- •5.3.3. Сегментная организация виртуальной памяти
- •5.3.4. Стратегии управления виртуальной памятью
- •1. Выталкивание случайной страницы
- •2. Выталкивание первой пришедшей страницы
- •3. Выталкивание реже всего используемой страницы
- •4. Выталкивание дольше всех не использовавшейся страницы
- •5.4. Совместное использование памяти
- •Закрытие объекта:
- •Раздел 5
5.3. Управление виртуальной памятью
5.3.1. Общая характеристика виртуальной памяти
Определения виртуальной памяти и иерархия видов памяти
Виртуальная память - это интерфейс, предоставляемый пользователю, для обращения к физической памяти. При этом, через этот интерфейс осуществляется доступ к пространству памяти, существенно большему, чем физический.
Такая возможность обеспечивается за счет дисковой памяти. Поэтому в системах управления виртуальной памятью задействованы все уровни иерархии памяти:
----------------------
| ^ | Внешняя память |
| | ----------------------
| | ^ v
| | ----------------------
| | | Оперативная память |
| | ----------------------
| | ^ v
v | ----------------------
скорость объем | Кэш-память |
----------------------
Память любого уровня можно рассматривать как кэш памяти более высокого уровня.
Кэш-память основана на предвосхищении наиболее вероятного использования данных процессором.
Эффективность кэша зависит от:
Физических свойств;
Алгоритмов кэша;
Программы (условных переходов).
Типичный размер кэша - 1 % ОЗУ. При этом вероятность успеха при доступе составляет 90-95 %.
Особенности виртуальной памяти
Суть виртуальной памяти состоит в том, что адреса, к которым обращается процесс, отделяются от адресов, реально существующих в физической памяти.
Адреса, к которым обращается процесс, являются виртуальными адресами, а те адреса, которые существуют в физической памяти, называются реальными адресами. Причем, общее пространство виртуальных адресов может быть существенно больше пространства реальных адресов.
Таким образом, в системе существует два адреса: V - виртуальный и R - реальный. Виртуальный адрес отображается в реальный адрес с помощью “механизма отображения”.
Объект с виртуальным адресом V может находиться в любом месте с физическим адресом R, более того, этот объект может и не находиться в физической памяти. При обращении к нему в процессе выполнения программы и при обнаружении того, что объект отсутствует в физической памяти в момент обращения, запускается целый механизм загрузки объекта с диска в физическую память. После загрузки обращение к объекту производится вновь уже с положительным результатом. Причем, это делается незаметно, прозрачно для пользователя.
Способы распределения физической памяти, которые были рассмотрены ранее, относились к связанному распределению. Т.е. объект должен занимать в памяти непрерывную последовательность ячеек.
Виртуальная память снимает ограничение связанности для физической памяти. В виртуальной памяти объект должен занимать непрерывную последовательность ячеек, а в физической памяти соответствующие ячейки могут располагаться в произвольных местах.
Однако, несвязанность памяти нельзя доводить до абсурда, т. к. с увеличением степени несвязанности увеличиваются затраты на механизм отображения.
Поэтому связанность сохраняют внутри блоков виртуальной и физической памяти, а расположение последовательных блоков виртуальной памяти не требует их последовательного расположения в физической памяти.
Механизм отображения виртуальных адресов в физические
Механизм основан на ведении таблицы отображения виртуального адреса V в физический адрес R.
Предельный случай - это для каждого виртуального адреса в таблице хранить информацию о физическом адресе. Такой способ нерационален из-за большого размера таблицы отображения.
Поэтому рассматриваются блоки виртуальной памяти, которым соответствуют блоки физической памяти.
Чем больше размер блоков, тем меньше затрат на механизм отображения. Но увеличиваются затраты на обмен с внешней памятью.
Если блоки памяти могут иметь переменный размер, то говорят о сегментной организации виртуальной памяти.
Если блоки имеют фиксированный размер, то говорят о страничной организации виртуальной памяти.
Механизм же отображения один как для сегментной, так и для страничной организации.
Виртуальный адрес - это вектор:
V = (b, d),
Где: b - это номер блока;
d - это смещение внутри блока.
Фактически b - это смещение внутри таблицы отображения блоков.
Строка таблицы содержит адрес блока в памяти и другую информацию о блоке.
Схема отображения имеет следующий вид: