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

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

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

Поэтому операционная система в любой момент времени считает, что:

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

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

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

страницы, которые на текущий момент времени находятся не в физической оперативной памяти, а на диске.

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

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

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

Операционные системы каждому процессу предоставляют отдельную таблицу страниц и, следовательно, отдельное виртуальное адрес­ное пространство.

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

необходимо определить, в каком месте диска хранится эта виртуальная страница;

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: