Распределение статическими и динамическими разделами при мультипрограммном режиме 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Распределение статическими и динамическими разделами при мультипрограммном режиме



Для организации мультипрограммного режима необходимо обеспечить одновременное нахождение в памяти нескольких задач (целиком или частями). При самой простой схеме распределения память, незанятая ядром ОС, может быть разбита на несколько непрерывных частей (зон, разделов), которые характеризуются именем, типом, границами. Разбиение памяти может быть фиксированным (статическим) или динамическим.

Разделы с фиксированными границами. Разбиение памяти может осуществляться при генерации ОС или по мере необходимости оператором системы. В каждом разделе в каждый момент времени может располагаться по одной задаче, и по отношению к каждому разделу можно применять все те методы, которые используются для однопрограммных систем. Возможно использовать оверлейные структуры, что позволяет создавать большие и сложные программы и в то же время поддерживать коэффициент мультипрограммирования на должном уровне (коэффициент мультипрограммирования – количество параллельно выполняемых программ).

При небольшом объёме памяти (и небольшом количестве разделов) можно увеличить количество параллельно выполняемых приложений за счёт свопинга. При свопинге приостановленная задача может быть целиком выгружена во внешнюю память (на диск), а на её место загружается с диска готовая к выполнению задача, находившаяся в приостановленном состоянии. Особенно эффективен такой приём в отношении интерактивных приложений, которые часто ожидают выполнения операций ввода-вывода.

Важной проблемой является защита ОС и приложений друг от друга. Одной из простейших мер является введение регистров защиты памяти, в которые ОС заносит граничные разделы области памяти текущей задачи. При нарушении адресации возникает прерывание и управление передается супервизору ОС. Для реализации функций защиты требуются специальные аппаратные механизмы.

Основным недостатком такого способа распределения является возникновение фрагментации памяти. В каждом из разделов может оставаться неиспользованная память, которая в сумме даёт весьма ощутимые потери. Но использовать эти свободные части при таком способе распределения не представляется возможным.

Для сокращения потерь были предложены варианты:

§ выделять раздел ровно такого объёма, который нужен под текущую задачу;

§ размещать задачу не в одной непрерывной области памяти, а в нескольких областях.

Разделы с подвижными границами. Чтобы избавиться от фрагментации, можно попробовать размещать в ОП задачи плотно, одну за другой, выделяя каждой столько памяти, сколько для неё требуется (Первая ОС, реализовавшая этот способ – OS MVT – "мультипрограммирование с переменным числом задач", ОС для больших ЭВМ класса IBM 360). Специальный планировщик (диспетчер памяти) ведет список адресов свободной ОП. При появлении новой задачи он просматривает этот список и выделяет для задачи раздел, объём которого равен необходимому или чуть больше, если память выделяется не ячейками, а некими дискретными единицами. При этом список свободной памяти модифицируется. При освобождении раздела диспетчер пытается объединить смежные свободные участки памяти.

Список свободных участков может быть упорядочен либо по адресам, либо по объёму. Выделение памяти под новый раздел может осуществляться одним из трёх способов:

§ первый подходящий участок;

§ самый подходящий участок;

§ самый неподходящий участок;

В первом случае список упорядочивается по адресам. Правило "первый подходящий" приводит к тому, что память для небольших задач будет преимущественно выделяться в области младших адресов и, следовательно, повысится вероятность того, что в области старших адресов будут образовываться фрагменты достаточно большого объёма. При таком способе диспетчеру приходится просматривать в среднем половину списка.

Второй вариант предполагает, что список свободных областей упорядочен по возрастанию их объёма. Тогда при просмотре списка для нового раздела будет использован фрагмент наиболее близкого размера. Просмотреть придется тоже приблизительно половину списка. Оставшийся фрагмент окажется настолько малым, что в нём уже вряд ли удастся что-то ещё разместить, кроме того, он окажется в начале списка. Поэтому в целом такой способ не является эффективным.

Самым эффективным правилом, как ни странно, является последнее. При нём список упорядочивается по убыванию объёмов свободных фрагментов. Очевидно, что такой фрагмент будет найден сразу, причем, поскольку он является самым большим, то после выделения из него раздела для задачи оставшаяся область памяти может быть ещё использована в дальнейшем.

Очевидно, что в силу того, что задачи имеют разные объёмы и появляются и завершаются в произвольные моменты времени, при любой дисциплине обслуживания всегда будет наблюдаться сильная фрагментация памяти. Возможно, что новый раздел нельзя будет образовать, несмотря на то, что суммарный объём свободной памяти окажется превосходящим тот, который необходим для задачи. В такой ситуации возможно организовать т.н. "уплотнение памяти", при котором приостанавливаются все вычисления и диспетчер памяти перемещает свободные разделы в тот или иной конец памяти с соответствующей корректировкой списков. Тогда при определении физических адресов задачи будут участвовать уже новые значения базовых регистров. Недостатками данного решения являются потери времени на уплотнение и приостановка всех процессов. В системах реального времени такой способ непригоден.

Методы распределения памяти, при которых задаче может не предоставляться сплошная область памяти, называются разрывными, или несвязными. Размещение задачи в нескольких областях требует соответствующей аппаратной поддержки – наличия относительной адресации. В настоящее время применяется сегментная, страничная и сегментно-страничная организация памяти, причём эти способы организации памяти относятся как к виртуальному, так и к физическому адресному пространству.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 701; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.91.255.225 (0.114 с.)