39
Методы распределения памяти, при которых задаче уже не может
предоставляться сплошная (непрерывная) область памяти, называются
разрывными. Подход требует для своей реализации больше ресурсов и
намного сложнее, однако, выделение задаче памяти фрагментами, а не
сплошной областью, позволяет уменьшить фрагментацию памяти.
Первым среди разрывных методов распределения памяти был
сегментный. Для этого
метода программу необходимо разбивать на части и
уже каждой такой части выделять физическую память. Естественным
способом разбиения программы на части является разбиение ее на логические
элементы – так называемые
сегменты. В
принципе, каждый программный
модуль может быть принят как отдельный сегмент, а вся программа будет
представлять собой множество сегментов. Каждый сегмент размещается в
памяти как до определенной степени самостоятельная единица. Логически
обращение к элементам программы в этом случае будет состоять из имени
сегмента и смещения относительно начала этого сегмента. Физически имя
сегмента (или порядковый номер) будет соответствовать некоторому адресу, с
которого этот сегмент начинается при его размещении в памяти, и смещение
должно прибавляться к этому базовому адресу. Преобразование имени
сегмента в его порядковый номер осуществит система программирования. Для
каждого сегмента система указывает его объем. ОС будет размещать сегменты
в памяти и для каждого сегмента она должна вести учет о местонахождении
этого сегмента (рисунок А.11). Информация о текущем размещении сегментов
задачи в
памяти сводится в таблицу сегментов (таблицу дескрипторов
сегментов задачи). Каждая задача имеет свою таблицу сегментов.
Увеличение
коэффициента
мультипрограммирования
позволяет
увеличить загрузку системы и более эффективно использовать ресурсы
вычислительной системы. Однако увеличивать количество задач можно
только до определенного предела, ибо если в памяти не будет хватать места
для часто используемых сегментов, то производительность системы резко
упадет, т.к. сегмент, находящийся вне ОП, для участия в вычислениях должен
быть перемещен в ОП. При этом, если в памяти есть свободное пространство,
то необходимо найти нужный сегмент во внешней памяти и загрузить его в
оперативную. А если свободного места нет, принять решение – на место
какого из сегментов будет загружаться требуемый. Перемещение сегментов из
ОП на жесткий диск и обратно называют
свопингом сегментов. Для решения
проблемы используются следующие дисциплины:
1)
правило FIFO (
First In First Out – первый пришедший первым и
выбывает) - для замещения выбирается сегмент, первым попавший в память;
2)
правило LRU (
Least Recently Used – дольше других неиспользуемый);
3)
правило LFU (
Least Frequently Used – реже других используемый);
4)
случайный (
random) выбор сегмента.
Для реализации дисциплин 2 и 3 необходимо, чтобы процессор имел
дополнительные аппаратные средства. Диспетчер памяти время от времени
40
просматривает таблицы дескрипторов исполняющихся задач и собирает для
соответствующей обработки статистическую информацию об обращениях к
сегментам. В
результате составляется список, упорядоченный либо по
длительности простоя (2), либо по частоте использования (3). Дисциплины 1
и 4 являются самыми простыми в реализации, но не учитывают, насколько
часто используется тот или иной сегмент, следовательно, диспетчер памяти
может выгрузить или расформировать тот сегмент, к которому в ближайшем
будущем будет обращение. При этом вероятность ошибки в
первом и
четвертом случаях больше, чем во втором и третьем.
Достоинства, появляющиеся при сегментном способе организации
виртуальной памяти: при загрузке программы на исполнение можно
размещать ее в
памяти не целиком, а «по мере необходимости»; некоторые
модули могут быть разделяемыми (т.к. они являются сегментами, легко
организовать доступ к этим общим сегментам с помощью указателей).
Недостатки метода: для доступа к искомой ячейке тратится много времени,
для устранения используется кэширование – размещение в сверхоперативной
памяти; несмотря на то, что наблюдается существенно меньшая
фрагментация, чем при неразрывном распределении памяти, она все же есть;
на размещение и обработку дескрипторных таблиц тратится много
процессорного времени и памяти.
Для устранения недостатков сегментного способа организации
виртуальной памяти был разработан следующий
метод разрывного
распределения памяти –
страничный.
Страничный способ организации
виртуальной памяти – это способ, при котором все фрагменты задачи
считаются равными (одинаковыми по размеру), причем длина фрагмента в
идеале должна быть кратна степени двойки, чтобы операции сложения можно
было заменить операциями конкатенации (слияния). Одинаковыми
полагаются и единицы памяти, которые предоставляются для размещения
фрагментов программы. Эти одинаковые части называют
страницами, ОП
разбивается на физические страницы, а программа – на виртуальные единицы.
Достарыңызбен бөлісу: