От чего зависит размер виртуального адресного пространства, доступного для процесса? - PullRequest
2 голосов
/ 20 июля 2011

Какое ограничение виртуального адресного пространства доступно для процесса?

Это

  1. 32 бита против 64-битной адресной шины?

  2. 32-битный или 64-битный процессор?

  3. Доступно вторичное хранилище?

  4. Максимальное настроенное пространство подкачки?

Заранее спасибо

1 Ответ

5 голосов
/ 20 июля 2011

Вторичное пространство хранения / подкачки не имеет к этому никакого отношения, поскольку страницы могут быть сопоставлены с вашим адресным пространством без выделения. И одну и ту же страницу можно сопоставить по нескольким виртуальным адресам. ([edit] Это поведение по умолчанию, но параметр sysctl vm.overcommit_memory можно использовать для предотвращения сопоставления страниц виртуальных машин, для которых нет доступной памяти или подкачки. Выполните поиск по этому параметру sysctl. для получения дополнительной информации.)

Процессор, безусловно, устанавливает верхний предел, и это, по сути, единственный предел для 64-битных систем. Хотя обратите внимание, что современные x86_64 процессоры фактически не позволяют использовать все 64-битное пространство .

В 32-битном Linux все становится сложнее. В старых версиях Linux для ядра выделено 2 ГБ виртуального пространства каждого процесса; более новые резервируют 1 ГБ. (Если память служит, то есть. Я считаю, что они настраиваются при компиляции ядра.) Считаете ли вы, что пространство «доступно для процесса» - это вопрос семантики.

В Linux также есть ограничение ресурсов для каждого процесса RLIMIT_AS, доступное через setrlimit и getrlimit .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...