Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
10
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Способы борьбы с фрагментацией:

  1. Увеличение размеров ОП.

  2. Упорядочивание запросов на участки памяти по времени освобождения. Желательно одновременное освобождение смежных участков.

  3. Упорядочивание запросов на участки памяти по размерам. Желательно, чтобы участки памяти одинакового размера освобождались в смежных областях.

  4. Включение алгоритмов «сборки мусора». Они позволяют определять нужные элементы и перестроить структуру данных так, чтобы объединить отдельные свободные участки.

Рассмотрим несколько таких алгоритмов.

Слияние – объединение смежных свободных участков памяти. При завершении задания MMU проверяет наличие свободных участков смежных с освобождаемой областью. Если они есть, то они объединяются.

И после слияния остаются дыры. Часто их суммарный размер больше необходимого для размещения процесса. Эта проблема решается при помощи уплотнения.

Уплотнение (или сжатие) – перемещает все занятые участки в сторону старших или младших адресов так, чтобы свободная память образовала единую область.

Недостатки уплотнения:

  1. Отнимает ресурсы системы.

  2. Во время уплотнения система прекращает все работы (в диалоговых системах время ответа ВС может быть непрогнозируемым).

  3. При часто меняющихся заданиях необходимо часто проводить уплотнение. Это может сильно замедлять работу, что может перевесить все преимущества сжатия.

Типы адресов памяти

Физические адреса – соответствуют действительным номерам ячеек оперативной памяти.

Виртуальные адреса (логические адреса) – адреса, которые вырабатывает транслятор (переводящий программу на машинный язык). Поскольку в общем случае неизвестно, в какое место ОЗУ будет загружена программа, транслятор присваивает адреса, начиная с нуля.

При работе с программой всегда выполняется отображение виртуальных адресов в физические и обратно. Для этого наряду с таблицами страниц в современных ВС существует аппаратное устройство «Буфер быстрого преобразования адресов» TLB (Translation Lookaside Buffer) построенный по ассоциативному принципу. Он находится рядом с каждым ядром процессора. В него загружается часть таблицы страниц, необходимая в данный момент для работы.

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством (ВАП).

Каждый процесс может использовать:

  1. Собственное ВАП (в случае, если транслятор присваивает виртуальные адреса независимо от других процессов),

  2. общее ВАП (в некоторых ОС). В современных ОС, как правило, процессы имеют собственное виртуальное адресное пространство.

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

Учет свободных и занятых областей памяти

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

Существует два способа учета использования памяти:

а) битовые карты;

б) связные списки участков памяти.

Учет памяти с помощью битовых карт

Память разделяется на блоки размером от 512 байт – 4 Кб. Битовая карта – это таблица, в которой каждому занятому блоку соответствует один бит, равный единице, а каждому свободному блоку – бит, равный нулю (или наоборот).

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

Главная проблема такого метода – выбор размера кластера. Чем меньше кластер, тем больше битовый массив, тем медленнее поиск в битовом массиве и вся работа с ним. Но при больших кластерах значительнее потери памяти.