Влияет ли ограничение в 4 ГБ ОЗУ в 32-разрядных системах на пространство подкачки?

11

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

Под Linux это ограничение также распространяется на разделы подкачки? Если объем подкачки RAM + превышает 4 ГБ, будет ли он полностью использован?

Если ответ «нет, это не относится к обмену», почему?

Sekhemty
источник
3
Этот оператор ограничения физической памяти не подходит для всех платформ ... "Расширение физического адреса (PAE) - это функция, позволяющая 32-разрядным центральным процессорам x86 (ЦП) получать доступ к физическому адресному пространству (включая оперативную память и отображенную память). устройства) больше 4 гигабайт. " en.wikipedia.org/wiki/Physical_Address_Extension
f1assistance
1
@packets Не путай его больше. Ему действительно нужно сначала изучить фундаментальные концепции, такие как виртуальная адресация и пейджинг.
Дэвид Маршалл,
1
Нет проблем, я не боюсь учиться.
Сехемты,

Ответы:

12

Нет, представьте, что RAM - это ваш рабочий стол, а пространство подкачки / виртуальная память - как шкаф Вы можете поместить много информации в картотеку, но к ней сложно получить доступ. Любые бумаги, которые вы хотите использовать, вы должны вытащить и положить их на стол; проблема в том, что стол может вместить только столько бумаг одновременно.

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


Причина, по которой он не применяется к свопу, заключается в том, что доступ к содержимому ОЗУ или выполнение кода из него ограничены размером чисел, с которыми он может работать. Думайте об этом, как будто у вас на столе может быть только 4 миллиарда слов, потому что это столько, сколько вы можете сосчитать, и вам нужно работать непосредственно со словами. «Слово 3 547 введено с ошибкой. Измените слово 3 452 780 на« Привет ». Удалите слово 6».

Теперь каждая страница может содержать 4000 слов. Подвох заключается в том, что когда вы ссылаетесь на пространство подкачки, вы не ссылаетесь на него по слову, а только по странице. Таким образом, вы все еще можете сосчитать до 4 миллиардов, но вы можете сосчитать до 4 миллиардов страниц. 4 миллиарда страниц на самом деле содержат 16 триллионов слов - намного, намного выше, чем вы можете сосчитать.

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

Дарт Андроид
источник
Итак, что вы пытаетесь сказать мне, что пространство подкачки выступает в качестве индекса для оперативной памяти? И, следовательно, один ГБ подкачки представляет гораздо больше памяти, чем один ГБ ОЗУ? Во всяком случае, я до сих пор не могу понять, почему система не может управлять более 4 ГБ ОЗУ, а вместо этого может с помощью подкачки. Почему тогда мы все не используем своп вместо ОЗУ?
Сехемты,
1
Пространство подкачки похоже на «ненагруженную» память, и на нее ссылаются гораздо большие куски. 1 ГБ ОЗУ - это 1 ГБ подкачки, но ОЗУ адресуется на байт, а подкачка - на блок. Другой пример - подумать об упаковке арахиса. Сколько упаковочных арахисов вы можете держать в руках? Может быть, 100, прежде чем пытаться подобрать больше, заставляют некоторые всплывать между пальцами? Теперь, сколько упаковочных арахисов вы можете держать, если положить их в коробки? Тысячи? Своп вроде как коробки. Вы можете управлять данными большими кусками, но вы не можете получить доступ к самим данным.
Дарт Андроид
1
@Sekhemty: К вашему второму вопросу о том, почему мы используем своп постоянно - файл подкачки существует на вашем жестком диске, и скорость, с которой компьютер может получить доступ к данным на жестком диске, зависит от скорости доступа к диску (и затем некоторые). Но даже самые быстрые жесткие диски намного медленнее физической памяти. Так что это вопрос скорости. Также текущая архитектура x86 не позволяет этого в любом случае (без оперативной памяти; только подкачка). Файл подкачки - это концепция ОС, о которой система не знает.
bobbyalex
10

Вы путаете физическую и виртуальную память.

ОЗУ - это физическая память. Пространство подкачки может содержать много виртуальных адресных пространств по 4 ГБ.

Дэвид Маршалл
источник