А сколько максимально можно выделить памяти через malloc, если установлено 4гига оперативной памяти и размер свопа можем считать неограниченым(настолько большим, что хватит всем процессам)? 3 гига? 4?
>А сколько максимально можно выделить памяти через malloc, если установлено 4гига оперативной памяти и размер свопа можем считать неограниченым(настолько большим, что хватит всем процессам)? 3 гига?
чуть меньше двух гиг. гиг резервируется для ядра и гиг для кода оставшиеся два гига разделяют статические данные стек и куча, ну ещё можешь туда файлов понаотображать
> Опытным путем была достигнута отметка в 2,8 гига.
> т.к что видимо максимум = 3 гига.
ядро и приложение работают в одном адресном пространстве,
это ускоряет работу системных вызовов, прерываний и прочего,
т.к. при входе в ядро не требуется переключения контекста.
ядро забирает 1Гб себе, вы можете увеличить PAGE_OFFSET, но
делать этого не стоит - вы уменьшите количество direct
mapped memory.
из оставшихся 3Гб теряются еще 128Мб адресного прстранства,
т.к. приложение линкуется таким образом, чтобы загружаться
по виртуальному адресу 0x8000000, это можно изменить. ну и
еще немного теряется "по мелочи"
> А неужели нельзя увеличить этот предел? хотя бы до 4 гиг.
есть patch от Ingo Molnar, 4G/4G split. либо 64 битная
архитектура.
см также http://www.linux.org.ru//view-message.jsp?msgid=831740