Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AOS_otvety_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.29 Mб
Скачать

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

Разные ОС по-разному распределяют память между процессами

Методы распределения памяти можно разделить на:

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

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

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

- перемещаемыми разделами

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

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

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

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

Фиксированные разделы

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

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

Система:

- сравнивает требуемый объем памяти с памятью раздела

- загружает программу в один из разделов и настраивает адреса

Недостаток системы:

- жесткость

- уровень мультипрограммирования заранее ограничен числом разделов

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

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

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

  • Память изначально свободна и не разбита на разделы

  • При поступлении процесса на исполнение ей выдается столько памяти, сколько нужно, если памяти не хватает, то процесс не исполняется

  • После завершения процесса память освобождается

ОС должна:

- вести таблицы свободных и занятых областей

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

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

- корректировать таблицы после завершения процесса

Плюсы:

- гибче

Минусы – фрагментация памяти.

Так организована память в ОС/360

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

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

Ко всем функциям, исполняемым ОС в динамических разделах, добавляется сжатие, которое должно производиться:

- либо при каждом завершении процесса

- либо когда для нового процесса не хватает места.

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

Минусы:

- затраты времени

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

Сейчас пару слов про внешнюю память (свопинг и виртуальную память)

Программа для ее выполнения должна находиться в оперативной памяти.

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

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

Поэтому было предложено попеременно выгружать неактивные задачи (заблоченные, ожидающие ввода-вывода, готовые, но в очереди на исполнение) с оперативы на диск.

Такая подмена называется ВИРТУАЛИЗАЦИЕЙ – и она здорово помогает повысить уровень мультипрограммирования, т.к. теперь объем оперативы не так жестко ограничивает количество одновременно выполняемых задач.

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

Работа такой виртуальной памяти будет значительно МЕДЛЕННЕЕ.

Что должна делать ОС для поддержки виртуальной памяти:

- размещать часть кодов исполняемых прог в памяти – часть – на диске.

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

- перемещать данные между памятью и диском

- преобразовывать виртуальные адреса в физические

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

/* Первая попытка использовать внешнюю память – оверлеи.

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

То есть бедные программисты должны были все это учитывать, морока, в общем.*/

Существует 2 основных подхода к организации виртуализации памяти:

- свопинг

- виртуальная память

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]