При использовании памяти ОС должна выполнять следующие функции:
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 – смещение внутри виртуальной странице
| d |
Таблица страниц
Атрибуты | p’ |
p’ | d |
Используя атрибуты можно организовать контроль доступа к конкретной странице и ее защиту.