Один 32-розрядний процес під 64-розрядною ОС обмежений 2 Гб. Але якщо він компілюється в файл EXE з IMAGE_FILE_LARGE_ADDRESS_AWARE
встановленим бітом, тоді має межу 4 Гб, а НЕ 2Gb - см https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Те, що ви чуєте про спеціальні прапорці завантаження, 3 ГБ, /3GB
комутатори або /userva
все стосується 32-розрядних операційних систем, і не стосується 64-розрядної Windows.
Докладніше див. На https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx .
Що стосується 32-розрядних операційних систем, то, всупереч думці, для 32-розрядних операційних систем не існує фізичного обмеження в 4 Гб. Наприклад, 32-розрядні операційні системи сервера, такі як Microsoft Windows Server 2008 32-розрядні, можуть мати доступ до 64 ГБ(Видання Windows Server 2008 Enterprise та Datacenter) - за допомогою розширення фізичної адреси (PAE), яке вперше було представлено Intel в Pentium Pro, а пізніше AMD в процесорі Athlon - воно визначає ієрархію таблиць сторінок трьох рівнів, із записами таблиці по 64 біти замість 32, що дозволяє цим центральним процесорам отримувати прямий доступ до фізичного адресного простору, що перевищує 4 гігабайти - тому теоретично 32-розрядна ОС може отримати теоретичний доступ до 2 ^ 64 байт, або 17 179 869 168 гігабайт, обмежено 4 ГБ. Однак з маркетингових причин корпорація Майкрософт обмежила максимально доступну пам'ять в несерверних операційних системах лише 4 ГБ, або, навіть, 3 ГБ ефективно. Таким чином, один процес може отримати доступ до понад 4 Гб в 32-розрядної ОС - і приклад - сервер Microsoft SQL.
32-розрядні процеси під 64-розрядною Windows не мають жодних недоліків порівняно з 64-розрядними процесами при використанні віртуального адресного простору спільного ядра (також званий системний простір ). Усі процеси, будь то 64-розрядні чи 32-розрядні, під 64-розрядною Windows мають спільний 64-розрядний системний простір.
Враховуючи той факт, що системний простір є спільним для всіх процесів , у 32-розрядної Windows процеси, які створюють велику кількість дескрипторів (наприклад, потоки, семафори, файли тощо), споживають системний простір об’єктами ядра і можуть закінчити пам’ять навіть якщо у вас загалом доступно багато пам'яті. На відміну від цього, у 64-розрядної Windows простір ядра є 64-розрядною і не обмежений 4 ГБ. Усі системні дзвінки, здійснені 32-розрядними програмами, перетворюються на власні 64-розрядні виклики в користувацькому режимі .