Виртуальная память и sbrk

В 32-битной системе Linux процесс может получить доступ к 4 ГБ виртуального адресного пространства; однако процессы кажутся в той или иной степени консервативными в сохранении чего-либо из этого. Таким образом, программа, использующая malloc, будет время от времени увеличивать свой сегмент данных с помощью системного вызова sbrk/brk. Даже эти страницы еще не заняты в физической памяти. Что я не совсем понимаю, так это то, почему нам нужно sbrk в первую очередь, почему бы просто не дать мне 4 ГБ адресного пространства, избегая любого вызова sbrk, поскольку до тех пор, пока мы не коснемся/не востребуем эти блоки, это по сути бесплатная операция, верно?

5
задан b4hand 10 September 2015 в 01:01
поделиться