top
logo

Сегодня читают

Виртуальная память, распределение памяти.

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

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

Классификация методов распределения памяти представлена на следующем рисунке:

Виртуальная память

Распределение памяти фиксированными разделами

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

Распределение виртуальной памяти

Подсистема управления памятью в этом случае выполняет следующие задачи:

  1. сравнивая размер программы, поступившей на выполнение, и свободных разделов, выбирает подходящий раздел.
  2. осуществляет загрузку программы и настройку адресов.

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

Распределение памяти разделами переменной величины

В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке ниже показано состояние памяти в различные моменты времени при использовании динамического распределения. Так в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает память. На освободившееся после задачи П4 место загружается задача П6, поступившая в момент t3.

Распределение памяти

Задачами операционной системы при реализации данного метода управления памятью является:

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

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

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

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

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

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

Распределение памяти перемещаемыми разделами иллюстрирует следующий рисунок:

Управление памятью в ОС

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

Распределение виртуальной памяти

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

Распределение виртуальной памяти (свопинг)

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

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

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

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

  • дольше всего не использовавшаяся страница.
  • первая попавшаяся страница.
  • страница, к которой в последнее время было меньше всего обращений.

При страничной организации виртуальное адресное пространство процесса делится механически на равные части. Это не позволяет дифференцировать способы доступа к разным частям программы (сегментам), а это свойство часто бывает очень полезным.

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

Сегментное распределение памяти представлено на следующем рисунке:

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

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

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

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (n, m), где n определяет сегмент, а m – смещение внутри сегмента Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру n, и смещения m.

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

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

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

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

Свопинг

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

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

Распределение памяти
Поделись информацией с друзьями в: vkontakte facebook twitter yandex mail livejournal myspace google google-buzz blogger
Оцените предоставленную информацию:
Виртуальная память, распределение памяти Автор/Переводчик: ()
Опубликована:2011-01-24 18:56:14 l Просмотров:8702
Рейтинг: рейтинг

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


Возможно вам будет интересно:

IRQ IRQ
Опубликована:2011-05-06 21:08:32 l Просмотров: 24270
Рейтинг: рейтинг

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

Подробнее

windows windows
Опубликована:2011-05-02 21:29:11 l Просмотров: 11287
Рейтинг: рейтинг

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

Подробнее

Процессы Процессы
Опубликована:2011-01-19 18:33:06 l Просмотров: 7089
Рейтинг: рейтинг

В этой статье мы поговорим на такие темы, как системные процессы, а именно: планирование процессов операционной системой, выделение ресурсов процессу, состояния процесса в ОС.

Подробнее

Комментарии пользователей:

Эту статью, еще никто не комментировал.

Зарегистрируйтесь , и вы сможите оставлять комментарии.

Рекомендуем прочесть


Сегодня читают

Получи 1500 Gold бесплатно в World of tanks при покупке антивируса
Wargaming - и "Лаборатория Касперского" обьявили о начале совместной акции. Теперь при покупке лицензионного программного обеспечения Kaspersky Internet Security, Kaspersky CRYSTAL, а также Kaspersky ONE.
Бесплатная trial версия Diablo III - уже доступна для скачивания
Уже как три месяца мы наслаждаемся долгожданным релизом Diablo III. Счастливые обладатели лицензии, так же получили в комплекте ваучер, который дает возможность играть в Starter Edition версию.
GTA San Andreas - модифицирована движком GTA 4 (скачать мод)
Поклонники - легендарной серии игр Grand Theft Auto решили разработать глобальный мод, GTA San Andreas будет поставлена на движок от GTA 4. Ссылку для скачивания мода вы найдете в конце данной статьи.
Дата выхода Windows 8 – начало августа
На уже ставшей традицией конференции которая проходит каждый год Worldwide Partner Conference, Вице-президент и финансовый директор корпорации Microsoft раскрыли дату выхода Windows 8.
Как скачать музыку из контакта на компьютер - программа VKSaver 3.1
В этой статье мы ответим на вопрос: как скачать музыку из контакта на компьютер совершенно бесплатно, а использовать для этого мы будем бесплатную программу - VKSaver 3.1

bottom
top
За было добавлено 62 новостей, написано 55 статьи и обзоров, пользователями оставлено
0 комментария. Сегодня 04 Декабря, 2016г 17:13, ваш IP 54.205.150.215, тип, версия браузера, а также тип операционной системы
CCBot/2.0 (http://commoncrawl.org/faq/), разрешение экрана px.
© 2010 Компьютеры и Комплектующие, Компьютерные Новости. Все права защищены. Правила копирования статей материалов сайта.
Счётчик тиц и PR
Яндекс.Метрика
bottom