Виртуальные адресные пространства делятся на однородные, непрерывные, выровненные по границам области. Каждая область состоит из участка смежных страниц с одинаковой защитой и страничной организацией. Между областями виртуального адресного пространства могут быть пустые промежутки. Ссылка на такой промежуток приводит к фатальной страничной ошибке. Каждая область описывается в ядре, структурой vm_area_struct. Все эти элементы связываются вместе в список, отсортированный по виртуальным адресам. Когда список становится слишком длинным (более, чем 32 элемента), для ускорения поиска по нему создается дерево. В элементе vm_area_struct перечислены свойства области, например режим защиты, направление роста сегмента, информация о том, закреплен (не подкачивается) ли он в памяти, является ли данная область приватной для какого-либо процесса, имеет ли область резервное хранение на диске, и, если имеет, то где.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Альтернативный ответ//////////////////////////////////////////////////\\\
· Виртуальная память – это механизм управления иерархической памятью компьютера,
который позволяет размещать в памяти и одновременно выполнять несколько процессов.
Она позволяет имитировать больше оперативной памяти,
чем фактически установлено на вашем компьютере путём автоматического перемещения частей
программы между основной памятью и вторичным хранилищем (например, жёстким диском).
Принципы работы:
Физически виртуальная память представляет собой совокупность всех ячеек
памяти – оперативной и внешней (наличие ВЗУ обязательно). Она имеет
сквозную нумерацию от нуля до предельного значения адреса.
Виртуальная память делится на блоки фиксированного размера – виртуальные страницы.
Физическая память также делится на блоки фиксированного размера – физические страницы.
Размеры виртуальных и физических страниц совпадают. Физические страницы
используются для хранения виртуальных страниц.
Адрес виртуальной (физической) страницы состоит из номера страницы и
смещения (адреса относительно начала страницы). Страничная организация
памяти представляет память как набор страниц равного размера. В любой момент
только часть страниц виртуальной памяти присутствует в оперативной памяти,
т.е. та часть, которая необходима активным задачам.
Загрузка и выгрузка страниц в оперативную память выполняется по мере
необходимости (загрузка по требованию).
Отсутствует фрагментация, так как страница имеет фиксированный размер.
При использовании виртуальной памяти для каждой запущенной
программы ОС создает собственное виртуальное адресное пространство.
Виртуальное адресное пространство описывается двумя таблицами: таблицей
страниц и картой диска. Таблица страниц устанавливает соответствие
виртуальных и физических адресов страниц. Карта диска содержит информацию
о расположении страниц во внешней памяти.
Трансляция адресов:
Процессор выставляет на шину адреса виртуальный адрес. Виртуальный
адрес представлен парой чисел (p,s), где p – номер виртуальной страницы, а s –
смещение внутри страницы (Рис. 20). Физический адрес аналогично представлен
парой чисел (n,s), где n – номер физической страницы, а s – смещение внутри
страницы. Виртуальный адрес преобразуется в физический адрес устройством
управления памяти. Это устройство может находиться на микросхеме процессора
или на отдельной микросхеме рядом с процессором. Преобразование
осуществляется с помощью таблицы страниц по следующей схеме.
1. Если физическая страница находится в оперативной памяти, то в таблице
страниц считывается строка p. Она содержит номер физической страницы n,
по которому однозначно определяется физический адрес этой страницы.
Искомый физический адрес вычисляется суммированием физического
адреса физической страницы n и смещения s. Кроме физического адреса
страницы, в строке таблицы может храниться информация о том, выделена
ли оперативная память для данной страницы, происходила ли запись в
страницу после ее подгрузки, разрешено ли чтение или запись в эту страницу.
2. Если страница расположена во внешней памяти, то ее нужно подгрузить в свободную
страницу оперативной памяти. Если свободной страницы нет, то по любому алгоритму
вытеснения выбирается и освобождается одна из занятых страниц. Данные из этой страницы
предварительно выгружаются во внешнюю память.
Виртуальное адресное пространство процесса в Windows:
Для адресации виртуальной памяти 32-битного процесса в Windows используются
32-битные указатели (размерность 4 байта), и размер адресного пространства равен
2 ^ 32 = 4294967296 байт (4 гигабайта, Гб). Шестнадцатеричное представление диапазона:
00000000 - FFFFFFFF.
Для адресации виртуальной памяти 64-битного процесса в Windows используются
64-битные указатели (размерность 8 байт) и размер адресного пространства процесса равен
2 ^ 64 = 18446744073709551616 байт (16 экзабайт, Эб. ~17 миллиардов гигабайт).
Шестнадцатеричное представление диапазона: 0000000000000000 - FFFFFFFFFFFFFFFF.
На самом деле, это только в теории, а на практике есть определенные ограничения,
например для 32-битного приложения имеется лимит в 2 гигабайта, за
пределы которого процесс выбраться не может (НА ПОСЛЕДНИЙ ПУНКТ ОТВЕТ ОТСУТСТВУЕТ)