>зачем выделять для сегмента кода и сегмента данных всю память ? почему нельзя выделять именно столько сколько требуется ?А сколько требуется?:) Почитайте про используемую по у молчанию в linux модель памяти.
Внизу заметили что PaX может использовать SEGMEXEC путем деления виртуальной памяти пополам, но в стандартное ядро он не принят.
>вобще сейчас принято использовать 1 общий сегмент для ядра и 1 общий сегмент для всего юзерспейса ?
Почему один? Что значит общий? Перекрывающиеся сегменты для каждого процесса со своим адресным пространством. На самом деле документации в сети по этому поводу навалом, поищите.