Системы управления памятью можно разделить на два класса: 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Системы управления памятью можно разделить на два класса:



перемещающие процессы между оперативной памятью и диском во время их выполнения т.е., осуществляющие подкачку процессов (целиком (swapping - свопинг) или использующие страничную подкачку (paging));

не делающие перемещения.

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

1. Разбиение памяти фиксированными разделами. В этом случае разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. После этого границы разделов не меняются. Недостаток – жесткость. Независимо от размера программа будет занимать весь раздел. Возможно, не позволит выполнить процесс, программа которого не помещается ни в один из разделов, хотя им было бы достаточно памяти нескольких разделов.

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

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

Однозадачная система без подкачки на диск

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

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

1. Операционная система может находиться в нижней части памяти, то есть в ОЗУ (оперативное запоминающее устройство RAM (Random Access Memory — память с произвольным доступом)).

2. Или же операционная система может располагаться в самой верхней части памя­ти—в ПЗУ (постоянное запоминающее устройство, ROM (Read-Only Memory — память только для чтения)).

3. И третий спо­соб: драйверы устройств могут находиться наверху в ПЗУ, а остальная часть сис­темы — в ОЗУ, расположенной ниже.

Первая модель раньше применялась на мэйнфреймах и мини-компьютерах, но в настоящее время практически не употребляется.

Вторая схема сейчас используется на некоторых карманных компьютерах и встроенных системах, а третья модель устанавливалась на ранних персональных компьютерах (например, работающих с MS-DOS), при этом часть системы в ПЗУ носила название BIOS (Basic Input Output System — Базовая система ввода-вывода).

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

Существуют также и другие возможные варианты

Многозадачность с фиксированными разделами

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

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

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

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

 

Рис. 13.3. Фиксированные разделы памяти с отдельными входными очередями для каждого раздела (а); фиксированные разделы памяти с одной очередью на вход (б)

 

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

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

Небольшие задания должны ждать своей очереди, чтобы попасть в память, и это все несмотря на то, что свободна основная часть памяти.

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

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

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

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

Подобная схема, где утром оператор задает фиксированные разделы, и пос­ле этого они не изменяются, в течение многих лет использовалась в системах OS/360 на больших мэйнфреймах компании IBM. Она носила название MFT (Multiprogramming with a Fixed number of Tasks — мультипрограммирование с фик­сированным количеством задач, или OS/MFT). Она легка для понимания и не менее проста в исполнении: входящее задание стоит в очереди до тех пор, пока не станет доступным соответствующий раздел, затем он загружается в этот раздел памяти и там работает до завершения процесса. Сейчас очень мало операционных систем, поддерживающих такую модель (если они вообще сохранились).



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 199; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.88.130 (0.007 с.)