Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 6. ОС - Управление памятью

.pdf
Скачиваний:
38
Добавлен:
01.06.2015
Размер:
189.31 Кб
Скачать

Операционные системы

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

лектор: Дроздов Сергей Николаевич

доцент кафедры МОП ЭВМ ЮФУ

dr@pochtamt.ru _dr@mail.ru

Таганрог 2012 г.

2

Основные задачи управления памятью

В однозадачном режиме:

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

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

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

В многозадачном режиме – дополнительно:

предоставление процессам возможностей получения и освобождения дополнительных областей памяти в ходе работы;

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

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

предоставление процессам возможности обмена данными через общие области памяти.

Операционные системы. Управление памятью

3

Физические и виртуальные адреса

Физический адрес ячейки памяти – это ее адрес на шине адреса.

Виртуальный (логический) адрес – это адрес, записанный в программе (при компиляции или при программировании на Ассемблере).

Чтобы выполнить программу, нужно сопоставить физические адреса всем используемым виртуальным адресам.

На ранних этапах развития эти понятия не различались: программа должна была всегда загружаться по одним и тем же адресам.

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

Операционные системы. Управление памятью

4

Замена виртуальных адресов физическими

Ранний подход: чисто программная реализация. Замена может выполняться:

при компиляции программы;

при компоновке исполняемого файла;

при его загрузке в память перед запуском.

Современный подход: использование аппаратных возможностей преобразования адресов:

замена выполняется при выполнении каждой команды, при каждом использовании адреса.

Операционные системы. Управление памятью

5

Настройка адресов

При программной замене виртуальных адресов физическими можно выделить три типа программ:

абсолютные – правильно работают только на определенных физических адресах;

позиционно-независимые – правильно работают на любых адресах;

перемещаемые – требуют настройки адресов при загрузке в память.

Способы настройки перемещаемых программ:

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

более продуктивный подход: адресация «база + смещение». При этом при загрузке нужно только установить правильные значения базовых регистров адреса, а смещения не изменяются.

Операционные системы. Управление памятью

6

Распределение с фиксированными разделами

Раздел G

Раздел A

Раздел B

Раздел C

Раздел

Раздел

D

E

 

 

 

Раздел F

Администратор системы при установке ОС выполняет разбиение всей имеющейся памяти на несколько разделов.

Как правило, формируются разделы разных размеров.

В ранних системах каждая программа компоновалась для конкретного раздела и только в нем могла работать.

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

Недостаток: неэффективное использование памяти. К одним разделам может выстроиться очередь программ, в то время как другие разделы пустуют.

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

Операционные системы. Управление памятью

7

Распределение с динамическими разделами

Предварительного разбиения на разделы нету.

Программы хранятся в перемещаемом формате.

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

Можно использовать свопинг.

Недостаток: со временем возникает фрагментация памяти, т.е. разбиение свободной памяти на большое число маленьких фрагментов. Это неизбежное следствие того, что память выделяется и освобождается разделами различной длины, причем в произвольном порядке.

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

Операционные системы. Управление памятью

8

Сегментная организация памяти

Требует наличия аппаратных средств преобразования адресов.

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

Это разбиение выполняется либо самим программистом (например, на языке ассемблера), либо компилятором используемого языка программирования.

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

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

Большая программа может содержать несколько сегментов кода и/или данных.

Виртуальный адрес состоит из двух частей:

селектор сегмента;

смещение от начала сегмента.

Операционные системы. Управление памятью

9

Сегментная организация памяти

Селектор сегмента – индекс в таблице сегментов процесса.

Для каждого сегмента таблица содержит:

размер;

режим доступа (только чтение или возможна запись);

флаг присутствия сегмента в памяти;

флаг «грязный» (если возможна запись);

базовый физический адрес в памяти или адрес на диске.

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

При каждом обращении к виртуальному адресу аппаратными средствами выполняется преобразование пары «сегмент : смещение» в физический адрес.

Операционные системы. Управление памятью

10

Преобразование сегментного адреса

Виртуальный адрес

Селектор Смещение

+

Таблица

Базовый адрес сегмента

сегментов

Физический адрес

Операционные системы. Управление памятью