Лабораторный практикум по курсу "Операционные системы"
Другим способом борьбы с внешней фрагментацией является сжатие, то есть перемещение
всех занятых (свободных) участков в сторону возрастания (убывания) адресов, так, чтобы
вся свободная память образовала непрерывную область. Этот метод иногда называют схемой
с перемещаемыми разделами. В идеале фрагментация после сжатия должна отсутствовать.
Сжатие, однако, является дорогостоящей процедурой, алгоритм выбора оптимальной
стратегии сжатия очень труден, и, как правило, сжатие осуществляется в комбинации с
выгрузкой и загрузкой по другим адресам.
Схема с использованием виртуального адресного пространства на основе
страничного преобразования
При помощи виртуальной памяти обычно решают две задачи. Во-первых, виртуальная
память позволяет адресовать пространство, гораздо большее, чем емкость физической
памяти конкретной вычислительной машины. Во-вторых, обычно для реальных программ
действует принцип локальности (в течение какого-то отрезка времени ограниченный
фрагмент кода работает с ограниченным набором данных), и нет необходимости в
помещении их в физическую память целиком.
Возможность выполнения программы, находящейся в памяти лишь частично имеет ряд
вполне очевидных преимуществ.
- Программа не ограничена величиной физической памяти.
- Упрощается разработка программ, поскольку можно задействовать большие виртуальные
пространства, не заботясь о фактическом размере используемой памяти.
- Поскольку появляется возможность частичного помещения программы (процесса) в
память
и гибкого перераспределения памяти между программами, можно разместить в памяти
больше программ, что увеличивает загрузку процессора и пропускную способность системы.
- Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в
варианте классического свопинга, в итоге, каждая программа будет работать быстрее.
Таким образом, возможность обеспечения (при
поддержке операционной системы) для
программы видимости практически неограниченной (32- или 64-разрядной) адресуемой
пользовательской памяти при наличии основной памяти существенно меньших размеров -
очень важный аспект. Но введение виртуальной памяти позволяет решать другую не менее
важную задачу: обеспечение контроля доступа к отдельным блокам памяти и в частности
защиту пользовательских программ друг от друга
и защиту ОС от пользовательских
программ.
Напомним, что в системах с виртуальной памятью те адреса, которые генерирует программа,
называются виртуальными, и они формируют виртуальное адресное пространство, которое
посредством страничного преобразования с использованием таблиц страниц отображается на
физические устройства хранения информации. Дополнительно отметим, что внутри ВАП
может быть организовано как линейная схема
адресации, так и сегментная. В последнем
случае приложение использует адреса в виде пары (идентификатор/селектор сегмента,
смещение), которые сначала проходят через сегментное преобразование, формируя
линейный адрес ВАП, который затем проходит через страничное преобразование, формируя
физический адрес. Сегментно-страничная организация виртуальной памяти позволяет
совместно использовать одни и те же сегменты данных
и программного кода в виртуальной
памяти разных задач (для каждой виртуальной памяти создается отдельная таблица
сегментов, но для совместно используемых сегментов поддерживаются общие таблицы
страниц).
56 Учебно-исследовательская лаборатория «Информационные технологии»