Вторичное пространство хранения / подкачки не имеет к этому никакого отношения, поскольку страницы могут быть сопоставлены с вашим адресным пространством без выделения. И одну и ту же страницу можно сопоставить по нескольким виртуальным адресам. ([edit] Это поведение по умолчанию, но параметр sysctl vm.overcommit_memory можно использовать для предотвращения сопоставления страниц виртуальных машин, для которых нет доступной памяти или подкачки. Выполните поиск по этому параметру sysctl. для получения дополнительной информации.)
Процессор, безусловно, устанавливает верхний предел, и это, по сути, единственный предел для 64-битных систем. Хотя обратите внимание, что современные x86_64 процессоры фактически не позволяют использовать все 64-битное пространство .
В 32-битном Linux все становится сложнее. В старых версиях Linux для ядра выделено 2 ГБ виртуального пространства каждого процесса; более новые резервируют 1 ГБ. (Если память служит, то есть. Я считаю, что они настраиваются при компиляции ядра.) Считаете ли вы, что пространство «доступно для процесса» - это вопрос семантики.
В Linux также есть ограничение ресурсов для каждого процесса RLIMIT_AS, доступное через setrlimit и getrlimit .