Методы распределения памяти. Странично-сегментное распределение. Свопинг.
Методы распределения памяти.
Необходимым условием для того, чтобы программа могла выполняться, является ее нахождение в оперативной памяти. Только в этом случае процессор может извлекать команды из памяти и интерпретировать их, выполняя заданные действия.
Все алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.
Странично-сегментное распределение.
Данный метод представляет собой комбинацию страничного и сегментного механизмов управления памятью и направлен на реализацию достоинств обоих подходов.
Так же как и при сегментной организации памяти, виртуальное адресное пространство процесса разделено на сегменты. Это позволяет определять разные права доступа к разным частям кодов и данных программы.
Перемещение данных между памятью и диском осуществляется не сегментами, а страницами. Для этого каждый виртуальный сегмент и физическая память делятся на страницы равного размера, что позволяет более эффективно использовать память, сократив до минимума фрагментацию.
Для каждого процесса операционная система создает отдельную таблицу сегментов процесса, в которой содержатся описатели (дескрипторы) всех сегментов процесса, в которых для каждого сегмента указывается:
1 - базовый адрес сегмента в оперативной памяти (начальный линейный виртуальный адрес сегмента в пространстве виртуальных адресов);
2 - размер сегмента;
3 - правила доступа к сегменту;
4 - признаки модификации, присутствия и обращения к данному сегменту, а также некоторая другая информация.
Деление общего линейного виртуального адресного пространства процесса и физической памяти на страницы осуществляется следующим образом. Размер страниц выбирается равным степени двойки, что упрощает механизм преобразования виртуальных адресов в физические. Виртуальные страницы нумеруются в пределах виртуального адресного пространства каждого процесса, а физические страницы – в пределах оперативной памяти. При создании процесса в память загружается только часть страниц, остальные загружаются по мере необходимости. Время от времени система выгружает уже ненужные страницы, освобождая память для новых страниц. ОС ведет для каждого процесса таблицу страниц, в которой указывается соответствие виртуальных страниц физическим.
Достоинство: эффективное распределение памяти и возможность контроля прав и способа доступа к данным.
Недостатки: сложность реализации.
Свопинг.
Свопинг (swapping) – реализация механизма виртуальной памяти, при которой в многозадачной ОС на диск выгружаются образы неактивных процессов целиком, а в оперативную память загружается образ активного процесса.
Достоинство: простота реализации, надёжность.
Недостаток: неэффективное использование памяти, низкая производительность.