Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга high-end по ОС-new.doc
Скачиваний:
99
Добавлен:
13.05.2015
Размер:
2.13 Mб
Скачать

Вопросы для самопроверки

  1. Какие типы адресов Вам известны?

  2. Назовите два основных подхода, по которым ОС преобразует виртуальные адреса в физические.

  3. Какие две области содержатся в системной виртуальной памяти?

Контрольные вопросы

  1. Что принято понимать под термином «виртуальное адресное пространство»?

  2. Могут ли совпадать виртуальные адреса команд разных процессов?

  3. Какие способы структуризации виртуального адресного про-странства Вам известны?

  4. Обязательно ли виртуальное адресное пространство требует наличия механизма виртуальной памяти?

  5. На какие части в современных ОС разделяется виртуальная память?

  6. Какой способ преобразования виртуальных адресов в физические адреса ОП жестко привязывает программу к первоначально выделенному участку памяти?

4.3. Алгоритмы распределения памяти

Следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память «кусками»? Должны ли сегменты программы, загруженные в память, находиться на одном месте в течение всего периода выполнения процесса или их можно время от времени сдвигать? Что делать, если сегменты программы не помещаются в имеющуюся память? Разные ОС по-разному отвечают на эти и другие базовые вопросы управления памятью.

На рис. 4.3 представлена схема алгоритмов распределения памяти.

Методы распределения памяти

Сиспользованием внешней памяти

Без использования внешней памяти


Страничное распределение

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


Сегментное распределение


Перемещаемыми разделами

Сегментно-страничное

распределение


Рис. 4.3. Классификация методов распределения памяти

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

4.3.1. Алгоритмы распределения без использования внешней памяти Распределение памяти динамическими разделами

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

При этом операционной системе, использующей этот метод управления памятью, приходится решать перечисленные ниже задачи.

Ведение таблиц свободных и занятых областей. В этих областях указываются начальные адреса и размеры участков памяти.

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

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

Корректировка таблиц свободных и занятых областей. Эта операция проводится после завершения процесса.

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