6. Классы систем с виртуальной памятью.
- основанные на страницах;
- основанные на сегментах;
- гибридные (сегмент включает целое число страниц);
Организация страничной виртуальной памяти
Физическая и виртуальная память разбивается на блоки, называемые страницами, содержащими одно и тоже число байт. Страницам виртуальной и физической памяти присваиваются номера. Каждая физическая страница способна хранить одну из виртуальных страниц. Порядок расположения (нумерация) байт в виртуальной и физической страницах сохраняется одним и тем же.
Прерывание отсутствия страницы
Если имеется обращение к странице, то первое такое обращение вызовет прерывание операционной системы: прерывание отсутствия страницы.
Алгоритм обработки:
- ОС принимает решение: если некорректный номер страницы –
ошибка; если страница отсутствует в памяти – продолжаем. - Получение свободного страничного кадра.
- Загрузка страницы с диска.
- Изменение служебных битов в таблице страниц, например, бита
присутствия в памяти. - Перезапуск инструкции, приведшей к прерыванию.
Запись (entry) таблицы страниц
Элементы, общие для большинства реализаций:
- Номер страничного кадра.
- Present/Absent – бит присутствия в ОП.
- Protection bits (Read/Write/Execute) – права чтения, записи, выполнения.
- Modified bit (Dirty bit) – w – страница была изменена, выставляется при записи на страницу. Если не выставлен, то страничный кадр можно не перезаписывать на жесткий диск.
- Referenced bit – r/w – страница была прочитана или изменена (используется в алгоритмах вытеснения страниц на жесткий диск).
- Caching disabled – запрет кэширования (например, при работе с устройствами ввода/вывода).
Элементы, присутствующие в некоторых реализациях:
- ASID (Address Space ID) для каждого процесса, что позволяет организовать разделение объекта между небольшой группой процессов. Используется, например, в MIPS R10000.
- Global bit – игнорирование поля ASID. В таком случае область памяти доступна всем процессам.
- Valid bit – запись содержит корректное отображение.
Проблема фрагментации
- Порядка 25% памяти оказывается непригодной для выделения при swapping’e.
- Сжатие – перенос программы на другие адреса.
- Внешняя фрагментация представляет собой неиспользуемое пространство между блоками.
- Внутренняя фрагментация – неиспользуемое пространство внутри блока.
Влияние размера страницы
- Большой размер страницы (32 Кб) приводит к большим издержкам из- за внутренней фрагментации.
- Большой размер может ухудшить время запуска мелких процессов.
- Большой размер сокращает число промахов буфера быстрого преобразования адреса (TLB) из-за увеличения отображаемой памяти. Может положительно сказаться на числе попаданий при кэшировании.
- Малый размер страницы увеличивает размер таблицы страниц.
- Малый размер приводит к неэффективному использованию пропускной способности жесткого диска.
Вызов страниц по требованию и рабочее множество
- Вызов страниц по требованию, по сути «ленивый» подход. Вопрос о целесообразности его применения имеет место только при запуске программы.
- Рабочее множество – набор страниц, использовавшихся в последние k обращений.
- Предзагрузка страниц – техника, используемая для сокращения числа страничных прерываний, происходящих при запуске процесса. Суть состоит в загрузке всех или части страниц, которые понадобятся процессу (т.е. рабочего множества), до того момента как к ним произойдет обращение.
Сегментация
Сегментация позволяет организовать несколько адресных пространств. Адресация осуществляется путем указания номера сегмента и адреса внутри
сегмента.
Преимущества:
- Упрощение связывания процедур.
- Если процедура в некотором сегменте изменялась и перекомпилировалась, то остальные можно не трогать.
- Облегчение разделения общих процедур и данных между несколькими программами.
- Разные сегменты могут иметь разные виды защиты. Например, кодовый сегмент допускает только считывание и выполнение, для массивов данных – запись и считывание и т.д.
Реализация сегментации:
- Таблица сегментов – структура, хранящая для каждого сегмента его начальный физический адрес (базу), длину и свойства.
- Смещение логического адреса должно быть меньше размера сегмента, иначе будет выброшено исключение защиты.
Гибридная модель - сегменты, разбитые настраницы.
Параметр | Страничная | Сегментная |
---|---|---|
Слов на адрес | 1 | 2 (сегмент, смещение) |
Видимость для программиста | Нет | Да |
Замена блока | Тривиальная | Сложна (приходится искать свободный непрерывный блок памяти заданной длины) |
Назначение технологии | Имитация памяти большего размера | Предоставление нескольких адресных пространств |
Простота управления структурами переменного размера | Нет | Да |
Неэффективность использования памяти | Внутренняя фрагментация | Внешняя фрагментация |
Эффективность дискового траффика | Да | Не всегда (для мелких сегментов не эффективно) |