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

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

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

11

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

При обращении к виртуальному адресу в сегменте, отсутствующем в памяти:

генерируется исключение (внутреннее аппаратное прерывание);

при обработке исключения система ищет свободное место для сегмента в памяти;

если в памяти нет достаточно большого свободного интервала, система выбирает сегмент(ы) для вытеснения;

если вытесняется «грязный» сегмент, то он записывается на диск;

требуемый сегмент считывается в память;

обновляется информация в строке таблицы сегментов;

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

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

12

Реализация сегментной адресации

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

При многократном занятии и освобождении сегментов разного размера возникает фрагментация свободной памяти (разбиение на большое количество небольших участков).

(Это аналогично фрагментации дискового пространства при непрерывном размещении файлов, см. соответствующий раздел.)

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

Процесс дефрагментации занимает довольно много времени.

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

13

Реализация сегментной адресации

В некоторых системах (например, Windows 3.x) сегмент может быть в двух состояниях, переключаемых программой:

фиксированный сегмент не должен перемещаться в памяти;

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

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

Изоляция процессов обеспечивается тем, что ОС не должна отображать сегменты разных процессов на одну и ту же область памяти.

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

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

14

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

Страничная организация имеет много общего с сегментной. Основные отличия:

все страницы имеют одинаковый размер (для i86 – 4 КБ);

разделение на страницы выполняется системой автоматически, а не «по смыслу»;

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

старшая часть виртуального адреса – это номер страницы в таблице страниц процесса;

младшая часть – смещение от начала страницы.

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

15

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

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

флаг использования страницы;

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

адрес страницы на диске, в файле страниц (pagefile);

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

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

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

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

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

16

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

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

№ страницы

Смещение

 

 

 

 

 

 

 

 

 

Таблица

страниц

Базовый адрес страницы

Базовый адрес страницы

Смещение

 

 

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

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

17

Реализация страничной адресации

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

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

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

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

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

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

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

18

Принцип загрузки страниц по требованию (Demand Paging)

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

При обращении к виртуальному адресу на странице, отсутствующей в памяти:

генерируется исключение;

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

если в памяти нет свободного страничного фрейма, менеджер выбирает страницу для вытеснения;

если вытесняется «грязная» страница, то она записывается на диск;

требуемая страница считывается в память;

обновляется информация в строке таблицы страниц;

повторяется обращение к виртуальному адресу, но теперь страница уже присутствует в памяти.

Этот подход похож на кэширование диска, но требуется гораздо большая скорость работы, поэтому использование алгоритма LRU проблематично, часто используются более простые алгоритмы.

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

19

Сравнение сегментной и страничной организации

Преимущества сегментной организации:

можно указать режим доступа к сегменту в зависимости от смысла его данных;

удобно работать с двумя или более независимо растущими структурами данных (можно выделить каждой отдельный сегмент);

Если разрядность адреса мала (например, 16 бит), а программа должна использовать много памяти, то можно использовать много небольших сегментов (по 64 КБ).

Преимущества страничной организации:

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

невозможна фрагментация памяти;

как правило, уменьшается обмен данными с диском.

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

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

20

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

Виртуальное адресное пространство каждого процесса в Win32 – 4ГБ.

На самом деле, старшие 2 ГБ зарезервированы для системы.

Из оставшихся 2 ГБ два кусочка по 64КБ в начале и в конце диапазона сделаны недоступными процессам, чтобы облегчить выявление ошибок типа «плохой указатель».

В Windows формально сохраняется и сегментный механизм (поскольку сегментные регистры процессора никуда не делись), однако система просто выделяет процессу один сегмент размером 4 ГБ, и о сегментах можно больше не думать.

Для Win64 адресное пространство – 264 байтов, однако для каждого процесса пользователя доступно «только» 7152 ГБ виртуальных адресов.

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