Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Различные способы организации памяти



Рассмотрим способы распределения памяти между конкурирующими программами (процессами), реализованные в мультипрограммных операционных системах:

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

- организация разделов с подвижными границами;

- сегментный способ организации виртуальной памяти;

- страничный способ организации виртуальной памяти;

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

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

Разделы с фиксированными границами (распределение памяти статическими разделами).

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

Разделы с подвижными границами (распределение памяти динамическими разделами).

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

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

Сегментация виртуальной памяти.

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

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

Страничный способ организации виртуальной памяти.

При страничной организации памяти программа и оперативная память разбиваются на фрагменты одинакового объема (как правило, 4 кб), называемые страницами. При этом говорят, что оперативная память разбивается на физические страницы, а программа на виртуальные страницы. Виртуальные страницы частично размещаются в оперативной памяти, частично – во внешней памяти (обычно это накопители на магнитных дисках). Место во внешней памяти, предназначенное для виртуальных страниц, называют страничным файлом или файлом подкачки, в котором операционная система размещает страницы, не поместившиеся в оперативной памяти. Реализацией виртуального адреса, в общем случае, является вектор, где первая компонента - это номер страницы, а вторая – номер ячейки внутри выбранной страницы (смещение). Для отображения виртуального адресного пространства процесса на оперативную память (физическое адресное пространство) для каждого процесса операционная система поддерживает таблицу страниц. Каждая строка этой таблицы, называемая дескриптором, описывает соответствующую страницу процесса: адрес страницы в оперативной памяти или на диске; права доступа (только чтение, чтение и запись, только выполнение); бит присутствия страницы в оперативной памяти.

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

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

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

Главным достоинством страничной организации виртуальной памяти является минимальная фрагментация памяти, память используется достаточно эффективно. Но, метод не лишен недостатков:

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

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

Сегментно-страничный способ организации виртуальной памяти.

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

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

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

1.Что понимают под виртуальным адресным пространством процесса.

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

3. Назовите основные способы распределения памяти между конкурирующими программами.

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

5. Что такое свопинг.

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

ГЛОССАРИЙ

1. ШИНА – В вычислительной системе совокупность проводников, предназначенных для обмена сигналами между компонентами системы.


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 751; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь