Подтвердить что ты не робот

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

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

И почему мы говорим, что для 32-разрядной машины максимальный доступ к виртуальной памяти составляет всего 4 ГБ?

4b9b3361

Ответ 1

Там отличная экспликация виртуальной памяти на superuser.

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

Запасное пространство - это часть виртуальной памяти, которая находится на жестком диске, используется, когда RAM заполнена.

Что касается того, почему 32-битный процессор ограничен 4-гигабайтной виртуальной памятью, он хорошо рассмотрел здесь:

По определению 32-разрядный процессор использует 32 бита для обозначения местоположения каждый байт памяти. 2 ^ 32 = 4,2 миллиард, что означает адрес памяти что длина 32 бит может относиться только к 4,2 миллиарда уникальных мест (например, 4 ГБ).

Ответ 2

Существует некоторая путаница в отношении термина "Виртуальная память", и на самом деле это относится к следующим двум совершенно другим понятиям.

  • Использование дисковых страниц для расширения концептуального объема физической памяти компьютера - Правильный термин для этого - это пейджинг
  • Абстракция, используемая различными ОС/ЦП для создания иллюзии каждого процесса, работающего в отдельном смежном адресном пространстве.

Место подкачки, OTOH, является именем части диска, используемой для хранения дополнительных страниц RAM, когда они не используются.

Важная реализация заключается в том, что первая прозрачно возможна из-за аппаратного обеспечения и поддержки ОС последнего.

Чтобы лучше понять все это, вы должны подумать о том, как "виртуальная память" (как в определении 2) поддерживается ЦП и ОС.

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

  • Самые высокие 10 бит - это запись в каталог
  • Следующие 10 бит представляют собой запись в таблице страниц.
  • Последние 12 бит составляют "Смещение страницы"

Теперь, когда ЦП пытается получить доступ к содержимому указателя, он сначала обращается к таблице "Каталог страниц" - таблице, состоящей из 1024 записей (в архитектуре X86, местоположение которой указано регистром CR3). 10-битная запись каталога страниц - это индекс в этой таблице, который указывает на физическое расположение таблицы страниц. Это, в свою очередь, другая таблица из 1024 записей, каждая из которых является указателем в физической памяти и несколькими важными битами управления. (Мы вернемся к ним позже). Как только страница была найдена, последние 12 бит используются для поиска адреса на этой странице.

Более подробная информация many (TLB, большие страницы, PAE, селектор, защита страниц), но краткое объяснение выше отражает суть вещей.

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

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

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

Что касается вашего последнего вопроса (почему сказано, что 32-битный процессор ограничен 4 ГБ виртуальной памяти). Это относится к "виртуальной памяти" определения 2 и является непосредственным результатом размера указателя. Если ЦПУ может использовать только 32-битные указатели, у вас есть только 32 бит для выражения разных адресов, это дает вам 2 ^ 32 = 4 ГБ адресной памяти.

Надеюсь, что это немного упростит.

Ответ 3

ИМХО, это ужасно вводит в заблуждение, чтобы использовать концепцию пространства подкачки как эквивалентное виртуальной памяти. VM представляет собой концепцию, намного более общую, чем область подкачки. Помимо прочего, VM позволяет процессам ссылаться на виртуальные адреса во время выполнения, которые преобразуются в физические адреса с поддержкой аппаратных и табличных таблиц. Таким образом, процессы не касаются того, сколько физической памяти имеет система, или где инструкция или данные фактически находятся в иерархии физической памяти. VM позволяет это отображение. Указанный элемент (инструкция или данные) может быть резидентным в L1, или L2, или RAM, или, наконец, на диске, и в этом случае он загружается в основную память.

Место подкачки - это просто место во вторичной памяти, где страницы хранятся, когда они неактивны. Если нет достаточного количества ОЗУ, ОС может принять решение об изменении страниц процесса, чтобы освободить место для других страниц процесса. Процессор никогда не выполняет инструкции или считывает/записывает данные непосредственно из пространства подкачки.

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

Ответ 4

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

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

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

Сменная память обычно называется местом подкачки. Подменное пространство относится к части виртуальной памяти, которая зарезервирована как место временного хранения. Место подкачки используется, когда доступная ОЗУ не может удовлетворить требованиям системной памяти. Например, в системе памяти Linux ядро ​​находит каждую страницу в физической памяти или в пространстве подкачки. Ядро также поддерживает таблицу, в которой хранится информация о поменявшихся страницах и страницах в физической памяти. Страницы, которые не были доступны с давних времен, отправляются в область подкачки. Этот процесс называется заменой. Если требуется одна и та же страница, она заменяется в физической памяти, заменяя другую страницу. Таким образом, можно заключить, что память подкачки и виртуальная память взаимосвязаны, поскольку память подкачки используется для техники виртуальной памяти.

difference-between-virtual-memory-and-swap-memory