Способы управления памятью.

Общие принципы организации управления оперативной памятью

 

Способы управления памятью.

Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)

Простое непрерывное распределение – это самая простая схема, согласно которой вся память может быть условно разделена на три части:

область, занимаемая операционной системой;

область, в которой размещается исполняемая задача;

незанятая ничем (свободная) область памяти.

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

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

Такая схема влечет за собой два вида потерь вычислительных ресурсов – потеря процессорного времени, потому что процессор простаивает, пока задача ожидает завершения операции ввода/вывода, и потеря самой оперативной памяти, потому что далеко не каждая программа использует всю память, а режим работы в этом случае однопрограммный. Подобную схему распределения памяти поддерживает DOS.

Метод распределения памяти с перекрытием – оверлейные структуры (overlay – перекрытие, расположение поверх чего-то) – предполагает, что вся программа может быть разбита на части – сегменты. Каждая оверлейная программа имеет одну главную часть (main) и несколько сегментов (segment), причем в памяти компьютера одновременно могут находиться одна главная ее часть и один или несколько не перекрывающихся сегментов. Пока в оперативной памяти располагаются выполняющиеся сегменты, остальные находятся во внешней памяти. После того, как текущий (выполняющийся) сегмент завершит свое выполнение, возможны два варианта. Либо он сам (если данный сегмент не нужно сохранять в памяти в его текущем состоянии) обращается к ОС с указанием, какой сегмент дожжен быть загружен в память следующим. Либо он возвращает управление главному сегменту задачи (в модель main), и уже тот обращается к ОС с указанием, какой сегмент сохранить, а какой сегмент загрузить в оперативную память, и вновь отдает управление одному из сегментов, располагающихся в памяти. Простейшие схемы сегментирования предполагают, что в памяти в каждый конкретный момент времени может располагаться только один сегмент (вместе с модулем main). Более сложные схемы, используемые в больших вычислительных системах, позволяют располагать по несколько сегментов.

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

Распределение со статическими и динамическими разделами.

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

Исходные данные.

Предполагается, что уровень мультипрограммирования (т.е. количество одновременно выполняющихся заданий) ограничен только числом самих заданий.

Полный объем доступной памяти ЭВМ предполагается равным 56000 байт; ОС занимает первые 10000 байт. Память, не занятая ОС, состоит из 4-х разделов. Раздел 1 начинается с адреса 10000 сразу за ОС и имеет длину 18000 байт. Раздел 2-3 – по 10000 байт каждый. Раздел 4 – 8000 байт.

 

 

В простой схеме распределения с разделением фиксированного размера каждое входящее задание загружается в наименьший подходящий по объему раздел. Если размер раздела превосходит размер задания, то оставшееся внутри раздела память не используется. Система, имея вначале пустыми все 4-е раздела, первым делом загрузит задание 1 в раздел 2. Затем задание 2 будет загружено в единственно достаточно большой для него раздел 1. Задание 3 и 4 загружаются в разделы 3 и 4. После этого все разделы оказываются занятыми, поэтому больше заданий загрузить нельзя.

Однажды загруженное в раздел задание остается там до конца своего выполнения. После того как задание завершится, занимаемый им раздел вновь становится доступным для использования.

По окончании задания 2 в раздел 1 загрузится задание 5.

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

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

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

Основным недостатком такого метода распределения памяти является большая ее фрагментация. Сократить потери в использовании оперативной памяти можно двумя способами:

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

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








Дата добавления: 2017-11-04; просмотров: 770;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.