Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_OS.doc
Скачиваний:
39
Добавлен:
07.02.2016
Размер:
475.65 Кб
Скачать

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

3.1 Теоретическая часть

3.1.1 Распределение оперативной памяти

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

При фиксированном распределении в каждом разделе может располагаются по одной про­грамме. В пределах раздела можно приме­нять методы создания программ, которые используются для однопрограммных систем, например, использование оверлейных структур.

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

Список свободных участков может быть упорядочен либо по адресам, либо по объему. Выделение памяти под новый раздел может осуществляться од­ним из трех способов:

  • первый подходящий участок;

  • самый подходящий участок;

  • самый неподходящий участок.

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

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

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

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

3.1.2 Алгоритмы замещения процессов

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

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

Имеется ряд основных алгоритмов, используемых для выбора замещаемой страницы:

  • оптимальный алгоритм;

  • алгоритм дольше всех неиспользовавшегося (least recently used – LRU);

  • алгоритм "первым вошел – первым вышел" (first in first out – FIFO);

  • часовой алгоритм.

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

Алгоритм дольше всех неиспользовавшегося (least recently used – LRU) замещает в памяти ту страницу, обращений к которой не было дольше всех. Согласно принципу локализации, ожидается, что эта страница не будет использоваться в ближайшем будущем. Каждая страница должна быть помечена во время последнего обращения к странице. Этот алгоритм сложный в реализации, так как требует больших накладных расходов, однако недалек от оптимального.

Алгоритм "первым вошел – первым вышел" (first in first out FIFO) рассматривает кадры страниц процесса как циклический буфер, страницы удаляются из него циклически. Для реализации алгоритма требуется лишь указатель, циклически проходящий по кадрам страниц процесса. Это одна из простейших стратегий размещения в реализации. Замещается страница, находящаяся в основной памяти дольше других, однако, замещенные страницы могут понадобиться вскоре снова.

Часовой алгоритм использует для каждого кадра дополнительный бит – бит использования. Когда страница впервые загружается в кадр, бит использования устанавливается в 1. При последующих обращениях к странице, бит устанавливается в 1. При работе алгоритма замещения множество кадров, являющихся кандидатами на замещение, рассматривается как циклический буфер, с которым связан указатель. При замещении страницы указатель перемещается к следующему кадру в буфере. Когда наступает время замещения страницы, ОС сканирует буфер для поиска кадра, бит использования которого равен 0; если в процессе поиска встречается кадр с битом использования, равным 1, он сбрасывается в 0. Если все кадры имеют бит использования, равный 1, указатель совершает полный круг и возвращается к начальному положению, заменяя страницу в этом кадре.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]