Функции системы управления памятью

При использовании памяти ОС должна выполнять следующие функции:

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

2. Распределение памяти между конкурирующими процессами

3. Контроль доступа к адресным пространствам процессора

4. Выгрузка процессов во внешнюю память, если оперативной памяти не достаточно

5. Учет свободной и занятой памяти

Простейшие схемы управления памятью

Схема с фиксированными разделами

 
 
 
  ОС


8.5.1.2 Овирлейная (overlay) структура

Если размер логического адресного пространства процесса превышает размер выделенной ему оперативной памяти.

Основная идея: держать в памяти только те инструкции программы, которые нужны в данный момент.

Динамическое распределение памяти (swapping)

Swapping – ситуация, когда для увеличения скорости работы ОС один из процессов выгружается во внешнюю память. Выгруженный процесс со временем д/б возвращен в оперативную память и может возвращаться либо в старый раздел, либо в новый раздел памяти.

Swapping связан с системой планирования заданий.

Схема с переменными разделами

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

             
Р3 Р3
Р3 Р2  
Р1 Р1 Р1
ОС ОС ОС ОС

 

Возможны три стратегии размещения процессов в памяти с переменными разделами:

1. Стратегия первого подходящего (First fit) – процесс помещается в первый подходящий по размеру раздел

2. Стратегия наиболее подходящего (Best fit) – процесс помещается в тот свободный раздел, в котором меньше всего остается свободного места

3. Стратегия наименее подходящего (Worst fit) – вновь поступающая задача размещается в самом большом разделе; расчет:

a. на то, что в большом разделе останется достаточно памяти для других задач;

b. на то, что можно быстрее разместить задачу в разделе

Эти стратегии используются при загрузке файлов на диски.

Типовой цикл работы менеджера памяти следующий:

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

· Выбор среди имеющихся свободных участков памяти для загрузки в него поступающего процесса

· Загрузка процесса в выбранный раздел

· Изменение таблиц учета свободных и занятых участков памяти

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

Идеальный вариант – фрагментация должна отсутствовать.

Страничная память

Необходимо искать другие схемы организации памяти. Современные системы распределения памяти не предполагают в общем случае размещения процессов одним непрерывным блоком, т.е.

\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Размер кратный размеру страницы
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Размер кратный размеру страницы
ОС

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

Page frame – физический блок, размер кратен 2k.

(p, d) – логический адрес, где p – страница, d - смещение в рамках одной страницы.

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

Система отображения логических адресов в физические сводится к отображению логических страниц в физические и представляет собой таблицу страниц, хранящуюся в оперативной памяти.

p – номер виртуальной страницы

d – смещение внутри виртуальной странице

b-адресует адрес
p
p

d

Таблица страниц

 
Атрибуты p’
 

 

p’ d

 

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