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

326
Celeritas

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

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

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

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

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

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

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

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

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

2

3 ответа на вопрос

2
Archimedix

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

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

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

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

0
Ouroborus

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

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

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

Можете ли вы объяснить, как они на самом деле описывают одно и то же? Celeritas 8 лет назад 0
Можно произвольно разбить «хранилище» на два типа: «память» и «все остальное». Это «все остальное» обычно медленнее и дольше. В противном случае, это одно и то же, способ хранения данных. Когда такие люди, как вы и я, говорим о виртуальной памяти, мы обычно говорим о носителе. Когда люди, работающие в области информатики, говорят об этом, они говорят обо всем этом, в том числе об элементах, которые делают это возможным. Статья Wikipedia рассматривает это как тему информатики (как и должно быть). Другие статьи рассматривают это как обычный народ. Ouroborus 8 лет назад 0
0
Jim Smith

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

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

Похожие вопросы