В чем разница между "виртуальной памятью" и "пространством подкачки"? - PullRequest
70 голосов
/ 11 февраля 2011

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

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

Ответы [ 4 ]

105 голосов
/ 11 февраля 2011

В superuser .

есть отличное объяснение виртуальной памяти.

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

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

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

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

57 голосов
/ 12 февраля 2011

Существует некоторая путаница в отношении термина «виртуальная память», и на самом деле он относится к следующим двум очень различным понятиям

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

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

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

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

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

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

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

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

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

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

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

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

Надеюсь, это прояснит ситуацию.

12 голосов
/ 06 июня 2014

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

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

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

4 голосов
/ 08 октября 2016

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

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

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

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

разница между ними-виртуальной памятью, и заменой-память

...