Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 6004.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

2.5.4.Функции ос по управлению основной памятью

Функции ОС по управлению основной памятью:

1. Учет свободных участков организуется связыванием всех свободных участков в цепочку. Каждый свободный участок представляется элементом, располагаемым в начале участка:

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

2. Выделение участка памяти по запросам: элемент исключается из цепочки или изменяется его указатель длины.

3. Освобождение участка - наоборот.

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

Способы борьбы с фрагментацией:

· Расширение размера ОП (в том числе и за счет виртуализации).

· Упорядочение запросов на память. Запросы, подчиняющиеся какой-либо классификации, направляются в одни и те же области памяти. Например, если есть возможность упорядочить запросы по времени освобождения, то

- краткосрочные запросы осуществляются по младшим адресам;

- долгосрочные запросы выполняются по старшим адресам (направление можно менять);

· Упорядочение запросов по размерам. Запросы приблизительно одинаковых размеров удовлетворяются в одной и той же области основной памяти.

· Включение алгоритмов сборки "мусора", т.е. оценки фактически не используемой, но не освобожденной памяти процесса. Такие алгоритмы можно выполнять автоматически , т.е. включать их в состав ядра, либо по команде оператора.

5. Многоуровневое распределение основной памяти состоит в том, что выделенный участок на верхнем уровне подлежит дальнейшему распределению на нижнем. Существует три уровня распределения:

I - уровень заданий;

II - уровень задач;

III - уровень запросов.

2.6.Виртуальная память

Впервые виртуальная память была реализована в Великобритании в компьютере Atlas (1960), созданном в Манчестерском университете.

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

Перевод виртуального адреса в реальный адрес во время выполнения процесса называется динамическим преобразованием адресов. Адреса, смежные в V (виртуальное пространство), необязательно будут смежными в R (реальное пространство). Таким образом, пользователь освобождается от необходимости учитывать размещение своих процедур и данных в реальной памяти. Только небольшая часть кода и данных каждого процесса размещается в оперативной памяти. Остальная часть хранится во внешней памяти (на диске).

Системы виртуальной памяти требуют наличия таблиц отображения виртуального адреса в реальный, содержащих дескрипторы (описатели) блоков. Главная задача разработчиков систем - это минимизация количества информации отображения при удовлетворительных скоростных характеристиках системы. Эта цель достигается поблочным отображением: информация группируется в блоки и система следит за тем, в каких местах реальной памяти размещаются различные блоки из виртуального пространства. Блоки фиксированного размера называются страницами; блоки переменного размера называются сегментами. В некоторых системах оба вида блоков комбинируются - применяются сегменты, состоящие из целых страниц.

Адреса рассматриваются как упорядоченные пары V=(b,d), где b - номер блока с виртуальным адресом, d - смещение адреса относительно начала блока b. Таблица отображения блоков обычно хранится в кэш-памяти.