Я прочитал следующие 2 статьи, объясняющие разницу между virtual memory и physical memory. Одна вещь, которая меня смущает, заключается в том, что термин virtual memory, по-видимому, означает разные вещи в этих двух статьях.

В чем разница между виртуальной и физической памятью? Виртуальная память используется при заполнении ОЗУ .

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

Одна из статей не так? Или virtual memory имеет разное значение в другом контексте?

0
Brian 18 Апр 2019 в 11:30

2 ответа

Лучший ответ

Я думаю, что говорить, что виртуальная память используется, когда ОЗУ заполнено, неправильно.

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

MMU (блок управления памятью) отображает адреса виртуальной памяти в физические адреса. Посетите MMU wikipedia для получения дополнительной информации.

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

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

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

Изменить: концепция виртуальной памяти обращается гораздо больше, чем доступная память, конечно. Такие вещи, как ограничение доступа и другие вещи.

0
Trickzter 18 Апр 2019 в 14:00

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

Если у вас чисто физическая система памяти, каждый адрес - это физический адрес без перевода.

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

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

  1. Сопоставлены с физическим местоположением
  2. Неверно (не отображается)

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

Система виртуальной памяти опирается на существование логической трансляции памяти. В системе виртуальной памяти таблицы страниц имеют три состояния:

  1. Сопоставлены с физическим местоположением
  2. Не нанесено на карту и недействительно
  3. Не нанесен на карту и действителен

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

Во втором случае ваша программа вызывает исключение и, вероятно, умирает.

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

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

Во времена 32-разрядных процессоров (адресные пространства 4 ГБ), где 8 МБ памяти занимало шкаф размером с холодильник, необходимо было использовать виртуальную память, потому что физической памяти просто не хватало, чтобы сделать очень много.

В наши дни настольный компьютер обычно имеет 32 ГБ памяти. Существует меньше необходимости для хранения процессов на диске. Однако почти каждая используемая операционная система по-прежнему основана на виртуальной памяти «обратно на диск».

Я ожидаю, что виртуальная память полностью исчезнет в ближайшем будущем, и что системы Windoze и Eunchs в мире уже устаревают. Будут созданы новые операционные системы для работы с бездисковыми компьютерными системами.

1
user3344003 18 Апр 2019 в 22:25