История изменений
Исправление watchcat382, (текущая версия) :
Каким образом ты собрался 32 битными указателями адресовать 64 гигабайта виртуальной памяти?
Через механизм трансляции,где к 32 битам добавляется еще. Но вот непрерывным куском,без переключения трансляции(загрузки сегментного регистра), адресовать можно только 4 Гб - тут вы правы. Поэтому ограничение виртуальной памяти на процесс и есть четыре гига. Так это на один процесс,и то потому что механизм трансляции так настроен в линуксе (недоиспользуется). Как справедливо добавил коллега firkax, при импользовании нескольких сегментов можно в рамках одного процесса адресовать и больше. Но линукс сегментную модель памяти увы не умеет.
Когда-то я писал код под PharLap DOS Extender,так вот он сегментную модель таки умел. Причем даже и на 80286,где сегменты были всего по 64К и любой хоть сколько-нибудь сложный процесс использовал более одного сегмента. Стоил этот экстендер что-то около 800 тех баксов тридцатилетней давности:( И 16-битный по своей конструкции 80286 адресовал не один,а несколько мегов памяти. У меня на рабочей машине было сначала два,потом четыре. Каждый мегабайт стоил $43. Вот тогда да - приходилось экономить,боролись за каждый _кило_байт.
Исходная версия watchcat382, :
Каким образом ты собрался 32 битными указателями адресовать 64 гигабайта виртуальной памяти?
Через механизм трансляции,где к 32 битам добавляется еще. Но вот непрерывным куском,без переключения трансляции(загрузки сегментного регистра), адресовать можно только 4 Гб - тут вы правы. Поэтому ограничение виртуальной памяти на процесс и есть четыре гига. Так это на один процесс,и то потому что механизм трансляции так настроен в линуксе (недоиспользуется). Как справедливо добавил коллега firkax, при импользовании нескольких сегментов можно в рамках одного процесса адресовать и больше. Но линукс сегментную модель памяти увы не умеет.
Когда-то я писал код под PharLap DOS Extender,так вот он сегментную модель таки умел. Причем даже и на 80286,где сегменты были всего по 64К и любой хоть сколько-нибудь сложный процесс использовал более одного сегмента. Стоил этот экстендер что-то около 800 тех баксов тридцатилетней давности:(