2014-12-19 2 views
1

Итак, когда я выполняю команду linux, скажите команду cat для этого примера, на сервере с 128 ГБ ОЗУ, предполагая, что ни одна из этих ОЗУ в настоящее время не используется, все бесплатно. (Я понимаю, что этого никогда не произойдет, но вот почему это пример)Как распределяется RAM и Heap Space для команды linux/unix?

1) Будет ли эта команда выполняться с кучей всего 128 ГБ? Или это зависит от дистрибутива linux, который я использую, чтобы решить, сколько кучи пространства выровнено из доступных 128 ГБ?

2) Если да, есть ли другой аргумент командной строки, который я могу передать вместе с моей командой cat, чтобы зарезервировать больше кучи, чем системный стандарт?

EDIT: 3) Есть ли способ, который я могу определить, сколько места кучи будет выделено для моей команды cat (или любой команды), предпочтительнее встроенное решение командной строки, а не внешнее приложение. Если это невозможно, скажите так, мне просто интересно.

+0

Я считаю, что вы можете установить максимальную память, разрешенную оболочкой с помощью команды ulimit, также для пользователя: http://unix.stackexchange.com/questions/34334/how-to-create-a-user-with- ограниченное использование-ram- –

+0

Это очень интересно. Можно ли просмотреть, сколько места кучи выделено для определенного идентификатора пользователя? – FluffyKittens

+0

Я всегда рад помочь, но (1) Это меньше программирования и больше проблем с операционной системой и, следовательно, лучше подходит для unix stackexchange и (2) «позвольте мне Google, что для вас» ;-). –

ответ

1

Когда вы запускаете программу, для программы выделяется некоторый объем памяти; однако этот объем памяти не является пределом того, что программа может использовать. Всякий раз, когда запрашивается больше памяти, ее можно получить до тех пор, пока система не исчерпает всю память.

+0

Это отличный ответ. Сможете ли вы ответить на мой третий пункт выше? – FluffyKittens

+0

@dracom нет возможности заранее знать, сколько будет выделено пустое место. Для любой нетривиальной программы это зависит от пути выполнения программы и ввода. – Daniel

+0

Достаточно хороший ответ для меня. – FluffyKittens

0

Это зависит от распределения памяти (обычно в libc), чтобы определить, сколько будет выделено кучи. Распределитель glibc не использует каких-либо переменных среды, но может использоваться и другая замена.