где находится виртуальное адресное пространство - PullRequest
0 голосов
/ 25 июня 2019

Не удалось понять, где находится виртуальное адресное пространство, в ОЗУ или в HARD-DISK?Если он присутствует в ОЗУ, то как его адресное пространство больше физического адресного пространства?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

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

Второй этап реализации виртуальной памяти - это преобразование логических адресов, которое полностью выполняется в памяти.В логическом адресном пространстве память подразделяется на страницы (что-то вроде 512 байтов на 1 МБ).Физическая память подразделяется на рамки страниц.Размер фрейма страницы должен соответствовать размеру логической страницы в большинстве систем.

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

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

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

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

У вас может быть преобразование логической памяти без преобразования виртуальной памяти, но вы не можете иметь преобразование виртуальной памяти без преобразования логической памяти.

0 голосов
/ 26 июня 2019

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

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

Не удалось понять, где находится виртуальное адресное пространство, в ОЗУ или на HARD-DISK?Если он присутствует в оперативной памяти, то как его адресное пространство больше физического адресного пространства?

Процесс всегда имеет одинаковую структуру памяти в терминах виртуальных адресов.В нижней части адреса находятся инструкции, глобальные данные и куча, которые организованы в несколько секций .На верхнем торце находятся параметры программы (argv) и стек.Между ними есть свободное пространство, которое позволяет стеку и куче расти.
Таким образом, есть адреса, равные 0 (первая инструкция программы) и 0xfffffffffffffffff (начало стека).
Очевидно, что is isдалеко за пределами возможностей большинства (всех?) присутствующих ОЗУ.С 64-битными виртуальными адресами и 4 ГБ ОЗУ (32 бита) можно использовать максимум одну страницу более 1 млрд.
Но механизм преобразования возможен благодаря переводу на основе страниц.В свободном пространстве между кучей и стеком большинство адресов никогда не будут использоваться.В этом случае ОС не создает таблицу страниц для перевода.
Если вы генерируете случайный адрес в программе, наиболее вероятно, что он не будет соответствовать адресу, отображаемому системой в ОЗУ.Если вы попытаетесь получить доступ по этому адресу, процессор обнаружит, что страницы не существует, и выдаст исключение, которое будет обработано системой.Скорее всего, система остановит вашу программу и отобразит сообщение об ошибке типа «нарушение прав доступа».

Тот же механизм используется для отображения части памяти на диск.Чтобы каким-то образом увеличить размер памяти, система может заменить часть диска физической памяти, назначенной процессу, на диск, чтобы выделить ее другому процессу.Если первый процесс попытается получить к нему доступ, снова будет сгенерировано исключение, но ОС обнаружит, что адрес соответствует зоне памяти, сохраненной на диске.Он прочитает диск, определит физический адрес для этой страницы, заполнит соответствующую таблицу страниц, восстановит содержимое памяти и вернется к программе, которая теперь может осуществлять доступ к памяти.

...