Алгоритмы распределения памяти. Распределение фиксированными, динамическими и перемещаемыми разделами
Все алгоритмы управления памятью могут быть разделены на два класса: алгоритмы, которые используют перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не используется. Методы без использования внешней памяти.Память разделяется между прогой и ОС.Та часть, что используется в ПЗУ называется BIOS.1) ПРОга пользователя/ОС в Пзу. 2) ОС в ПЗУ/ прога пользователя 3) Драйверы устройств в ПЗУ/прога пользователя/ОС в ПЗУ. Распределение памяти с фиксированными разделами. Память разбивается на несколько областей фиксированной величины и такое разбиение может быть выполнено либо без загрузки системы, либо при ее установке. Процессы могут быть разными поэтому каждому разделу необходим разный размер памяти. Системы могут иметь:1) общую очередь 2) к каждому разделу отдельную очередь. Очередной новый процесс, поступивший на выполнение, получает либо общую очередь, либо очередь в определенному процессу. Подсистема управления памятью выполняет следующие задачи:1) Сравнение объем памяти требуемого для загруженного процесса с размерами свободных разделов и выбора подходящего. 2) Загрузка проги в раздел и настройка адресов. Преимущества: простота реализации Недостаток: ограниченное число разделов. Разделение памяти динамическими разделами. В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача.Состояние памяти в различный момент времени. Функциями ОС при реализации данного алгоритма:1)ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти, 2)при создании новых процессов производится анализ требований к памяти: просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи, 3) загрузка задачи в выделенный ей раздел, 4) после завершения задачи корректировка таблиц свободных и занятых областей. Преимущество: гибкость. Недостаток: сложность и появление фрагментации. Фрагмент-наличие большого числа несмежных участков свободной памяти маленького размера. Ни одна из многих выступавших прог не может уместиться в этих участках. При этом суммарный объем фрагмента может составлять значительную величину. Распределение памяти перемещаемыми разделами.Суть таже, что и динамический метод с перемен разделами, но добавляется процедура сжатия- перемещение всех разделов с целью ликвидации фрагментации. Преимущество: гибкость. Недостаток: требуются затраты на сжатие.
29. Сегментная, страничная и сегментно-страничная организация памяти
Страничное распределение
Виртуальное адресное пространство каждого процесса делится на части одинакового размера называемые виртуальными страницами.Последняя страница каждого процесса остаётся пустой.
Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).
Размер страницы обычно выбирается равным степени двойки: 512, 1024.
При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные - на диск.При загрузке операционная система создает для каждого процесса таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости (выгрузка некоторых страниц может быть запрещена), признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и другие данные, формируемые и используемые механизмом виртуальной памяти.
При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц данного процесса.
При каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице, к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит страничное прерывание. Выполняющийся процесс переводится в состояние ожидания, и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует выгрузить из оперативной памяти.
Выбирается страница, которая дольше всего не использована|первая попавшаяся|к которой в последнее время было меньше всего обращений.
В некоторых системах используется понятие рабочего множества страниц. Рабочее множество определяется для каждого процесса и представляет собой перечень наиболее часто используемых страниц, которые должны постоянно находиться в оперативной памяти и поэтому не подлежат выгрузке.
После того, как выбрана страница, которая должна покинуть оперативную память, анализируется ее признак модификации (из таблицы страниц). Если выталкиваемая страница с момента загрузки была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то она может быть просто уничтожена, то есть соответствующая физическая страница объявляется свободной.
+ Быстро и низкая фрагментация - сложно организовать защиту
Сегментное распределение
При страничной организации виртуальное адресное пространство процесса делится механически на равные части. Сегментное распределение позволяет запретить обращаться с операциями записи и чтения в кодовый сегмент программы, а для сегмента данных разрешить только чтение. Кроме того, разбиение программы на "осмысленные" части делает принципиально возможным разделение одного сегмента несколькими процессами. Например, если два процесса используют одну и ту же математическую подпрограмму, то в оперативную память может быть загружена только одна копия этой подпрограммы.
Виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Иногда сегментация программы выполняется по умолчанию компилятором.
При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса, в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре.
Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.
+ зашита - фрагментация и низкая скорость