Программист создает программу в соответствии со своим видением модели оперативной памяти компьютера. Он считает, что в его распоряжении имеется виртуальное адресное пространство необходимого размера N (в виде виртуальной оперативной памяти из N последовательно расположенных ячеек размером 1 байт каждая.) До начала выполнения программа находится на диске.
Распорядителем всех реальных ресурсов в компьютере является операционная система. Ей удобно рассматривать как реальное адресное пространство физической оперативной памяти, так и виртуальное адресное пространство программ на диске, как последовательность блоков (страниц) достаточно большого фиксированного размера (например, 4К байт).
Поэтому операционная система в любой момент времени считает, что:
виртуальное адресное пространство программы разбито на три непересекающихся подмножества страниц:
незанятые страницы, которые не были задействованы программистом. Эти незанятые страницы не содержат команд и данных и, таким образом, не занимают физическое пространство на диске.
|
|
страницы, которые на текущий момент времени находятся в физической (реальной) оперативной памяти);
страницы, которые на текущий момент времени находятся не в физической оперативной памяти, а на диске.
физическое адресное пространство разбито на n физических адресных пространств, где n – это количество процессов, загруженных в реальную оперативную память.
При запуске любой программы операционная система выделяет необходимый объем реальной оперативной памяти в виде некоторого количества физических страниц, в которые будет загружена часть запускаемой программы (или вся программа, если это возможно). Выделяемые программе физические страницы не обязательно располагаются последовательно в физическом адресном пространстве реальной оперативной памяти.
Виртуальные страницы располагаются последовательно в виртуальном адресном пространстве. Каждая виртуальная страница может быть загружена операционной системой в любую физическую страницу. Операционная система создает структуры (например, таблицы страниц), в которых фиксируется соответствие между виртуальными и физическими страницами.
Операционные системы каждому процессу предоставляют отдельную таблицу страниц и, следовательно, отдельное виртуальное адресное пространство.
При выполнении программы при каждом обращении в оперативную память определяется находится (кэширована) ли виртуальная страница в реальной оперативной памяти. Если да, то в какой физической странице она находится. Если нужная виртуальная страница отсутствует, то:
|
|
необходимо определить, в каком месте диска хранится эта виртуальная страница;
подготовить для нее физическую страницу (если есть свободные страницы физической памяти, то назначить одну из них;
если свободных физических страниц нет, то выбрать в физической оперативной памяти страницу, которую можно удалить) и скопировать виртуальную страницу с диска в физическую оперативную память на место удаленной страницы.
Эти возможности обеспечиваются некоторым сочетанием программного обеспечения операционной системы, аппаратных средств преобразования виртуальных адресов в физические адреса блока управления памятью и таблицы страниц, которая отображает виртуальные страницы на физические страницы. Аппаратные средства преобразования адресов обращаются к таблице страниц каждый раз, когда нужно преобразовать виртуальный адрес в физический адрес. Операционная система отвечает за поддержку содержимого таблицы страниц и за передачи страниц в обоих направлениях между диском и физической оперативной памятью.