Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Алгоритмы распределения памяти
Алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.
Распределение памяти фиксированными разделами Это простейший способ управления памятью. Память разбивается на несколько областей фиксированной величины, называемых разделами. Это разбиение может быть выполнено вручную оператором во время старта системы или во ее установки. После этого границы разделов не изменяются. Новый процесс, поступивший на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу.
Система управления памяти решает следующие задачи: · Сравнивает объем памяти, требуемый для нового процесса, с размерами свободных разделов и выбирает подходящий раздел. · Осуществляет загрузку программы в один из разделов и настройку адресов. Уже на этапе трансляции разработчик программы может задать раздел, в котором ее следует выполнять. Это позволяет сразу, без использования перемещающего загрузчика, получить машинный код, настроенный на конкретную область памяти. Существенный недостаток — жесткость. Уровень мультипрограммирования заранее ограничен числом разделов. Независимо от размера программы она будет занимать весь раздел, с другой стороны процесс, требующий несколько разделов, не может быть выполнен. Этот простейший метод распределения памяти сейчас находит применение только в системах реального времени, благодаря детерминированности вычислительного процесса. Распределение памяти динамическими разделами Каждому новому поступающему на выполнение процессу выделяется вся необходимая ему память, если ее не хватает, процесс не запускается. Функции ОС, для реализации этого метода: · Ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти. · При создании нового процесса – анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела. Выбор раздела может осуществляться по разным правилам: первый попавшийся раздел достаточного размера, раздел, имеющий наименьший достаточный размер, раздел, имеющий наибольший достаточный размер. · Загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей. · Корректировка таблиц свободных и занятых областей. Этому методу присущ серьёзный недостаток – фрагментация памяти. Фрагментация – наличие большого числа несмежных участков свободной памяти маленького размера. Такого, что ни одна из вновь поступающих программ не может поместиться ни в одном из участков, хотя суммарный объем фрагментов может составить величину, превышающую требуемый объем памяти. Примером этого метода является популярная в прошлом OS/360 и EC – ЭВМ..
Перемещаемые разделы Борьба с фрагментацией – перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы вся свободная память образовала свободную единую область. В дополнение к функциям, которые выполняет ОС с динамическими разделами, она еще время от времени копирует содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием. Сжатие выполняется либо при каждом завершении процесса, либо когда для создаваемого процесса нет свободного раздела достаточного размера. Так как программы перемещаются в оперативной памяти в ходе своего выполнения, то в данном случае невозможно выполнить настройку адресов спомощью перемещающего загрузчика. Здесь необходима реализация динамического преобразования адресов. Хотя этот метод приводит к более эффективному использованию памяти, но требует значительных временных затрат, что перевешивает имущества данного метода. Метод используется в ранних версиях ОС OS/2.
Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 1987; Нарушение авторского права страницы