Может ли кто-нибудь объяснить мне, в чем разница между виртуальной памятью и пространством подкачки ?
И почему мы говорим, что для 32-битной машины максимальная доступная виртуальная память составляет всего 4 ГБ?
operating-system
terminology
компьютерщики
источник
источник
Ответы:
На суперпользователе есть отличное раскрытие виртуальной памяти .
Проще говоря, виртуальная память - это комбинация оперативной памяти и дискового пространства, которую могут использовать запущенные процессы.
Пространство подкачки - это часть виртуальной памяти на жестком диске, используемая при заполнении ОЗУ.
Что касается того, почему 32-битный процессор ограничен виртуальной памятью 4 ГБ, здесь это хорошо решено :
источник
Существует некоторая путаница в отношении термина виртуальной памяти, и на самом деле он относится к следующим двум очень различным концепциям.
Пространство подкачки, OTOH, - это имя части диска, используемой для хранения дополнительных страниц ОЗУ, когда они не используются.
Важно понять, что первое возможно прозрачно благодаря аппаратной поддержке второго.
Чтобы лучше понять все это, вы должны рассмотреть, как «виртуальная память» (как в определении 2) поддерживается процессором и ОС.
Предположим, у вас есть 32-битный указатель (64-битные точки похожи, но используют несколько другие механизмы). После включения «виртуальной памяти» процессор считает, что этот указатель состоит из трех частей.
Теперь, когда ЦП пытается получить доступ к содержимому указателя, он сначала обращается к таблице каталога страниц - таблице, состоящей из 1024 записей (в архитектуре X86, на расположение которой указывает регистр CR3). 10-битная запись каталога страниц является индексом в этой таблице, который указывает на физическое расположение таблицы страниц . Это, в свою очередь, еще одна таблица из 1024 записей, каждая из которых является указателем в физической памяти, и несколькими важными управляющими битами. (Мы вернемся к ним позже). После того, как страница найдена, последние 12 битов используются для поиска адреса на этой странице.
Есть еще много деталей (TLB, большие страницы, PAE, селекторы, защита страниц), но краткое объяснение выше отражает суть вещей.
Используя этот механизм трансляции, ОС может использовать разные наборы физических страниц для каждого процесса, тем самым создавая иллюзию того, что у каждого процесса есть вся память для себя (поскольку каждый процесс получает свой собственный каталог страниц)
В дополнение к этой виртуальной памяти ОС может также добавить концепцию разбиения на страницы . Один из рассмотренных ранее управляющих битов позволяет указать, является ли запись «Присутствует». Если его нет, попытка доступа к этой записи приведет к исключению ошибки страницы . ОС может зафиксировать это исключение и действовать соответствующим образом. Таким образом, ОС, поддерживающие свопинг / разбиение на страницы, могут решить загрузить страницу из пространства подкачки , исправить таблицы трансляции и затем снова выполнить доступ к памяти.
Здесь объединяются два термина: ОС, поддерживающая виртуальную память и разбиение на страницы, может создать иллюзию наличия у процессов большего объема памяти, чем имеется на самом деле, путем разбиения на страницы (подкачки) страниц в области подкачки и из нее.
Что касается вашего последнего вопроса (почему сказано, что 32-разрядный процессор ограничен 4 ГБ виртуальной памяти). Это относится к «виртуальной памяти» из определения 2 и является непосредственным результатом размера указателя. Если процессор может использовать только 32-битные указатели, у вас есть только 32-битные для выражения разных адресов, это дает вам 2 ^ 32 = 4 ГБ адресуемой памяти.
Надеюсь, это проясняет ситуацию.
источник
ИМХО ужасно ошибочно использовать концепцию пространства подкачки как эквивалента виртуальной памяти. ВМ - это понятие гораздо более общее, чем пространство подкачки. Помимо прочего, виртуальная машина позволяет процессам ссылаться на виртуальные адреса во время выполнения, которые преобразуются в физические адреса с поддержкой оборудования и таблиц страниц. Таким образом, процессы не заботятся о том, сколько физической памяти имеет система, или где инструкция или данные фактически находятся в иерархии физической памяти. ВМ позволяет это сопоставление. Указанный элемент (инструкция или данные) может находиться в L1, L2 или RAM, или, наконец, на диске, и в этом случае он загружается в основную память.
Место подкачки - это просто место во вторичной памяти, где страницы хранятся, когда они неактивны. Если ОЗУ недостаточно, ОС может принять решение об обмене страниц процесса, чтобы освободить место для других страниц процесса. Процессор никогда не выполняет инструкции или не читает / не записывает данные непосредственно из области подкачки.
Обратите внимание, что пространство подкачки можно было бы использовать в системе без виртуальной машины. То есть процессы, которые напрямую обращаются к физическим адресам, все равно могут иметь их части на диске.
источник
Хотя тема довольно старая и уже ответили. Тем не менее, я хотел бы поделиться этой ссылкой, поскольку это самое простое объяснение, которое я нашел до сих пор. Ниже по ссылке есть диаграммы для лучшей наглядности.
разница между виртуальной памятью и памятью подкачки
источник
«Виртуальная память» - это общий термин. В Windows это называется разбиением на страницы или разбиением на страницы. В Linux это называется Swap.
источник