Противоречивые определения виртуальной памяти

Кажется, что есть два определения виртуальной памяти, и мне интересно, оба ли они описывают одно и то же или же два одинаковых, но разных понятия называются одним и тем же?

Определение 1: средство расширения ОЗУ с использованием вторичного хранилища

"Виртуальная память - это особенность операционной системы (ОС), которая позволяет компьютеру компенсировать нехватку физической памяти" - techtarget

"Виртуальная память - это имитация ОЗУ. Когда вы израсходуете всю свою ОЗУ, ваш компьютер перенесет данные на свободное место на жестком диске". - удалить компьютерную историю

"Виртуальная память - это метод, который позволяет выполнять процессы, которые не полностью доступны в памяти"

Определение 2: система, к которой обращена память

"Виртуальная память - это метод управления памятью... Он отображает адреса памяти, используемые программой, называемые виртуальными адресами, в физические адреса в памяти компьютера". - википедия

и виртуальная память - это то, что отвечает за предоставление программе собственного адресного пространства, поэтому она может предположить, что ее начало находится по адресу 0x00

Вопрос: я в замешательстве? Как эти определения совместимы?

3 ответа

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

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

Например, в Windows ваши приложения могут иметь области памяти, совместно использующие один и тот же виртуальный адрес, но имеющие различное содержимое, в то время как некоторые другие области по одинаковым адресам совместно используют одно и то же содержимое, например код из библиотек, и вы также можете иметь общее содержимое по разным адресам для каждого приложения. особенно с ASLR, где адреса рандомизированы.

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

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

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

Они описывают одно и то же. Статья в Википедии - это техническое объяснение. Я думаю, что введение статьи плохо / неловко сформулировано, все же. Основная часть статьи описывает это довольно тщательно.

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

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

Другие вопросы по тегам