Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Свопинг и виртуальная память

 

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

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

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

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

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

· размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;

· позволяет осуществить выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;

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

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

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

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

· Свопинг(swapping - подкачка) – образы процессов выгружаются на диск и возвращаются в оперативную память целиком.

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

 

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

Из-за этих недостатков свопинг, как основной механизм управления памятью практически не используется в современных ОС (в UNIX SVR4 – используется как дополнительный)(хотя термин свопинг встречается довольно часто). В основном используется более совершенный механизм виртуальной памяти.

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

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

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

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

Сегментно-страничная виртуальная память использует двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения данных здесь является страница. Этот способ объединяет в себе элементы обоих предыдущих подходов.

 

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

 

<== предыдущая лекция | следующая лекция ==>
Стратегии размещения информации в оперативной памяти | Страничное распределение памяти
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 4468; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.