Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
17.04.2013
Размер:
194.56 Кб
Скачать

5

СПО Лекция12[28.02.17]

Лекция 12. Управление памятью

  • Распределение памяти в однопрограммных ОС

  • Распределение памяти разделами. Защита памяти.

  • Хранение информации о свободных участках

  • Алгоритмы резервирования и освобождения памяти непрерывными участками

Распределение памяти в однопрограммных ос

Вся память выделяется в распоряжение единственной выполняемой программы. Часть памяти при этом занята ОС и драйверами устройств.

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

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

Таким образом, в этом режиме управление памятью практически отсутствует.

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

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

Рассмотрим простейшую модель многопрограммной системы. Предположим, что программы пользователей часть своего времени (p) ожидают завершения операций ввода-вывода и в это время не используют процессор. Если одновременно выполняютсяN программ, то вероятность состояния «ожидание ввода-вывода» в системе составитpN. Загруженность процессора оценивается при этом величиной1-pN. Ниже приводятся графики зависимости загруженности процессора от числа одновременно выполняющихся программ при разных значениях вероятностиp.

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

Из приведенного графика видно, что для программ, в которых процессор используется 20% времени, одновременное выполнение 10 программ позволяет загрузить процессор лишь на 90%.

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

Естественным развитием метода распределения памяти разделами является метод распределения памяти разделами переменной длины. В этом случае программе в момент ее загрузки выделяется непрерывный участок памяти требуемого размера – раздел. При завершении программы выделенная ей память освобождается и объединяется с соседними свободными участками.

Распределение памяти непрерывными участками всегда порождает фрагментацию памяти– появление большого числа блоков маленького размера, недостаточного для удовлетворения запросов на резервирование памяти. В результате может оказаться что значительная часть памяти станет недоступной для использования. Алгоритмы распределения памяти непрерывными участками обязательно должны предусматривать меры, направленные на борьбу с фрагментацией. К таким мерам относится объединение соседних свободных участков и, если возможно, «сжатие» памяти, когда фрагментация достигает значительного уровня.

Метод распределение памяти разделами переменной дины потребовал решения целого ряда задач:

  • загрузка программ с произвольного адреса памяти;

  • защита разделов, т.е. предотвращение записи в чужой раздел;

  • способ учета занятого и свободного пространства памяти;

  • метод поиска и предоставления свободного участка с последующим восстановлением памяти (метод динамического распределения памяти непрерывными участками).

Соседние файлы в папке вар1