Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзу по ОС.doc
Скачиваний:
1
Добавлен:
19.09.2019
Размер:
450.05 Кб
Скачать

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

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

  • размещение данных в запоминающих устройствах разного типа

  • выбор образов процессов или их частей для перемещения из ОП на диск и обратно

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

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

Виртуализация осуществляется посредством 2 подходов: swapping (свопинг) – образы процессов перегружаются на диск и обратно целиком; virtual memory – между ОП и диском перемещаются части образов процессов. Свопинг представляет собой частный и наиболее простой случай виртуальной памяти, при котором в основной памяти в каждый момент времени находится только одна программа. Программа выполняется по мере возможного, потом на её место вклинивается другая программа. Этот метод эффективен, когда основная память имеет ограниченные размеры. Ему свойственна избыточность, а именно при активизации процесса для его выполнения, как правило, не требуется загружать в память все его сегменты полностью, аналогично при освобождении не требуется выгружать диск целиком. Перемещение избыточной информации замедляет работу системы. Кроме того системы, поддерживающие свопинг, не способны загрузить процесс, виртуальное пространство которого превышает свободное место в памяти. Такие системы практически не используются в настоящий момент.

Концепция виртуальной памяти впервые была реализована в машине Atlas в 1960 году. Её суть заключается в том, что адреса, к которым обращается процесс, отделяются от адресов, реально существующих в первичной памяти. Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными, а те адреса, которые существуют в физической памяти, называются реальными. Диапазон виртуальных адресов называется пространством виртуальных адресов V этого процесса. Диапазон реальных адресов – пространство реальных адресов R компьютера. Смежные адреса виртуального пространства не обязательно будут смежными в реальной памяти. Это свойство называется искусственной смежностью. В случае с виртуальной памятью нет необходимости вести её учет, но несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью, поэтому виртуальные адреса необходимо динамически преобразовывать в реальные. Для преобразования используются таблицы отображения виртуальных адресов на реальные. Главная проблема преобразований – это минимизация количества информации отображения, которую необходимо держать в первичной памяти, а также достижение удовлетворительных скоростей. Решению этих проблем способствует так называется поблочное отображение. Существует 2 способа реализации виртуальной памяти: страничная и сегментная. Страница – это блок фиксированного размера, сегмент – блок переменного размера. В системах с комбинированием обоих блоков обычно применяются сегменты, длина которых выражается целым числом страниц. В схемах поблочного отображения адреса рассматриваются как упорядоченные пары. V=(b,d), b – блок, в котором находится виртуальный адрес, d – смещение адреса относительно начала блока. Из скоростных соображений эта таблица размещается в кэш-памяти или в ассоциативной памяти, в которой адресация производится на основе содержимого, а не их положения.