Особенности использования перемещаемых разделов при управлении оперативной памятью: Одним
из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших
или младших адресов, так, чтобы вся свободная память образовала единую свободную область. В
дополнение к функциям, которые выполняет операционная система при распределении памяти
динамическими разделами, в данном случае она должна еще время от времени копировать содержимое
разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта
процедура называется сжатием. Сжатие может выполняться либо при каждом завершении процесса,
либо только тогда, когда для вновь создаваемого процесса нет свободного раздела достаточного
размера. В первом случае требуется меньше вычислительной работы при корректировке таблиц
свободных и занятых областей, а во втором — реже выполняется процедура сжатия.
Так как программы перемещаются по оперативной памяти в ходе своего выполнения, то в данном
случае невозможно выполнить настройку адресов с помощью перемещающего загрузчика. Здесь более
подходящим оказывается динамическое преобразование адресов.
Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может
потребовать значительного времени, что часто перевешивает преимущества данного метода.
Концепция сжатия применяется и при использовании других методов распределения памяти, когда
отдельному процессу выделяется не одна сплошная область памяти, а несколько несмежных участков
памяти произвольного размера (сегментов). Такой подход был использован в ранних версиях OS/2, в
которых память распределялась сегментами, а возникавшая при этом фрагментация устранялась путем
периодического перемещения сегментов.