Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Динамическое распределение памятиВ составе людой ОС имеется подсисистема распределения ОП, поскольку ни один процесс не может развиваться без ресурса ОП. Вместе с тем, алгоритмы, по которым происходит распределение памяти, очень разнообразны. ОП распределяется статически на уровне долгосрочного планирования для исполнения в отведенной области (или областях) программ т размещения данных, относящихся к одному заданию. Область памяти будем называть зоной. Внутри зоны память распределяется динамически на уровне краткосрочного планирования. В любой момент времени все пространство памяти представляет собой чередующуюся последовательность из занятых (распределенных) и свободных (не распределенных) участков памяти. Последние образно называют «дырами». Задача распределения, решаемая на уровнях как долгосрочного, так и краткосрочного планирования, распадается на три взаимосвязанные задачи: учета, выделения, возврата. Решение задачи выделенияпроисходит всякий раз, когда требуется выделить некоторую область памяти для отдельного задания или процесса в составе задания по запросу на память. В наиболее простых случаях выбеление требуемого непрерываного участка памяти происходит из резерва свободной памяти, представленной в некотором порядке совокупностью дыр. По определнным правилам выбирают дыру, в составе которой и выделяется участок памяти требуемого размера. Более сложные алгоритмы распределения предполагают выделение участка памяти даже в том случае, когда из числа имеющихся дыр ни одна не пригодна (мала) для распределения. Тогда распределение может происходить, если это допустимо в системе, за счет некоторого перемещения занятых участков и дыр с целью получения дыры большего размера. Возможно выделение памяти непрерывным участком состоящим из некоторого числа чередующихся и физически смежных дыр и занятых участков. При этом требуется обеспечить сохранность информации, находящейся в занятых участках в распределяемой области, и возможность ее дальнейшего использования. Напрмер, информация м.б. переписана во ВП с последующим возвратом по мере необходимости. Задача возвратарешается при освобождении занятых участков. Требование на освобождение могут исходить от процессов, когда оно отказываются от некоторой части ресурса ОП. Могут быть освобождения, которые не инициируются процессами, а проводятся ОС без их ведома, напрмер в случае решения задачи выделения памяти за счет ее перераспределения. При решении поставленных задач стремяться в пределах возможного минимизировать время их решения. При этом, как правило, улучшение временных параметров за счет некоторого алгоритма в рамках одной задачи приводит к ухудшению этих параметров при решении других задач. Пусть имеется неупорядоченный список свободных участков с указанием адреса начала и размера участка. При освобождении занятого участка информация о нем заносится в конец списка. На это требуется минимальное время, но при поиске подходящего участка необходимо будет просмостреть весь список. Если список упорядочить по размеру участков, то время поиска сократится, но возрастет время на решение задачи учета и возврата. Другой объект минимизации - потери памяти, возможные при использовании любого алгоритма. Наиболее часто это проявляется в том, что в результате длительной работы системы распределения памяти наблюдается явление фрагментации. В результате этого ВС не использует определенный процент объема ОП. Если не предпринять каких-либо действий, то потери могут быть ощутимыми. Каждому алгоритму распределения свойственны потери, возникающие из-за фрагментации, в различных условиях разные. Для мультипрограммной обработки отдельных заданий необходимо предусмостреть ряд необходимых условий. Одно из них - держать «под рукой», в ОП программы и данные, относящиеся к разным заданиям, с тем, чтобы быстро обеспечивать переключение процессора между ними. Наиболее простое решение - разбить все адресное пространство ОП до начала работы ОС на фиксированное число зон (в других ОС - разделы). Разделы определяются своими границами. Основной задачей при таком распределении памяти явлется защита разделов. Это в основном производится средствами защиты самого процессора. ОС фиксирует попытки нарушения защиты и производит нейтрализующие действия. Другой задачей является определение размера и числа разделов. При самом простом механизме мультипрограммирования фиксируется количество, размер и размещение разделов. Такие разделы в некотором смысле постоянны. Будем называть такой способ распределением с фиксированными границами. Средний размер раздела определяется их количеством и размером наличной памяти. Задания большого размера могут занять несколько смежных разделов, в результате чего неиз бежно возникают потери памяти за счет фрагментации. Чтобы избавиться от фрагментации, можно размещать в ОП столько заданий, сколько помещается в ней в данный момент времени. Существуют много дисциплин размещения, но все они основаны на принципе изменения размещения задания в памяти, что вызывает необходтмость в соответсвующей настройке. От фрагментации можно избавиться, если формировать разделы, точно соответствующие размеру задания. Для загрузки программ в память необходима специальная управляющая программа, называемая планировщиком памяти, которая находит область памяти, достаточную для размещения данного задания, и устанавливает границы, образуя тем самым раздел. В функции планировщика памяти входит построение списка адоесов свободной памяти, выделение раздела для каждого задания, которое нужно загрузить, и освобождение раздела, занимаемого завершившимся заданием. При постоянном перераспределении памяти удобно использовать разделы с подвижными границами.Данный способ распределения памяти является средством только локальной оптимизации, так как наилучшее распределение памяти осуществляется только для отдельного задания, а не для всех в целом. Наиболее глобальным средством оптимизации распределения памяти является использование подвижных разделов. При этом способе распределения разделы размещаются в непрерывных областях, без фрагментации. Но это требует постоянной корректировки адресов начала раздела и перезаписи информации при освобождении памяти. Рассматривая ВП как расширение ОП, можно повысить эффективность использования последней как в случае простого распределения, так и в случае распределения с несколькими разделами. Тогда при перемещении задания из одного раздела в другой его можно не копировать непосредственно, а записывать сначала во ВП. Такое действие называется откачкой, а соответсвующая загрцзка задания из ВП в ОП - подкачкой, которая требует специальных аппаратных средств. Совокупность действий составляет своппинг (перекачка). Он полезен тем, что позволяет заново распределять память для задания, не запуская его с самого начала. Такое повторное распределение ранее выделенных и еще находящихся в использовании ресурсов называется перераспределением, и его можно использовать для обслуживания высокоприоритетных процессов или для предотвращения т.н. дедлоков (тупиковых ситуаций). Наиболее оптимальным распределением ОП при мультипрограммной обработке является организация виртуальной памяти.
Дата добавления: 2014-11-24; просмотров: 362; Нарушение авторских прав Мы поможем в написании ваших работ! |