Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_блок1.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

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

Суть – часть программы на диске, часть – в ОП.

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

Т.е. это метод автоматического управления иерархической памятью. Программист имеет дело с объёмом памяти > объём ОП.

Виртуальная память решает следующие задачи:

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

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

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

В рамках идеи виртуальной памяти ОП рассматривается как линейное пространство из N адресов, которое называется физическое пространство памяти. Для задач, где имеется больше N адресов, пользователю предоставляется большее число адресов (размер = объёму всех ЗУ). Такое пространство адресов называется виртуальное пространство.

виртуальные и физические адреса.

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

Выполняется без участия пользователя, прозрачно для него.

Существуют следующие реализации виртуальной памяти:

  • Страничная.

  • Сегментная.

  • Сегментно-страничная.

  • Свопинг.

Страничная реализация.

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

  1. Номер страницы.

  2. Смещение относительно начала страницы.

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

PF – Page Fault – сигнал страничного сбоя  необходимая страница подгружается из внешней памяти в оперативную.

Преобразователь адресов – часть ОС. Обычно преобразование выполняется с помощью 2-х таблиц.

N вирт.

стр.

N физ. Стр.

V

R

n

A

N вирт. стр.

N сектора

N дорожки

Страничная таблица Карта диска

Можно объединить

Число записей = числу виртуальных страниц.

V – признак присутствия: устанавливается в 1, если в данный момент времени виртуальная страница находится в ОП, в поле Номера физ.стр. – Номер стр. ОП. Если при обращении к данной виртуальной странице V=0, то формируется сигнал PF и ОС предпринимает необходимые действия для загрузки страницы в ОП.

R – признак использования страницы. Устанавливается в случае обращения к данной странице и используется аналогично алгоритму замещения КЭШ.

n – признак модификации, устанавливается в случае, если данная страница изменялась (как в КЭШ).

A – признак прав доступа – определяет, какие права доступа разрешены на данной странице.

Недостатки страничной реализации:

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

Сегментная реализация.

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

Адрес – номер сегмента и смещение внутри сегмента. Используется не страничная, а сегментная таблица.

Недостаток: Сегменты различного размера  фрагментизация из-за разного размера сегментов при их замещении.

Сегментно-страничная реализация.

Размер сегмента выбирается кратным размеру страницы.

Свопинг.

Основной отличие в том, что программа может перемещаться между ОП и диском целиком. Swap-файл, page-файл.