Слайд 2Функции ОС по управлению памятью
отслеживание свободной и занятой памяти,
выделение
памяти процессам и освобождение памяти при завершении процессов,
вытеснение процессов
из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов,
возвращение их в оперативную память, когда в ней освобождается место,
а также настройка адресов программы на конкретную область физической памяти
Слайд 5Распределение фиксированными разделами
Слайд 6Распределение фиксированными разделами
При использовании разделов с одинаковым размером имеются две
проблемы.
Программа может быть слишком велика для размещения в разделе.
В этом случае программист должен разрабатывать программу, использующую оверлеи, чтобы в любой момент времени требовался только один раздел памяти. Когда требуется модуль, отсутствующий в данный момент в ОП, пользовательская программа должна сама его загрузить в раздел памяти программы. Таким образом, в данном случае управление памятью во многом возлагается на программиста.
Использование ОП крайне неэффективно. Любая программа, независимо от ее размера, занимает раздел целиком. При этом могут оставаться неиспользованные участки памяти большого размера. Этот феномен появления неиспользованной памяти называется внутренней фрагментацией (internal fragmentation).
Слайд 7Распределение фиксированными разделами
Когда разделы имеют разные размеры, есть два возможных
подхода к назначению процессов разделам памяти.
Простейший путь состоит в
том, чтобы каждый процесс размещался в наименьшем разделе, способном вместить данный процесс (в этом случае в задании пользователя указывался размер требуемой памяти). При таком подходе для каждого раздела требуется очередь планировщика, в которой хранятся выгруженные из памяти процессы, предназначенные для данного раздела памяти. Достоинство такого способа в возможности распределения процессов между разделами ОП так, чтобы минимизировать внутреннюю фрагментацию.
Недостаток заключается в том, что отдельные очереди для разделов могут привести к неоптимальному распределению памяти системы в целом. Например, если в некоторый момент времени нет ни одного процесса размером от 7 до 12 Мбайт, то раздел размером 12 Мбайт будет пустовать, в то время как он мог бы использоваться меньшими процессами. Поэтому более предпочтительным является использование одной очереди для всех процессов. В момент, когда требуется загрузить процесс в ОП, выбирается наименьший доступный раздел, способный вместить данный процесс.
Слайд 8Распределение фиксированными разделами
Слайд 9Распределение фиксированными разделами
Преимущества:
относительно просто,
предъявляют минимальные требования к операционной системе;
накладные расходы работы процессора на распределение памяти невелики.
Однако у
этих схем имеются серьезные недостатки:
Количество разделов, определенное в момент генерации системы, ограничивает количество активных процессов (т.е. уровень мультипрограммирования).
Поскольку размеры разделов устанавливаются заранее во время генерации системы, небольшие задания приводят к неэффективному использованию памяти. В средах, где заранее известны потребности в памяти всех задач, применение рассмотренной схемы может быть оправдано, но в большинстве случаев эффективность этой технологии крайне низка
Слайд 11Динамическое распределение
Возникает внешняя фрагментация - наличие множества мелких свободных участков
памяти, в которых нет возможности разместить какой-либо новый процесс
Способ борьбы
– сжатие (уплотнение). Периодически все занятые разделы смещаются вплотную друг к другу, чтобы образовывалась единая свободная область – перемещаемые разделы
Слайд 13Перемещаемые разделы
Сжатие может выполняться либо при каждом завершении задачи, либо
только тогда, когда для вновь поступившей задачи нет свободного раздела
достаточного размера.
В первом случае требуется меньше вычислительной работы при корректировке таблиц, а во втором - реже выполняется процедура сжатия
Слайд 14Распределение памяти с использованием дискового пространства
Основано на механизме виртуальной памяти
Виртуальная
память - это совокупность программно-аппаратных средств, позволяющих пользователям писать программы,
размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:
размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;
перемещает по мере необходимости данные между запоминающими устройствами разного типа, например, подгружает нужную часть программы с диска в оперативную память;
преобразует виртуальные адреса в физические.
Слайд 15Страничное распределение
Виртуальное адресное пространство каждого процесса делится на части одинакового,
фиксированного для данной системы размера, называемые виртуальными страницами
Вся оперативная память
машины также делится на части такого же размера, называемые физическими страницами (или блоками)
Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов
Слайд 17Страничное распределение
При загрузке процесса часть его виртуальных страниц помещается в
оперативную память, а остальные - на диск
При загрузке операционная система
создает для каждого процесса информационную структуру - таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск
Слайд 18Страничное распределение
При каждом обращении к памяти происходит чтение из таблицы
страниц информации о виртуальной странице, к которой произошло обращение.
Если
данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический.
Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожидания, и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память.
Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует выгрузить из оперативной памяти
Слайд 19Страничное распределение
Может быть использовано много разных критериев выбора, наиболее популярные
из них следующие:
дольше всего не использовавшаяся страница,
первая попавшаяся
страница,
страница, к которой в последнее время было меньше всего обращений
После того, как выбрана страница, которая должна покинуть оперативную память, анализируется ее признак модификации (из таблицы страниц).
Если выталкиваемая страница с момента загрузки была модифицирована, то ее новая версия должна быть переписана на диск.
Если нет, то она может быть просто уничтожена, то есть соответствующая физическая страница объявляется свободной
Слайд 20Страничное распределение
Преобразование адресов
Слайд 21Страничное распределение
На производительность системы со страничной организацией памяти влияют временные
затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса
в физический
При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц
Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы
Увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти
Если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы
В среднем на каждой программе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину
Слайд 22Сегментное распределение
Сложности размещения в одном виртуальном адресном пространстве
Слайд 23Сегментное распределение
Виртуальное адресное пространство процесса делится на сегменты, размер которых
определяется программистом с учетом смыслового значения содержащейся в них информации.
Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п.
Иногда сегментация программы выполняется по умолчанию компилятором
Слайд 24Сегментное распределение
При загрузке процесса часть сегментов помещается в оперативную память,
а часть сегментов размещается в дисковой памяти
Во время загрузки система
создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается
начальный физический адрес сегмента в оперативной памяти,
размер сегмента,
правила доступа,
признак модификации,
признак обращения к данному сегменту за последний интервал времени и некоторая другая информация
Слайд 25Сегментное распределение
Преимущества
простота управления разнородными структурами данных
простота компоновки отдельно скомпилированных процедур
легкость обеспечения дифференцируемого доступа к различным частям программы
простота организации
совместного использования фрагментов программ различными процессами
Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса
Слайд 26Странично-сегментное распределение
комбинация страничного и сегментного распределения памяти.
Виртуальное пространство процесса делится
на сегменты, а каждый сегмент в свою очередь делится на
виртуальные страницы, которые нумеруются в пределах сегмента
Оперативная память делится на физические страницы
Слайд 27Странично-сегментное распределение
Загрузка процесса выполняется операционной системой постранично, при этом часть
страниц размещается в оперативной памяти, а часть на диске.
Для
каждого сегмента создается своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении.
Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса
Слайд 28Свопинг
это разновидность виртуальной памяти
некоторые процессы (обычно находящиеся в состоянии ожидания)
временно выгружаются на диск
при наступлении условий активизации некоторого процесса, находящегося
в области свопинга на диске, этот процесс перемещается в оперативную память
если свободного места в оперативной памяти не хватает, то выгружается другой процесс