Управление памятью

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

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 15.12.2011
Размер файла 21,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Управление памятью

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

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

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

Если не принимать во внимание программирование на машинном языке, то можно сказать, что программист обращается к памяти с помощью некоторого набора логических имен, которые чаще всего являются символьными. Имена переменных составляют пространство символьных имен. Иногда это адресное пространство называют логическим.

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

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

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

Для того чтобы для задач отвести как можно больший объем памяти, операционная система строится таким образом, чтобы постоянно в оперативной памяти располагалась только самая нужная ее часть. Эту часть операционной системы стали называть ядром.

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

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

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

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

Основное применение свопинг находит в системах разделения времени.

В начале каждого временного кванта блок управления памятью выгружает из основной памяти процесс, работа которого была только что прервана, и загружает очередной выполненный процесс.

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

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

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

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

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

Пример фиксированного распределения 64 Мб памяти

Операционная система

8 м

8 м

8 м

8 м

8 м

8 м

8 м

Операционная система

8 м

2 м

4 м

8 м

8 м

12 м

16 м

а) Разделы одинакового размера б) Разделы разных размеров

память оперативный разделение процесс

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

При использовании разделов с одинаковым размеров возникает две трудности:

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

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

- Использование основной памяти при этом крайне неэффективно. Любая программа, независимо от ее размера, занимает раздел целиком. Феномен появления неиспользованной памяти из-за того что загружаемы блок по размеру меньше раздела, называется внутренней фрагментацией.

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

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

Хотя этот метод представляется оптимальным с точки зрения отдельного раздела, он не оптимален с точки зрения системы в целом. Представим. Что в системе в некоторый момент времени нет ни одного процесса размером от 12 до 16 Мб. В результате раздел размером 16 Мб будет пустовать, в то время как он мог бы с успехом использоваться меньшими процессами.

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

Использование разделов разного раздела по сравнению разделов одинакового размера придает дополнительную гибкость данному методу.

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

Операционная

Система

8 Мб

Операционная

система

8 Мб

Операционная

система

8 Мб

Операционная

Система

8 Мб

Процесс 1

20Мб

Процесс 1

20Мб

Процесс 1

20Мб

56Мб

36Мб

Процесс 2

14Мб

Процесс 2

14Мб

22Мб

Процесс 3

18Мб

4мб

а) б) в) г)

Операционная

Система

8 Мб

Операционная

система

8 Мб

Операционная

система

8 Мб

Операционная

Система

8 Мб

Процесс 1

20мб

Процесс 1

20Мб

20Мб

Процесс 2

14Мб

14Мб

Процесс 4

8Мб

6Мб

Процесс 4

14Мб

6Мб

6Мб

Процесс 4

8Мб

Процесс 3

18Мб

Процесс 3

18Мб

Процесс 3

Процесс 3

18 Мб

18Мб

4Мб

4Мб

4Мб

4Мб

д) е) ж) з)

Изначально вся память пуста, за исключением области, используемой операционной системой ( п. а).

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

В некоторый момент все процессы в памяти оказываются неактивными, и операционная система выгружает второй процесс (п. д), после которого остается достаточно памяти для загрузки нового, четвертого процесса (п. е). Поскольку процесс 4 меньше процесса 2, создается еще одна небольшая «дыра» в памяти. После того как в некоторый момент времени все процессы в памяти оказываются неактивными, но готов к работе процесс 2, свободного места в памяти для него не находится. Операционная система вынуждена выгрузить процесс 1, чтобы освободить необходимое место (п. ж) и разместить процесс 2 в основной памяти (п. з).

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

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

Как фиксированное, так и динамическое распределение памяти имеют свои недостатки. Фиксированное распределение ограничивает количество активных процессов и неэффективно использует память при несоответствии между размерами разделов и процессов.

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

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [708,6 K], добавлен 31.05.2013

  • Улучшение параметров модулей памяти. Функционирование и взаимодействие операционной системы с оперативной памятью. Анализ основных типов, параметров оперативной памяти. Программная часть с обработкой выполнения команд и размещением в оперативной памяти.

    курсовая работа [99,5 K], добавлен 02.12.2009

  • Хранение различной информации как основное назначение памяти. Характеристика видов памяти. Память типа SRAM и DRAM. Кэш-память или сверхоперативная память, ее специфика и области применения. Последние новинки разработок в области в оперативной памяти.

    презентация [2,1 M], добавлен 01.12.2014

  • Простейшая схема взаимодействия оперативной памяти с ЦП. Устройство и принципы функционирования оперативной памяти. Эволюция динамической памяти. Модуль памяти EDO-DRAM BEDO (Burst EDO) - пакетная EDO RAM. Модуль памяти SDRAM, DDR SDRAM, SDRAM II.

    реферат [16,1 K], добавлен 13.12.2009

  • Сравнительный анализ статической и динамической памяти. Быстродействие и потребление энергии статической памятью. Объем памяти микросхем. Временные диаграммы чтения и записи памяти. Микросхемы синхронной и асинхронной памяти. Режимы модулей памяти.

    презентация [114,2 K], добавлен 27.08.2013

  • Архитектура компьютеров и возможности операционной системы по управлению памятью. Суть концепции виртуальной памяти. Аппаратно-независимые и аппаратно-зависимые средства управления виртуальной памятью. Сегментно-страничная организации виртуальной памяти.

    презентация [355,2 K], добавлен 27.12.2010

  • Главная задача компьютерной системы. Виртуальные адресные пространства нескольких программ. Классификация методов распределения памяти. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода. Схема функционирования кэш-памяти.

    презентация [2,2 M], добавлен 14.11.2012

  • Изучение устройства и назначения оперативной памяти как части системы компьютерной памяти, предназначенной для временного хранения данных при выполнении операций процессором ПК. Произвольный доступ и характеристика основных типов ОЗУ: DIMM, DDR, FTM, EDO.

    презентация [3,9 M], добавлен 03.03.2011

  • Используемые в компьютерах устройства памяти для хранения данных. Внутренние (оперативная и кэш-память) и внешние устройства памяти. Уровни иерархии во внутренней памяти. Подключения дисководов и управления их работой с помощью дискового контроллера.

    презентация [47,7 K], добавлен 26.11.2009

  • Как осуществляется трансляция адресов при страничной организации. Что такое компактировка и как с ее помощью избавиться от внешней фрагментации. Что такое регистр таблицы страниц, сегментация. Методы распределения памяти в виде отдельных сегментов.

    контрольная работа [236,2 K], добавлен 23.12.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.