Сохранение размера адресного пространства до 4 ГБ в 64 бит - PullRequest
1 голос
/ 23 сентября 2011

Я хочу, чтобы некоторые приложения работали с адресным пространством 4 ГБ в 64-битной ОС, работающей на 64-битном процессоре (x86 xeon, 8 core).Я знаю, что есть опция для компиляции с опцией -m32, но на данный момент компьютер, с которым я работаю, не имеет необходимой поддержки для компиляции с -m32, поэтому я не могу использовать его, как и установитьчто-нибудь на этом компьютере, так как у меня нет никаких прав.

Теперь у меня вопрос, есть ли возможность ограничить адресное пространство до 4 ГБ.Пожалуйста, не спрашивайте меня, почему я хочу это сделать, просто скажите мне, как, если это возможно.Спасибо.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Механизм ulimit / setrlimit, доступный в bash через ulimit, может сделать это с небольшими недостатками.

ulimit -v 4000000

должно ограничить объем памяти, доступный текущей группе процессов, до 4 ГБ.

Однако он ограничивает общий размер ваших сопоставлений адресного пространства и не ограничивает смещение ваших сопоставлений - у вас все еще могут быть указатели больше 2 ^ 32.

3 голосов
/ 23 сентября 2011

Вы можете попробовать использовать setrlimit, чтобы наложить ограничение виртуальной памяти на процесс во время его инициализации через атрибут RLIMIT_AS. Ранее я использовал setrlimit до увеличения выделения ресурсов для процесса в пространстве пользователя, но не понимаю, почему он не будет работать и в другом направлении.

...